diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm
index c821b629e04..a7705f7f11c 100644
--- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm
+++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm
@@ -51,6 +51,7 @@
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
loc.assume_air(removed)
+ air_update_turf()
if(network)
network.update = 1
diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index 4c6a529e3bb..b9bbbdc82e5 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -148,6 +148,7 @@
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
loc.assume_air(removed)
+ air_update_turf()
if(network)
network.update = 1
@@ -168,6 +169,7 @@
return
air_contents.merge(removed)
+ air_update_turf()
if(network)
network.update = 1
diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
index 23b1f7899de..b5596305577 100644
--- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
@@ -178,6 +178,7 @@
air_contents.merge(filtered_out)
loc.assume_air(removed)
+ air_update_turf()
if(network)
network.update = 1
@@ -191,6 +192,7 @@
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
air_contents.merge(removed)
+ air_update_turf()
if(network)
network.update = 1
diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm
index 044d16b6c25..3b4cbb996e4 100644
--- a/code/ATMOSPHERICS/datum_pipe_network.dm
+++ b/code/ATMOSPHERICS/datum_pipe_network.dm
@@ -135,8 +135,6 @@ datum/pipe_network
gas.trace_gases += corresponding
corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume
- gas.update_values()
- air_transient.update_values()
return 1
proc/equalize_gases(datum/gas_mixture/list/gases)
@@ -199,6 +197,5 @@ proc/equalize_gases(datum/gas_mixture/list/gases)
gas.trace_gases += corresponding
corresponding.moles = trace_gas.moles*gas.volume/total_volume
- gas.update_values()
return 1
\ No newline at end of file
diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm
index d7d24080816..18a27f9c18d 100644
--- a/code/ATMOSPHERICS/datum_pipeline.dm
+++ b/code/ATMOSPHERICS/datum_pipeline.dm
@@ -52,7 +52,6 @@ datum/pipeline
member.air_temporary.trace_gases += corresponding
corresponding.moles = trace_gas.moles*member.volume/air.volume
- member.air_temporary.update_values()
proc/build_pipeline(obj/machinery/atmospherics/pipe/base)
air = new
@@ -130,27 +129,16 @@ datum/pipeline
var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume)
air_sample.volume = mingle_volume
- if(istype(target) && target.zone)
- //Have to consider preservation of group statuses
- var/datum/gas_mixture/turf_copy = new
+ var/datum/gas_mixture/turf_air = target.return_air()
- turf_copy.copy_from(target.zone.air)
- turf_copy.volume = target.zone.air.volume //Copy a good representation of the turf from parent group
-
- equalize_gases(list(air_sample, turf_copy))
- air.merge(air_sample)
-
- turf_copy.subtract(target.zone.air)
-
- target.zone.air.merge(turf_copy)
-
- else
- var/datum/gas_mixture/turf_air = target.return_air()
-
- equalize_gases(list(air_sample, turf_air))
- air.merge(air_sample)
- //turf_air already modified by equalize_gases()
+ equalize_gases(list(air_sample, turf_air))
+ air.merge(air_sample)
+ //turf_air already modified by equalize_gases()
+ if(istype(target))
+ if(target.air)
+ if(target.air.check_tile_graphic())
+ target.update_visuals(target.air)
if(network)
network.update = 1
@@ -176,12 +164,8 @@ datum/pipeline
var/delta_temperature = 0
var/sharer_heat_capacity = 0
- if(modeled_location.zone)
- delta_temperature = (air.temperature - modeled_location.zone.air.temperature)
- sharer_heat_capacity = modeled_location.zone.air.heat_capacity()
- else
- delta_temperature = (air.temperature - modeled_location.air.temperature)
- sharer_heat_capacity = modeled_location.air.heat_capacity()
+ delta_temperature = (air.temperature - modeled_location.air.temperature)
+ sharer_heat_capacity = modeled_location.air.heat_capacity()
var/self_temperature_delta = 0
var/sharer_temperature_delta = 0
@@ -197,10 +181,7 @@ datum/pipeline
air.temperature += self_temperature_delta
- if(modeled_location.zone)
- modeled_location.zone.air.temperature += sharer_temperature_delta/modeled_location.zone.air.group_multiplier
- else
- modeled_location.air.temperature += sharer_temperature_delta
+ modeled_location.air.temperature += sharer_temperature_delta
else
@@ -211,12 +192,5 @@ datum/pipeline
(partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity))
air.temperature -= heat/total_heat_capacity
- if(network)
- network.update = 1
-
- proc/radiate_heat(surface, thermal_conductivity)
- var/total_heat_capacity = air.heat_capacity()
- var/heat = STEFAN_BOLTZMANN_CONSTANT * surface * air.temperature ** 4 * thermal_conductivity
- air.temperature = max(0, air.temperature - heat / total_heat_capacity)
if(network)
network.update = 1
\ No newline at end of file
diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm
index 0f9a38b09b3..ab6e2e2c8eb 100644
--- a/code/ATMOSPHERICS/he_pipes.dm
+++ b/code/ATMOSPHERICS/he_pipes.dm
@@ -21,11 +21,12 @@
else
var/datum/gas_mixture/environment = loc.return_air()
environment_temperature = environment.temperature
- var/datum/gas_mixture/pipe_air = return_air()
- if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference)
- parent.temperature_interact(loc, volume, thermal_conductivity)
else
- parent.radiate_heat(surface, 1)
+ environment_temperature = loc:temperature
+ var/datum/gas_mixture/pipe_air = return_air()
+ if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference)
+ parent.temperature_interact(loc, volume, thermal_conductivity)
+
// BubbleWrap
diff --git a/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm b/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm
deleted file mode 100644
index 4c173b7b7ea..00000000000
--- a/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm
+++ /dev/null
@@ -1,645 +0,0 @@
-#define DEBUG
-
-datum/air_group/var/marker
-datum/air_group/var/debugging = 0
-datum/pipe_network/var/marker
-
-datum/gas_mixture
- var/turf/parent
-
-/*
-turf/simulated
- New()
- ..()
-
- if(air)
- air.parent = src
-*/
-obj/machinery/door
- verb
- toggle_door()
- set src in world
- if(density)
- open()
- else
- close()
-
-turf/space
- verb
- create_floor()
- set src in world
- new /turf/simulated/floor(src)
-
- create_meteor(direction as num)
- set src in world
-
- var/obj/effect/meteor/M = new( src )
- walk(M, direction,10)
-
-
-turf/simulated/wall
- verb
- create_floor()
- set src in world
- new /turf/simulated/floor(src)
-
-obj/item/weapon/tank
- verb
- adjust_mixture(temperature as num, target_toxin_pressure as num, target_oxygen_pressure as num)
- set src in world
- if(!air_contents)
- usr << "\red ERROR: no gas_mixture associated with this tank"
- return null
-
- air_contents.temperature = temperature
- air_contents.oxygen = target_oxygen_pressure*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.toxins = target_toxin_pressure*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
-
-turf/simulated/floor
- verb
- parent_info()
- set src in world
- if(parent)
- usr << "[x],[y] parent: Processing: [parent.group_processing]"
- if(parent.members)
- usr << "Members: [parent.members.len]"
- else
- usr << "Members: None?"
- if(parent.borders)
- usr << "Borders: [parent.borders.len]"
- else
- usr << "Borders: None"
- if(parent.length_space_border)
- usr << "Space Borders: [parent.space_borders.len], Space Length: [parent.length_space_border]"
- else
- usr << "Space Borders: None"
- else
- usr << "\blue [x],[y] has no parent air group."
-
- verb
- create_wall()
- set src in world
- new /turf/simulated/wall(src)
- verb
- adjust_mixture(temp as num, tox as num, oxy as num)
- set src in world
- var/datum/gas_mixture/stuff = return_air()
- stuff.temperature = temp
- stuff.toxins = tox
- stuff.oxygen = oxy
-
- verb
- boom(inner_range as num, middle_range as num, outer_range as num)
- set src in world
- explosion(src,inner_range,middle_range,outer_range,outer_range)
-
- verb
- flag_parent()
- set src in world
- if(parent)
- parent.debugging = !parent.debugging
- usr << "[parent.members.len] set to [parent.debugging]"
- verb
- small_explosion()
- set src in world
- explosion(src, 1, 2, 3, 3)
-
- verb
- large_explosion()
- set src in world
- explosion(src, 3, 5, 7, 5)
-
-obj/machinery/portable_atmospherics/canister
- verb/test_release()
- set src in world
- set category = "Minor"
-
- valve_open = 1
- release_pressure = 1000
-/*
-obj/machinery/atmospherics
- unary
- heat_reservoir
- verb
- toggle_power()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
- adjust_temp(temp as num)
- set src in world
- set category = "Minor"
-
- current_temperature = temp
- cold_sink
- verb
- toggle_power()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
- adjust_temp(temp as num)
- set src in world
- set category = "Minor"
-
- current_temperature = temp
- vent_pump
- verb
- toggle_power()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
-
- toggle_direction()
- set src in world
- set category = "Minor"
-
- pump_direction = !pump_direction
-
- update_icon()
-
- change_pressure_parameters()
- set src in world
- set category = "Minor"
-
- usr << "current settings: PC=[pressure_checks], EB=[external_pressure_bound], IB=[internal_pressure_bound]"
-
- var/mode = input(usr, "Select an option:") in list("Bound External", "Bound Internal", "Bound Both")
-
- switch(mode)
- if("Bound External")
- pressure_checks = 1
- external_pressure_bound = input(usr, "External Pressure Bound?") as num
- if("Bound Internal")
- pressure_checks = 2
- internal_pressure_bound = input(usr, "Internal Pressure Bound?") as num
- else
- pressure_checks = 3
- external_pressure_bound = input(usr, "External Pressure Bound?") as num
- internal_pressure_bound = input(usr, "Internal Pressure Bound?") as num
-
- outlet_injector
- verb
- toggle_power()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
- verb
- trigger_inject()
- set src in world
- set category = "Minor"
-
- inject()
-
- vent_scrubber
- verb
- toggle_power()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
-
- toggle_scrubbing()
- set src in world
- set category = "Minor"
-
- scrubbing = !scrubbing
-
- update_icon()
-
- change_rate(amount as num)
- set src in world
- set category = "Minor"
-
- volume_rate = amount
-
- mixer
- verb
- toggle()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
-
- change_pressure(amount as num)
- set src in world
- set category = "Minor"
-
- target_pressure = amount
-
- change_ratios()
- set src in world
- set category = "Minor"
-
- if(node_in1)
- var/node_ratio = input(usr, "Node 1 Ratio? ([dir2text(get_dir(src, node_in1))])") as num
- node_ratio = min(max(0,node_ratio),1)
-
- node1_concentration = node_ratio
- node2_concentration = 1-node_ratio
- else
- node2_concentration = 1
- node1_concentration = 0
-
- usr << "Node 1: [node1_concentration], Node 2: [node2_concentration]"
-
-
- filter
- verb
- toggle()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
-
- change_pressure(amount as num)
- set src in world
- set category = "Minor"
-
- target_pressure = amount
-
- unary/oxygen_generator
- verb
- toggle()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
-
- change_rate(amount as num)
- set src in world
- set category = "Minor"
-
- oxygen_content = amount
- binary/pump
- verb
- debug()
- set src in world
- set category = "Minor"
-
- world << "Debugging: [x],[y]"
-
- if(node1)
- world << "Input node: [node1.x],[node1.y] [network1]"
- if(node2)
- world << "Output node: [node2.x],[node2.y] [network2]"
-
- toggle()
- set src in world
- set category = "Minor"
-
- on = !on
-
- update_icon()
- change_pressure(amount as num)
- set src in world
- set category = "Minor"
-
- target_pressure = amount
-
- valve
- verb
- toggle()
- set src in world
- set category = "Minor"
-
- if(open)
- close()
- else
- open()
- network_data()
- set src in world
- set category = "Minor"
-
- world << "\blue [x],[y]"
- world << "network 1: [network_node1.normal_members.len], [network_node1.line_members.len]"
- for(var/obj/O in network_node1.normal_members)
- world << "member: [O.x], [O.y]"
- world << "network 2: [network_node2.normal_members.len], [network_node2.line_members.len]"
- for(var/obj/O in network_node2.normal_members)
- world << "member: [O.x], [O.y]"
- pipe
- verb
- destroy()
- set src in world
- set category = "Minor"
-
- del(src)
-
- pipeline_data()
- set src in world
- set category = "Minor"
-
- if(parent)
- usr << "[x],[y] is in a pipeline with [parent.members.len] members ([parent.edges.len] edges)! Volume: [parent.air.volume]"
- usr << "Pressure: [parent.air.return_pressure()], Temperature: [parent.air.temperature]"
- usr << "[parent.air.oxygen], [parent.air.toxins], [parent.air.nitrogen], [parent.air.carbon_dioxide] .. [parent.alert_pressure]"
-*/
-mob
- verb
- flag_all_pipe_networks()
- set category = "Debug"
-
- for(var/datum/pipe_network/network in pipe_networks)
- network.update = 1
-
- mark_pipe_networks()
- set category = "Debug"
-
- for(var/datum/pipe_network/network in pipe_networks)
- network.marker = rand(1,4)
-
- for(var/obj/machinery/atmospherics/pipe/P in world)
- P.overlays.Cut()
-
- var/datum/pipe_network/master = P.return_network()
- if(master)
- P.overlays += icon('icons/Testing/atmos_testing.dmi',"marker[master.marker]")
- else
- world << "error"
- P.overlays += icon('icons/Testing/atmos_testing.dmi',"marker0")
-
- for(var/obj/machinery/atmospherics/valve/V in world)
- V.overlays.Cut()
-
- if(V.network_node1)
- V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker[V.network_node1.marker]")
- else
- V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker0")
-
- if(V.network_node2)
- V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker[V.network_node2.marker]")
- else
- V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker0")
-
-turf/simulated
- var/fire_verbose = 0
-
- verb
- mark_direction()
- set src in world
- overlays.Cut()
- for(var/direction in list(NORTH,SOUTH,EAST,WEST))
- if(group_border&direction)
- overlays += icon('icons/Testing/turf_analysis.dmi',"red_arrow",direction)
- else if(air_check_directions&direction)
- overlays += icon('icons/Testing/turf_analysis.dmi',"arrow",direction)
- air_status()
- set src in world
- set category = "Minor"
- var/datum/gas_mixture/GM = return_air()
- usr << "\blue @[x],[y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(active_hotspot)?("\red BURNING"):(null)]"
- for(var/datum/gas/trace_gas in GM.trace_gases)
- usr << "[trace_gas.type]: [trace_gas.moles]"
-
- force_temperature(temp as num)
- set src in world
- set category = "Minor"
- if(parent&&parent.group_processing)
- parent.suspend_group_processing()
-
- air.temperature = temp
-
- spark_temperature(temp as num, volume as num)
- set src in world
- set category = "Minor"
-
- hotspot_expose(temp, volume)
-
- fire_verbose()
- set src in world
- set category = "Minor"
-
- fire_verbose = !fire_verbose
- usr << "[x],[y] now [fire_verbose]"
-
- add_sleeping_agent(amount as num)
- set src in world
- set category = "Minor"
-
- if(amount>1)
- var/datum/gas_mixture/adding = new
- var/datum/gas/sleeping_agent/trace_gas = new
-
- trace_gas.moles = amount
- adding.trace_gases += trace_gas
- adding.temperature = T20C
-
- assume_air(adding)
-
-obj/indicator
- icon = 'icons/Testing/air_meter.dmi'
- var/measure = "temperature"
- anchored = 1
-
- process()
- icon_state = measurement()
-
- proc/measurement()
- var/turf/T = loc
- if(!isturf(T)) return
- var/datum/gas_mixture/GM = T.return_air()
- switch(measure)
- if("temperature")
- if(GM.temperature < 0)
- return "error"
- return "[round(GM.temperature/100+0.5)]"
- if("oxygen")
- if(GM.oxygen < 0)
- return "error"
- return "[round(GM.oxygen/MOLES_CELLSTANDARD*10+0.5)]"
- if("plasma")
- if(GM.toxins < 0)
- return "error"
- return "[round(GM.toxins/MOLES_CELLSTANDARD*10+0.5)]"
- if("nitrogen")
- if(GM.nitrogen < 0)
- return "error"
- return "[round(GM.nitrogen/MOLES_CELLSTANDARD*10+0.5)]"
- else
- return "[round((GM.total_moles())/MOLES_CELLSTANDARD*10+0.5)]"
-
-
- Click()
- process()
-
-
-obj/window
- verb
- destroy()
- set category = "Minor"
- set src in world
- del(src)
-
-mob
- sight = SEE_OBJS|SEE_TURFS
-
- verb
- update_indicators()
- set category = "Debug"
- if(!air_master)
- usr << "Cannot find air_system"
- return
-
- for(var/obj/indicator/T in world)
- T.process()
- change_indicators()
- set category = "Debug"
- if(!air_master)
- usr << "Cannot find air_system"
- return
-
- var/str = input("Select") in list("oxygen", "nitrogen","plasma","all","temperature")
-
- for(var/obj/indicator/T in world)
- T.measure = str
- T.process()
-
- fire_report()
- set category = "Debug"
- usr << "\b \red Fire Report"
- for(var/obj/effect/hotspot/flame in world)
- usr << "[flame.x],[flame.y]: [flame.temperature]K, [flame.volume] L - [flame.loc:air:temperature]"
-
- process_cycle()
- set category = "Debug"
- if(!master_controller)
- usr << "Cannot find master_controller"
- return
-
- master_controller.process()
- update_indicators()
-
- process_cycles(amount as num)
- set category = "Debug"
- if(!master_controller)
- usr << "Cannot find master_controller"
- return
-
- var/start_time = world.timeofday
-
- for(var/i=1; i<=amount; i++)
- master_controller.process()
-
- world << "Ended [amount] cycles in [(world.timeofday-start_time)/10] seconds. [(world.timeofday-start_time)/10-amount] calculation lag"
-
- update_indicators()
-
- process_updates_early()
- set category = "Debug"
- if(!air_master)
- usr << "Cannot find air_system"
- return
-
- air_master.process_update_tiles()
- air_master.process_rebuild_select_groups()
-
- mark_group_delay()
- set category = "Debug"
- if(!air_master)
- usr << "Cannot find air_system"
- return
-
- for(var/datum/air_group/group in air_master.air_groups)
- group.marker = 0
-
- for(var/turf/simulated/floor/S in world)
- S.icon = 'icons/Testing/turf_analysis.dmi'
- if(S.parent)
- if(S.parent.group_processing)
- if (S.parent.check_delay < 2)
- S.parent.marker=1
- else if (S.parent.check_delay < 5)
- S.parent.marker=2
- else if (S.parent.check_delay < 15)
- S.parent.marker=3
- else if (S.parent.check_delay < 30)
- S.parent.marker=4
- else
- S.parent.marker=5
- if(S.parent.borders && S.parent.borders.Find(S))
- S.icon_state = "on[S.parent.marker]_border"
- else
- S.icon_state = "on[S.parent.marker]"
-
- else
- if (S.check_delay < 2)
- S.icon_state= "on1_border"
- else if (S.check_delay < 5)
- S.icon_state= "on2_border"
- else if (S.check_delay < 15)
- S.icon_state= "on3_border"
- else if (S.check_delay < 30)
- S.icon_state= "on4_border"
- else
- S.icon_state = "suspended"
- else
- if(S.processing)
- S.icon_state = "individual_on"
- else
- S.icon_state = "individual_off"
-
-
- mark_groups()
- set category = "Debug"
- if(!air_master)
- usr << "Cannot find air_system"
- return
-
- for(var/datum/air_group/group in air_master.air_groups)
- group.marker = 0
-
- for(var/turf/simulated/floor/S in world)
- S.icon = 'icons/Testing/turf_analysis.dmi'
- if(S.parent)
- if(S.parent.group_processing)
- if(S.parent.marker == 0)
- S.parent.marker = rand(1,5)
- if(S.parent.borders && S.parent.borders.Find(S))
- S.icon_state = "on[S.parent.marker]_border"
- else
- S.icon_state = "on[S.parent.marker]"
-
- else
- S.icon_state = "suspended"
- else
- if(S.processing)
- S.icon_state = "individual_on"
- else
- S.icon_state = "individual_off"
-
- get_broken_icons()
- set category = "Debug"
- getbrokeninhands()
-
-
-/* jump_to_dead_group() Currently in the normal admin commands but fits here
- set category = "Debug"
- if(!air_master)
- usr << "Cannot find air_system"
- return
-
- var/datum/air_group/dead_groups = list()
- for(var/datum/air_group/group in air_master.air_groups)
- if (!group.group_processing)
- dead_groups += group
- var/datum/air_group/dest_group = pick(dead_groups)
- usr.loc = pick(dest_group.members)*/
diff --git a/code/FEA/FEA_airgroup.dm b/code/FEA/FEA_airgroup.dm
deleted file mode 100644
index 94c51102b27..00000000000
--- a/code/FEA/FEA_airgroup.dm
+++ /dev/null
@@ -1,286 +0,0 @@
-datum/air_group
- var/group_processing = 1 //Processing all tiles as one large tile if 1
-
- var/datum/gas_mixture/air = new
-
- var/current_cycle = 0 //cycle that oxygen value represents
- var/archived_cycle = 0 //cycle that oxygen_archived value represents
- //The use of archived cycle saves processing power by permitting the archiving step of FET
- // to be rolled into the updating step
-
- //optimization vars
- var/next_check = 0 //number of ticks before this group updates
- var/check_delay = 10 //number of ticks between updates, starts fairly high to get boring groups out of the way
-
- proc/members()
- //Returns the members of the group
- proc/process_group()
-
-
- var/list/borders //Tiles that connect this group to other groups/individual tiles
- var/list/members //All tiles in this group
-
- var/list/space_borders
- var/length_space_border = 0
-
-
- proc/suspend_group_processing()
- group_processing = 0
- update_tiles_from_group()
- check_delay=0
- next_check=0
-
-
- //Copy group air information to individual tile air
- //Used right before turning on group processing
- proc/update_group_from_tiles()
- var/sample_member = pick(members)
- var/datum/gas_mixture/sample_air = sample_member:air
-
- air.copy_from(sample_air)
- air.group_multiplier = members.len
- return 1
-
-
- //Copy group air information to individual tile air
- //Used right before turning off group processing
- proc/update_tiles_from_group()
- for(var/member in members)
- member:air.copy_from(air)
- if (istype(member,/turf/simulated))
- var/turf/simulated/turfmem=member
- turfmem.reset_delay()
-
-
- proc/archive()
- air.archive()
- archived_cycle = air_master.current_cycle
-
-
- //If individually processing tiles, checks all member tiles to see if they are close enough that the group may resume group processing
- //Warning: Do not call, called by air_master.process()
- proc/check_regroup()
- //Purpose: Checks to see if group processing should be turned back on
- //Returns: group_processing
- if(prevent_airgroup_regroup)
- return 0
-
- if(group_processing) return 1
-
- var/turf/simulated/sample = pick(members)
- for(var/member in members)
- if(member:active_hotspot)
- return 0
- if(member:air.compare(sample.air)) continue
- else
- return 0
-
- update_group_from_tiles()
- group_processing = 1
- return 1
-
-
-//Look into this
- turf/process_group()
- current_cycle = air_master.current_cycle
- if(!group_processing) //Revert to individual processing then end
- for(var/T in members)
- var/turf/simulated/member = T
- member.process_cell()
- return
-
- //check if we're skipping this tick
- if (next_check > 0)
- next_check--
- return 1
- var/player_count = max(player_list.len, 3) / 3
- next_check += check_delay + rand(player_count, player_count * 1.5)
- check_delay++
-
- var/turf/simulated/list/border_individual = list()
- var/datum/air_group/list/border_group = list()
-
- var/turf/simulated/list/enemies = list() //used to send the appropriate border tile of a group to the group proc
- var/turf/simulated/list/self_group_borders = list()
- var/turf/simulated/list/self_tile_borders = list()
-
- if(archived_cycle < air_master.current_cycle)
- archive()
- //Archive air data for use in calculations
- //But only if another group didn't store it for us
-
- for(var/turf/simulated/border_tile in src.borders)
- for(var/direction in cardinal) //Go through all border tiles and get bordering groups and individuals
- if(border_tile.group_border&direction)
- var/turf/simulated/enemy_tile = get_step(border_tile, direction) //Add found tile to appropriate category
- if(istype(enemy_tile) && enemy_tile.parent && enemy_tile.parent.group_processing)
- border_group += enemy_tile.parent
- enemies += enemy_tile
- self_group_borders += border_tile
- else
- border_individual += enemy_tile
- self_tile_borders += border_tile
-
- var/abort_group = 0
-
- // Process connections to adjacent groups
- var/border_index = 1
- for(var/datum/air_group/AG in border_group)
- if(AG.archived_cycle < archived_cycle) //archive other groups information if it has not been archived yet this cycle
- AG.archive()
- if(AG.current_cycle < current_cycle)
- //This if statement makes sure two groups only process their individual connections once!
- //Without it, each connection would be processed a second time as the second group is evaluated
-
- var/connection_difference = 0
- var/turf/simulated/floor/self_border = self_group_borders[border_index]
- var/turf/simulated/floor/enemy_border = enemies[border_index]
-
- var/result = air.check_gas_mixture(AG.air)
- if(result == 1)
- connection_difference = air.share(AG.air)
- else if(result == -1)
- AG.suspend_group_processing()
- connection_difference = air.share(enemy_border.air)
- else
- abort_group = 1
- break
-
- if(connection_difference)
- if(connection_difference > 0)
- self_border.consider_pressure_difference(connection_difference, get_dir(self_border,enemy_border))
- else
- var/turf/enemy_turf = enemy_border
- if(!isturf(enemy_turf))
- enemy_turf = enemy_border.loc
- enemy_turf.consider_pressure_difference(-connection_difference, get_dir(enemy_turf,self_border))
-
- border_index++
-
- // Process connections to adjacent tiles
- border_index = 1
- if(!abort_group)
- for(var/atom/enemy_tile in border_individual)
- var/connection_difference = 0
- var/turf/simulated/floor/self_border = self_tile_borders[border_index]
-
- if(istype(enemy_tile, /turf/simulated))
- if(enemy_tile:archived_cycle < archived_cycle) //archive tile information if not already done
- enemy_tile:archive()
- if(enemy_tile:current_cycle < current_cycle)
- if(air.check_gas_mixture(enemy_tile:air))
- connection_difference = air.share(enemy_tile:air)
- else
- abort_group = 1
- break
- else if(isturf(enemy_tile))
- if(air.check_turf(enemy_tile))
- connection_difference = air.mimic(enemy_tile)
- else
- abort_group = 1
- break
-
- if(connection_difference)
- if(connection_difference > 0)
- self_border.consider_pressure_difference(connection_difference, get_dir(self_border,enemy_tile))
- else
- var/turf/enemy_turf = enemy_tile
- if(!isturf(enemy_turf))
- enemy_turf = enemy_tile.loc
- enemy_turf.consider_pressure_difference(-connection_difference, get_dir(enemy_tile,enemy_turf))
-
- // Process connections to space
- border_index = 1
- if(!abort_group)
- if(length_space_border > 0)
- var/turf/space/sample = locate()
- var/connection_difference = 0
-
- if(air.check_turf(sample))
- connection_difference = air.mimic(sample, length_space_border)
- else
- abort_group = 1
-
- if(connection_difference)
- for(var/turf/simulated/self_border in space_borders)
- self_border.consider_pressure_difference_space(connection_difference)
-
- if(abort_group)
- suspend_group_processing()
- else
- if(air.check_tile_graphic())
- for(var/T in members)
- var/turf/simulated/member = T
- member.update_visuals(air)
-
-
- if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
- for(var/T in members)
- var/turf/simulated/member = T
- member.hotspot_expose(air.temperature, CELL_VOLUME)
- member.consider_superconductivity(starting=1)
-
- air.react()
- return
-
-
-
- object/process_group()
- current_cycle = air_master.current_cycle
-
- if(!group_processing) return //See if processing this group as a group
-
- var/turf/simulated/list/border_individual = list()
- var/datum/air_group/list/border_group = list()
-
- var/turf/simulated/list/enemies = list() //used to send the appropriate border tile of a group to the group proc
- var/enemy_index = 1
-
- if(archived_cycle < air_master.current_cycle)
- archive()
- //Archive air data for use in calculations
- //But only if another group didn't store it for us
-
- enemy_index = 1
- var/abort_group = 0
- for(var/datum/air_group/AG in border_group)
- if(AG.archived_cycle < archived_cycle) //archive other groups information if it has not been archived yet this cycle
- AG.archive()
- if(AG.current_cycle < current_cycle)
- //This if statement makes sure two groups only process their individual connections once!
- //Without it, each connection would be processed a second time as the second group is evaluated
-
- var/result = air.check_gas_mixture(AG.air)
- if(result == 1)
- air.share(AG.air)
- else if(result == -1)
- AG.suspend_group_processing()
- var/turf/simulated/floor/enemy_border = enemies[enemy_index]
- air.share(enemy_border.air)
- else
- abort_group = 0
- break
- enemy_index++
-
- if(!abort_group)
- for(var/enemy_tile in border_individual)
- if(istype(enemy_tile, /turf/simulated))
- if(enemy_tile:archived_cycle < archived_cycle) //archive tile information if not already done
- enemy_tile:archive()
- if(enemy_tile:current_cycle < current_cycle)
- if(air.check_gas_mixture(enemy_tile:air))
- air.share(enemy_tile:air)
- else
- abort_group = 1
- break
- else
- if(air.check_turf(enemy_tile))
- air.mimic(enemy_tile)
- else
- abort_group = 1
- break
-
- if(abort_group)
- suspend_group_processing()
-
- return
\ No newline at end of file
diff --git a/code/FEA/FEA_group_helpers.dm b/code/FEA/FEA_group_helpers.dm
deleted file mode 100644
index c803d6ef95e..00000000000
--- a/code/FEA/FEA_group_helpers.dm
+++ /dev/null
@@ -1,101 +0,0 @@
-/turf/simulated/proc/find_group()
- //Basically, join any nearby valid groups
- // If more than one, pick one with most members at my borders
- // If can not find any but there was an ungrouped at border with me, call for group assembly
-
- var/turf/simulated/floor/north = get_step(src,NORTH)
- var/turf/simulated/floor/south = get_step(src,SOUTH)
- var/turf/simulated/floor/east = get_step(src,EAST)
- var/turf/simulated/floor/west = get_step(src,WEST)
-
- //Clear those we do not have access to
- if(!CanPass(null, north, null, 1) || !istype(north))
- north = null
- if(!CanPass(null, south, null, 1) || !istype(south))
- south = null
- if(!CanPass(null, east, null, 1) || !istype(east))
- east = null
- if(!CanPass(null, west, null, 1) || !istype(west))
- west = null
-
- var/new_group_possible = 0
-
- var/north_votes = 0
- var/south_votes = 0
- var/east_votes = 0
-
- if(north)
- if(north.parent)
- north_votes = 1
-
- if(south && (south.parent == north.parent))
- north_votes++
- south = null
-
- if(east && (east.parent == north.parent))
- north_votes++
- east = null
-
- if(west && (west.parent == north.parent))
- north_votes++
- west = null
- else
- new_group_possible = 1
-
- if(south)
- if(south.parent)
- south_votes = 1
-
- if(east && (east.parent == south.parent))
- south_votes++
- east = null
-
- if(west && (west.parent == south.parent))
- south_votes++
- west = null
- else
- new_group_possible = 1
-
- if(east)
- if(east.parent)
- east_votes = 1
-
- if(west && (west.parent == east.parent))
- east_votes++
- west = null
- else
- new_group_possible = 1
-
-// world << "[north_votes], [south_votes], [east_votes]"
-
- var/datum/air_group/group_joined = null
-
- if(west)
- if(west.parent)
- group_joined = west.parent
- else
- new_group_possible = 1
-
- if(north_votes && (north_votes >= south_votes) && (north_votes >= east_votes))
- group_joined = north.parent
- else if(south_votes && (south_votes >= east_votes))
- group_joined = south.parent
- else if(east_votes)
- group_joined = east.parent
-
- if (istype(group_joined))
- if (group_joined.group_processing)
- group_joined.suspend_group_processing()
- group_joined.members += src
- parent=group_joined
-
- air_master.tiles_to_update += group_joined.members
- return 1
-
- else if(new_group_possible)
- air_master.assemble_group_turf(src)
- return 1
-
- else
- air_master.active_singletons += src
- return 1
\ No newline at end of file
diff --git a/code/FEA/FEA_system.dm b/code/FEA/FEA_system.dm
deleted file mode 100644
index 574fd1ba268..00000000000
--- a/code/FEA/FEA_system.dm
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
-Overview:
- The air_master global variable is the workhorse for the system.
-
-Why are you archiving data before modifying it?
- The general concept with archiving data and having each tile keep track of when they were last updated is to keep everything symmetric
- and totally independent of the order they are read in an update cycle.
- This prevents abnormalities like air/fire spreading rapidly in one direction and super slowly in the other.
-
-Why not just archive everything and then calculate?
- Efficiency. While a for-loop that goes through all tiles and groups to archive their information before doing any calculations seems simple, it is
- slightly less efficient than the archive-before-modify/read method.
-
-Why is there a cycle check for calculating data as well?
- This ensures that every connection between group-tile, tile-tile, and group-group is only evaluated once per loop.
-
-
-
-
-Important variables:
- air_master.groups_to_rebuild (list)
- A list of air groups that have had their geometry occluded and thus may need to be split in half.
- A set of adjacent groups put in here will join together if validly connected.
- This is done before air system calculations for a cycle.
- air_master.tiles_to_update (list)
- Turfs that are in this list have their border data updated before the next air calculations for a cycle.
- Place turfs in this list rather than call the proc directly to prevent race conditions
-
- turf/simulated.archive() and datum/air_group.archive()
- This stores all data for.
- If you modify, make sure to update the archived_cycle to prevent race conditions and maintain symmetry
-
- atom/CanPass(atom/movable/mover, turf/target, height, air_group)
- returns 1 for allow pass and 0 for deny pass
- Turfs automatically call this for all objects/mobs in its turf.
- This is called both as source.CanPass(target, height, air_group)
- and target.CanPass(source, height, air_group)
-
- Cases for the parameters
- 1. This is called with args (mover, location, height>0, air_group=0) for normal objects.
- 2. This is called with args (null, location, height=0, air_group=0) for flowing air.
- 3. This is called with args (null, location, height=?, air_group=1) for determining group boundaries.
-
- Cases 2 and 3 would be different for doors or other objects open and close fairly often.
- (Case 3 would return 0 always while Case 2 would return 0 only when the door is open)
- This prevents the necessity of re-evaluating group geometry every time a door opens/closes.
-
-
-Important Procedures
- air_master.process()
- This first processes the air_master update/rebuild lists then processes all groups and tiles for air calculations
-
-
-*/
-
-var/kill_air = 0
-
-atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
- return (!density || !height || air_group)
-
-turf
- CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0)
- if(!target) return 0
-
- if(istype(mover)) // turf/Enter(...) will perform more advanced checks
- return !density
-
- else // Now, doing more detailed checks for air movement and air group formation
- if(target.blocks_air||blocks_air)
- return 0
-
- for(var/obj/obstacle in src)
- if(!obstacle.CanPass(mover, target, height, air_group))
- return 0
- for(var/obj/obstacle in target)
- if(!obstacle.CanPass(mover, src, height, air_group))
- return 0
-
- return 1
-
-
-var/global/datum/controller/air_system/air_master
-
-datum
- controller
- air_system
- //Geoemetry lists
- var/list/datum/air_group/air_groups = list()
- var/list/turf/simulated/active_singletons = list()
-
- //Special functions lists
- var/list/turf/simulated/active_super_conductivity = list()
- var/list/turf/simulated/high_pressure_delta = list()
-
- //Geometry updates lists
- var/list/turf/simulated/tiles_to_update = list()
- var/list/turf/simulated/groups_to_rebuild = list()
-
- var/current_cycle = 0
-
- proc
- setup()
- //Call this at the start to setup air groups geometry
- //Warning: Very processor intensive but only must be done once per round
-
- assemble_group_turf(turf/simulated/base)
- //Call this to try to construct a group starting from base and merging with neighboring unparented tiles
- //Expands the group until all valid borders explored
-
-// assemble_group_object(obj/movable/floor/base)
-
- process()
- //Call this to process air movements for a cycle
-
- process_groups()
- //Used by process()
- //Warning: Do not call this
-
- process_singletons()
- //Used by process()
- //Warning: Do not call this
-
- process_high_pressure_delta()
- //Used by process()
- //Warning: Do not call this
-
- process_super_conductivity()
- //Used by process()
- //Warning: Do not call this
-
- process_update_tiles()
- //Used by process()
- //Warning: Do not call this
-
- process_rebuild_select_groups()
- //Used by process()
- //Warning: Do not call this
-
- rebuild_group(datum/air_group)
- //Used by process_rebuild_select_groups()
- //Warning: Do not call this, add the group to air_master.groups_to_rebuild instead
-
- add_singleton(turf/simulated/T)
- if(!active_singletons.Find(T))
- active_singletons += T
-
- setup()
- set background = 1
- world << "\red \b Processing Geometry..."
- sleep(1)
-
- var/start_time = world.timeofday
-
- for(var/turf/simulated/S in world)
- if(!S.blocks_air && !S.parent)
- assemble_group_turf(S)
- S.update_air_properties()
-
- world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!"
-
- assemble_group_turf(turf/simulated/base)
-
- var/list/turf/simulated/members = list(base) //Confirmed group members
- var/list/turf/simulated/possible_members = list(base) //Possible places for group expansion
- var/list/turf/simulated/possible_borders = list()
- var/list/turf/simulated/possible_space_borders = list()
- var/possible_space_length = 0
-
- while(possible_members.len>0) //Keep expanding, looking for new members
- for(var/turf/simulated/test in possible_members)
- test.length_space_border = 0
- for(var/direction in cardinal)
- var/turf/T = get_step(test,direction)
- if(T && !members.Find(T) && test.CanPass(null, T, null,1))
- if(istype(T,/turf/simulated) && !T:parent)
- possible_members += T
- members += T
- else if(istype(T,/turf/space))
- possible_space_borders -= test
- possible_space_borders += test
- test.length_space_border++
- else
- possible_borders -= test
- possible_borders += test
- if(test.length_space_border > 0)
- possible_space_length += test.length_space_border
- possible_members -= test
-
- if(members.len > 1)
- var/datum/air_group/turf/group = new
- if(possible_borders.len>0)
- group.borders = possible_borders
- if(possible_space_borders.len>0)
- group.space_borders = possible_space_borders
- group.length_space_border = possible_space_length
-
- for(var/turf/simulated/test in members)
- test.parent = group
- test.processing = 0
- active_singletons -= test
-
- group.members = members
- air_groups += group
-
- group.update_group_from_tiles() //Initialize air group variables
- return group
- else
- base.processing = 0 //singletons at startup are technically unconnected anyway
- base.parent = null
-
- if(base.air.check_tile_graphic())
- base.update_visuals(base.air)
-
- return null
-/*
- assemble_group_object(obj/movable/floor/base)
-
- var/list/obj/movable/floor/members = list(base) //Confirmed group members
- var/list/obj/movable/floor/possible_members = list(base) //Possible places for group expansion
- var/list/obj/movable/floor/possible_borders = list()
-
- while(possible_members.len>0) //Keep expanding, looking for new members
- for(var/obj/movable/floor/test in possible_members)
- for(var/direction in list(NORTH, SOUTH, EAST, WEST))
- var/turf/T = get_step(test.loc,direction)
- if(T && test.loc.CanPass(null, T, null, 1))
- var/obj/movable/floor/O = locate(/obj/movable/floor) in T
- if(istype(O) && !O.parent)
- if(!members.Find(O))
- possible_members += O
- members += O
- else
- possible_borders -= test
- possible_borders += test
- possible_members -= test
-
- if(members.len > 1)
- var/datum/air_group/object/group = new
- if(possible_borders.len>0)
- group.borders = possible_borders
-
- for(var/obj/movable/floor/test in members)
- test.parent = group
- test.processing = 0
- active_singletons -= test
-
- group.members = members
- air_groups += group
-
- group.update_group_from_tiles() //Initialize air group variables
- return group
- else
- base.processing = 0 //singletons at startup are technically unconnected anyway
- base.parent = null
-
- return null
-*/
- process()
- if(kill_air)
- return 1
- current_cycle++
- if(groups_to_rebuild.len > 0) process_rebuild_select_groups()
- if(tiles_to_update.len > 0) process_update_tiles()
-
- process_groups()
- process_singletons()
-
- process_super_conductivity()
- process_high_pressure_delta()
-
- if(current_cycle%10==5) //Check for groups of tiles to resume group processing every 10 cycles
- for(var/datum/air_group/AG in air_groups)
- AG.check_regroup()
-
- return 1
-
- process_update_tiles()
- for(var/turf/simulated/T in tiles_to_update)
- T.update_air_properties()
-/*
- for(var/obj/movable/floor/O in tiles_to_update)
- O.update_air_properties()
-*/
- tiles_to_update.len = 0
-
- process_rebuild_select_groups()
- var/turf/list/turfs = list()
-
- for(var/datum/air_group/turf/turf_AG in groups_to_rebuild) //Deconstruct groups, gathering their old members
- for(var/turf in turf_AG.members)
- var/turf/simulated/T = turf
- T.parent = null
- turfs += T
- del(turf_AG)
-
- for(var/turf/simulated/S in turfs) //Have old members try to form new groups
- if(!S.parent)
- assemble_group_turf(S)
- for(var/turf/simulated/S in turfs)
- S.update_air_properties()
-
-// var/obj/movable/list/movable_objects = list()
-
-// for(var/datum/air_group/object/object_AG in groups_to_rebuild) //Deconstruct groups, gathering their old members
-/*
- for(var/obj/movable/floor/OM in object_AG.members)
- OM.parent = null
- movable_objects += OM
- del(object_AG)
-
- for(var/obj/movable/floor/OM in movable_objects) //Have old members try to form new groups
- if(!OM.parent)
- assemble_group_object(OM)
- for(var/obj/movable/floor/OM in movable_objects)
- OM.update_air_properties()
-*/
- groups_to_rebuild.len = 0
-
- process_groups()
- for(var/datum/air_group/AG in air_groups)
- AG.process_group()
-
- process_singletons()
- for(var/item in active_singletons)
- item:process_cell()
-
- process_super_conductivity()
- for(var/turf/simulated/hot_potato in active_super_conductivity)
- hot_potato.super_conduct()
-
- process_high_pressure_delta()
- for(var/turf/pressurized in high_pressure_delta)
- pressurized.high_pressure_movements()
-
- high_pressure_delta.len = 0
diff --git a/code/FEA/FEA_turf_tile.dm b/code/FEA/FEA_turf_tile.dm
deleted file mode 100644
index de3901b910d..00000000000
--- a/code/FEA/FEA_turf_tile.dm
+++ /dev/null
@@ -1,592 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-atom/movable/var/pressure_resistance = 5
-atom/movable/var/last_forced_movement = 0
-
-atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
- if(last_forced_movement >= air_master.current_cycle)
- return 0
- else if(!anchored)
- if(pressure_difference > pressure_resistance)
- last_forced_movement = air_master.current_cycle
- spawn step(src, direction)
- return 1
-
-turf
- assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
- del(giver)
- return 0
-
- return_air()
- //Create gas mixture to hold data for passing
- var/datum/gas_mixture/GM = new
-
- GM.oxygen = oxygen
- GM.carbon_dioxide = carbon_dioxide
- GM.nitrogen = nitrogen
- GM.toxins = toxins
-
- GM.temperature = temperature
-
- return GM
-
- remove_air(amount as num)
- var/datum/gas_mixture/GM = new
-
- var/sum = oxygen + carbon_dioxide + nitrogen + toxins
- if(sum>0)
- GM.oxygen = (oxygen/sum)*amount
- GM.carbon_dioxide = (carbon_dioxide/sum)*amount
- GM.nitrogen = (nitrogen/sum)*amount
- GM.toxins = (toxins/sum)*amount
-
- GM.temperature = temperature
-
- return GM
-
-turf
- var/pressure_difference = 0
- var/pressure_direction = 0
- var/reporting_pressure_difference
-
- //optimization vars
- var/next_check = 0 //number of ticks before this tile updates
- var/check_delay = 0 //number of ticks between updates
-
- proc/high_pressure_movements()
- if(reporting_pressure_difference)
- world << "pressure_difference = [pressure_difference]; pressure_direction = [pressure_direction]"
- for(var/atom/movable/in_tile in src)
- in_tile.experience_pressure_difference(pressure_difference, pressure_direction)
-
- pressure_difference = 0
-
- proc/consider_pressure_difference(connection_difference, connection_direction)
- if(connection_difference < 0)
- connection_difference = -connection_difference
- connection_direction = turn(connection_direction,180)
-
- if(connection_difference > pressure_difference)
- if(!pressure_difference)
- air_master.high_pressure_delta += src
- pressure_difference = connection_difference
- pressure_direction = connection_direction
-
-turf/simulated/proc/consider_pressure_difference_space(connection_difference)
- for(var/direction in cardinal)
- if(direction&group_border)
- if(istype(get_step(src,direction),/turf/space))
- if(!pressure_difference)
- air_master.high_pressure_delta += src
- pressure_direction = direction
- pressure_difference = connection_difference
-
-
- return 1
-
-
-turf/simulated
-
- var/current_graphic = null
-
- var/tmp/datum/gas_mixture/air
-
- var/tmp/processing = 1
- var/tmp/datum/air_group/turf/parent
- var/tmp/group_border = 0
- var/tmp/length_space_border = 0
-
- var/tmp/air_check_directions = 0 //Do not modify this, just add turf to air_master.tiles_to_update
-
- var/tmp/archived_cycle = 0
- var/tmp/current_cycle = 0
-
- var/tmp/obj/effect/hotspot/active_hotspot
-
- var/tmp/temperature_archived //USED ONLY FOR SOLIDS
- var/tmp/being_superconductive = 0
-
- proc/update_visuals(datum/gas_mixture/model)
- overlays.Cut()
-
- var/siding_icon_state = return_siding_icon_state()
- if(siding_icon_state)
- overlays += image('icons/turf/floors.dmi',siding_icon_state)
-
- switch(model.graphic)
- if("plasma")
- overlays.Add(plmaster)
- if("sleeping_agent")
- overlays.Add(slmaster)
-
- if(model.graphics & GRAPHICS_COLD)
- if(!was_icy)
- wet=3 // Custom ice
- was_icy=1
- var/o=""
- //if(is_plating())
- // o="snowfloor_s"
- //else
- if(is_plasteel_floor())
- o="snowfloor"
- if(o!="")
- overlays += image('icons/turf/overlays.dmi',o)
- else
- if(was_icy)
- wet=0
- was_icy=0
- if(prob(10))
- wet = 1
- if(wet_overlay)
- overlays -= wet_overlay
- wet_overlay = null
- wet_overlay = image('icons/effects/water.dmi',src,"wet_floor")
- overlays += wet_overlay
-
- spawn(800)
- if (!istype(src)) return
- if(wet >= 2) return
- wet = 0
- if(wet_overlay)
- overlays -= wet_overlay
- wet_overlay = null
-
-
-
- New()
- ..()
-
- if(!blocks_air)
- air = new
-
- air.oxygen = oxygen
- air.carbon_dioxide = carbon_dioxide
- air.nitrogen = nitrogen
- air.toxins = toxins
-
- air.temperature = temperature
-
- if(air_master)
- air_master.tiles_to_update.Add(src)
-
- find_group()
-
-// air.parent = src //TODO DEBUG REMOVE
-
- else
- if(air_master)
- for(var/direction in cardinal)
- var/turf/simulated/floor/target = get_step(src,direction)
- if(istype(target))
- air_master.tiles_to_update.Add(target)
-
- Del()
- if(air_master)
- if(parent)
- air_master.groups_to_rebuild.Add(parent)
- parent.members.Remove(src)
- else
- air_master.active_singletons.Remove(src)
- if(active_hotspot)
- active_hotspot.Kill()
- if(blocks_air)
- for(var/direction in list(NORTH, SOUTH, EAST, WEST))
- var/turf/simulated/tile = get_step(src,direction)
- if(istype(tile) && !tile.blocks_air)
- air_master.tiles_to_update.Add(tile)
- ..()
-
- assume_air(datum/gas_mixture/giver)
- if(!giver) return 0
- var/datum/gas_mixture/receiver = air
- if(istype(receiver))
- if(parent&&parent.group_processing)
- if(!parent.air.check_then_merge(giver))
- parent.suspend_group_processing()
- air.merge(giver)
- else
- if (giver.total_moles() > MINIMUM_AIR_TO_SUSPEND)
- reset_delay()
-
- air.merge(giver)
-
- if(!processing)
- if(air.check_tile_graphic())
- update_visuals(air)
-
- return 1
-
- else return ..()
-
- proc/archive()
- if(air) //For open space like floors
- air.archive()
-
- temperature_archived = temperature
- archived_cycle = air_master.current_cycle
-
- proc/share_air_with_tile(turf/simulated/T)
- return air.share(T.air)
-
- proc/mimic_air_with_tile(turf/T)
- return air.mimic(T)
-
- return_air()
- if(air)
- if(parent&&parent.group_processing)
- return parent.air
- else return air
-
- else
- return ..()
-
- remove_air(amount as num)
- if(air)
- var/datum/gas_mixture/removed = null
-
- if(parent&&parent.group_processing)
- removed = parent.air.check_then_remove(amount)
- if(!removed)
- parent.suspend_group_processing()
- removed = air.remove(amount)
- else
- removed = air.remove(amount)
-
- if(!processing)
- if(air.check_tile_graphic())
- update_visuals(air)
-
- return removed
-
- else
- return ..()
-
- proc/update_air_properties()//OPTIMIZE
- air_check_directions = 0
-
- for(var/direction in cardinal)
- if(CanPass(null, get_step(src,direction), 0, 0))
- air_check_directions |= direction
-
- if(parent)
- if(parent.borders)
- parent.borders -= src
- if(length_space_border > 0)
- parent.length_space_border -= length_space_border
- length_space_border = 0
-
- group_border = 0
- for(var/direction in cardinal)
- if(air_check_directions&direction)
- var/turf/simulated/T = get_step(src,direction)
-
- //See if actually a border
- if(!istype(T) || (T.parent!=parent))
-
- //See what kind of border it is
- if(istype(T,/turf/space))
- if(parent.space_borders)
- parent.space_borders -= src
- parent.space_borders += src
- else
- parent.space_borders = list(src)
- length_space_border++
-
- else
- if(parent.borders)
- parent.borders -= src
- parent.borders += src
- else
- parent.borders = list(src)
-
- group_border |= direction
-
- parent.length_space_border += length_space_border
-
- if(air_check_directions)
- processing = 1
- if(!parent)
- air_master.add_singleton(src)
- else
- processing = 0
-
- proc/process_cell()
- //this proc does all the heavy lifting for individual tile processing
- //it shares with all of its neighbors, spreads fire, calls superconduction
- //and doesn't afraid of anything
- //Comment by errorage: In other words, this is the proc that lags the game.
-
- //check if we're skipping this tick
- if (next_check > 0)
- next_check--
- return 1
- var/player_count = max(player_list.len, 3) / 3
- next_check += check_delay + rand(player_count, player_count * 1.5)
- check_delay++
-
- var/turf/simulated/list/possible_fire_spreads = list()
- if(processing)
- if(archived_cycle < air_master.current_cycle) //archive self if not already done
- archive()
- current_cycle = air_master.current_cycle
-
- for(var/direction in cardinal)
- if(air_check_directions&direction) //Grab all valid bordering tiles
- var/turf/simulated/enemy_tile = get_step(src, direction)
- var/connection_difference = 0
-
- if(istype(enemy_tile)) //enemy_tile == neighbor, btw
- if(enemy_tile.archived_cycle < archived_cycle) //archive bordering tile information if not already done
- enemy_tile.archive()
-
- if (air && enemy_tile.air)
- var/delay_trigger = air.compare(enemy_tile.air)
- if (!delay_trigger) //if compare() didn't return 1, air is different enough to trigger processing
- reset_delay()
- enemy_tile.reset_delay()
-
- if(enemy_tile.parent && enemy_tile.parent.group_processing) //apply tile to group sharing
- if(enemy_tile.parent.current_cycle < current_cycle) //if the group hasn't been archived, it could just be out of date
- if(enemy_tile.parent.air.check_gas_mixture(air))
- connection_difference = air.share(enemy_tile.parent.air)
- else
- enemy_tile.parent.suspend_group_processing()
- connection_difference = air.share(enemy_tile.air)
- //group processing failed so interact with individual tile
-
- else
- if(enemy_tile.current_cycle < current_cycle)
- connection_difference = air.share(enemy_tile.air)
-
- if(active_hotspot)
- possible_fire_spreads += enemy_tile
- else
-/* var/obj/movable/floor/movable_on_enemy = locate(/obj/movable/floor) in enemy_tile
-
- if(movable_on_enemy)
- if(movable_on_enemy.parent && movable_on_enemy.parent.group_processing) //apply tile to group sharing
- if(movable_on_enemy.parent.current_cycle < current_cycle)
- if(movable_on_enemy.parent.air.check_gas_mixture(air))
- connection_difference = air.share(movable_on_enemy.parent.air)
-
- else
- movable_on_enemy.parent.suspend_group_processing()
-
- if(movable_on_enemy.archived_cycle < archived_cycle) //archive bordering tile information if not already done
- movable_on_enemy.archive()
- connection_difference = air.share(movable_on_enemy.air)
- //group processing failed so interact with individual tile
- else
- if(movable_on_enemy.archived_cycle < archived_cycle) //archive bordering tile information if not already done
- movable_on_enemy.archive()
-
- if(movable_on_enemy.current_cycle < current_cycle)
- connection_difference = share_air_with_tile(movable_on_enemy)
-
- else*/
- connection_difference = mimic_air_with_tile(enemy_tile)
- //bordering a tile with fixed air properties
-
- if(connection_difference)
- if(connection_difference > 0)
- consider_pressure_difference(connection_difference, direction)
- else
- enemy_tile.consider_pressure_difference(connection_difference, direction)
- else
- air_master.active_singletons -= src //not active if not processing!
-
- air.react()
-
- if(active_hotspot)
- if (!active_hotspot.process(possible_fire_spreads))
- return 0
-
- if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION)
- consider_superconductivity(starting = 1)
-
- if(air.check_tile_graphic())
- update_visuals(air)
-
- if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
- reset_delay() //hotspots always process quickly
- hotspot_expose(air.temperature, CELL_VOLUME)
- for(var/atom/movable/item in src)
- item.temperature_expose(air, air.temperature, CELL_VOLUME)
- temperature_expose(air, air.temperature, CELL_VOLUME)
-
- return 1
-
- proc/super_conduct()
- var/conductivity_directions = 0
- if(blocks_air)
- //Does not participate in air exchange, so will conduct heat across all four borders at this time
- conductivity_directions = NORTH|SOUTH|EAST|WEST
-
- if(archived_cycle < air_master.current_cycle)
- archive()
-
- else
- //Does particate in air exchange so only consider directions not considered during process_cell()
- conductivity_directions = ~air_check_directions & (NORTH|SOUTH|EAST|WEST)
-
- if(conductivity_directions>0)
- //Conduct with tiles around me
- for(var/direction in cardinal)
- if(conductivity_directions&direction)
- var/turf/neighbor = get_step(src,direction)
-
- if(istype(neighbor, /turf/simulated)) //anything under this subtype will share in the exchange
- var/turf/simulated/modeled_neighbor = neighbor
-
- if(modeled_neighbor.archived_cycle < air_master.current_cycle)
- modeled_neighbor.archive()
-
- if(modeled_neighbor.air)
- if(air) //Both tiles are open
-
- if(modeled_neighbor.parent && modeled_neighbor.parent.group_processing)
- if(parent && parent.group_processing)
- //both are acting as a group
- //modified using construct developed in datum/air_group/share_air_with_group(...)
-
- var/result = parent.air.check_both_then_temperature_share(modeled_neighbor.parent.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
- if(result==0)
- //have to deconstruct parent air group
-
- parent.suspend_group_processing()
- if(!modeled_neighbor.parent.air.check_me_then_temperature_share(air, WINDOW_HEAT_TRANSFER_COEFFICIENT))
- //may have to deconstruct neighbors air group
-
- modeled_neighbor.parent.suspend_group_processing()
- air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
- else if(result==-1)
- // have to deconstruct neightbors air group but not mine
-
- modeled_neighbor.parent.suspend_group_processing()
- parent.air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
- else
- air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
- else
- if(parent && parent.group_processing)
- if(!parent.air.check_me_then_temperature_share(air, WINDOW_HEAT_TRANSFER_COEFFICIENT))
- //may have to deconstruct neighbors air group
-
- parent.suspend_group_processing()
- air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
-
- else
- air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
- // world << "OPEN, OPEN"
-
- else //Solid but neighbor is open
- if(modeled_neighbor.parent && modeled_neighbor.parent.group_processing)
- if(!modeled_neighbor.parent.air.check_me_then_temperature_turf_share(src, modeled_neighbor.thermal_conductivity))
-
- modeled_neighbor.parent.suspend_group_processing()
- modeled_neighbor.air.temperature_turf_share(src, modeled_neighbor.thermal_conductivity)
- else
- modeled_neighbor.air.temperature_turf_share(src, modeled_neighbor.thermal_conductivity)
- // world << "SOLID, OPEN"
-
- else
- if(air) //Open but neighbor is solid
- if(parent && parent.group_processing)
- if(!parent.air.check_me_then_temperature_turf_share(modeled_neighbor, modeled_neighbor.thermal_conductivity))
- parent.suspend_group_processing()
- air.temperature_turf_share(modeled_neighbor, modeled_neighbor.thermal_conductivity)
- else
- air.temperature_turf_share(modeled_neighbor, modeled_neighbor.thermal_conductivity)
- // world << "OPEN, SOLID"
-
- else //Both tiles are solid
- share_temperature_mutual_solid(modeled_neighbor, modeled_neighbor.thermal_conductivity)
- // world << "SOLID, SOLID"
-
- modeled_neighbor.consider_superconductivity()
-
- else
- if(air) //Open
- if(parent && parent.group_processing)
- if(!parent.air.check_me_then_temperature_mimic(neighbor, neighbor.thermal_conductivity))
- parent.suspend_group_processing()
- air.temperature_mimic(neighbor, neighbor.thermal_conductivity)
- else
- air.temperature_mimic(neighbor, neighbor.thermal_conductivity)
- else
- mimic_temperature_solid(neighbor, neighbor.thermal_conductivity)
-
- //Radiate excess tile heat to space
- if(temperature > T0C)
- // Is there a pre-defined Space Tile?
- if(!Space_Tile)
- Space_Tile = locate(/turf/space) // Define one
- //Considering 0 degC as te break even point for radiation in and out
- mimic_temperature_solid(Space_Tile, FLOOR_HEAT_TRANSFER_COEFFICIENT)
-
- //Conduct with air on my tile if I have it
- if(air)
- if(parent && parent.group_processing)
- if(!parent.air.check_me_then_temperature_turf_share(src, thermal_conductivity))
- parent.suspend_group_processing()
- air.temperature_turf_share(src, thermal_conductivity)
- else
- air.temperature_turf_share(src, thermal_conductivity)
-
-
- //Make sure still hot enough to continue conducting heat
- if(air)
- if(air.temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)
- being_superconductive = 0
- air_master.active_super_conductivity -= src
- return 0
-
- else
- if(temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)
- being_superconductive = 0
- air_master.active_super_conductivity -= src
- return 0
-
- proc/mimic_temperature_solid(turf/model, conduction_coefficient)
- var/delta_temperature = (temperature_archived - model.temperature)
- if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER))
-
- var/heat = conduction_coefficient*delta_temperature* \
- (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity))
- temperature -= heat/heat_capacity
-
- proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient)
- var/delta_temperature = (temperature_archived - sharer.temperature_archived)
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity)
-
- var/heat = conduction_coefficient*delta_temperature* \
- (heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity))
-
- temperature -= heat/heat_capacity
- sharer.temperature += heat/sharer.heat_capacity
-
- proc/consider_superconductivity(starting)
-
- if(being_superconductive || !thermal_conductivity)
- return 0
-
- if(air)
- if(air.temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION))
- return 0
- if(air.heat_capacity() < MOLES_CELLSTANDARD*0.1*0.05)
- return 0
- else
- if(temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION))
- return 0
-
- being_superconductive = 1
-
- air_master.active_super_conductivity += src
-
- proc/reset_delay()
- //sets this turf to process quickly again
- next_check=0
- check_delay= -5 //negative numbers mean a mandatory quick-update period
-
- //if this turf has a parent air group, suspend its processing
- if (parent && parent.group_processing)
- parent.suspend_group_processing()
diff --git a/code/FEA/FEA_fire.dm b/code/LINDA/LINDA_fire.dm
similarity index 83%
rename from code/FEA/FEA_fire.dm
rename to code/LINDA/LINDA_fire.dm
index bb71f31d47f..0f173f97fda 100644
--- a/code/FEA/FEA_fire.dm
+++ b/code/LINDA/LINDA_fire.dm
@@ -1,178 +1,177 @@
-
-/atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- return null
-
-
-
-/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
-
-
-
-/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh)
- var/datum/gas_mixture/air_contents = return_air()
- if(!air_contents)
- return 0
- if(active_hotspot)
- if(soh)
- if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5)
- if(active_hotspot.temperature < exposed_temperature)
- active_hotspot.temperature = exposed_temperature
- if(active_hotspot.volume < exposed_volume)
- active_hotspot.volume = exposed_volume
- return 1
-
- var/igniting = 0
-
- if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && air_contents.toxins > 0.5)
- igniting = 1
-
- if(igniting)
- if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5)
- return 0
-
- if(parent&&parent.group_processing)
- parent.suspend_group_processing()
-
- active_hotspot = new(src)
- active_hotspot.temperature = exposed_temperature
- active_hotspot.volume = exposed_volume
-
- active_hotspot.just_spawned = (current_cycle < air_master.current_cycle)
- //remove just_spawned protection if no longer processing this cell
-
- //start processing quickly if we aren't already
- reset_delay()
-
- return igniting
-
-//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile
-/obj/effect/hotspot
- anchored = 1
- mouse_opacity = 0
- unacidable = 1//So you can't melt fire with acid.
- icon = 'icons/effects/fire.dmi'
- icon_state = "1"
- layer = TURF_LAYER
- luminosity = 3
-
- var/volume = 125
- var/temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST
- var/just_spawned = 1
- var/bypassing = 0
-
-
-/obj/effect/hotspot/proc/perform_exposure()
- var/turf/simulated/floor/location = loc
- if(!istype(location)) return 0
-
- if(volume > CELL_VOLUME*0.95) bypassing = 1
- else bypassing = 0
-
- if(bypassing)
- if(!just_spawned)
- volume = location.air.fuel_burnt*FIRE_GROWTH_RATE
- temperature = location.air.temperature
- else
- var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume)
- affected.temperature = temperature
- affected.react()
- temperature = affected.temperature
- volume = affected.fuel_burnt*FIRE_GROWTH_RATE
- location.assume_air(affected)
-
- for(var/atom/item in loc)
- if(!bypassing)
- item.temperature_expose(null, temperature, volume)
- if(item) // It's possible that the item is deleted in temperature_expose
- item.fire_act(null, temperature, volume)
-
- return 0
-
-
-/obj/effect/hotspot/process(turf/simulated/list/possible_spread)
- if(just_spawned)
- just_spawned = 0
- return 0
-
- var/turf/simulated/floor/location = loc
- if(!istype(location))
- Kill()
- return
-
- if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1))
- Kill()
- return
-
- if(location.air.toxins < 0.5 || location.air.oxygen < 0.5)
- Kill()
- return
-
- perform_exposure()
-
- if(location.wet) location.wet = 0
-
- if(bypassing)
- icon_state = "3"
- location.burn_tile()
-
- //Possible spread due to radiated heat
- if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD)
- var/radiated_temperature = location.air.temperature*FIRE_SPREAD_RADIOSITY_SCALE
-
- for(var/turf/simulated/possible_target in possible_spread)
- if(!possible_target.active_hotspot)
- possible_target.hotspot_expose(radiated_temperature, CELL_VOLUME/4)
-
- else
- if(volume > CELL_VOLUME*0.4)
- icon_state = "2"
- else
- icon_state = "1"
-
- if(temperature > location.max_fire_temperature_sustained)
- location.max_fire_temperature_sustained = temperature
-
- if(location.heat_capacity && temperature > location.heat_capacity)
- location.to_be_destroyed = 1
- /*if(prob(25))
- location.ReplaceWithSpace()
- return 0*/
- return 1
-
-// Garbage collect itself by nulling reference to it
-
-/obj/effect/hotspot/proc/Kill()
- DestroyTurf()
- if(istype(loc, /turf/simulated))
- var/turf/simulated/T = loc
- if(T.active_hotspot == src)
- T.active_hotspot = null
- loc = null
-
-/obj/effect/hotspot/proc/DestroyTurf()
-
- if(istype(loc, /turf/simulated))
- var/turf/simulated/T = loc
- if(T.to_be_destroyed)
- var/chance_of_deletion
- if (T.heat_capacity) //beware of division by zero
- chance_of_deletion = T.max_fire_temperature_sustained / T.heat_capacity * 8 //there is no problem with prob(23456), min() was redundant --rastaf0
- else
- chance_of_deletion = 100
- if(prob(chance_of_deletion))
- T.ChangeTurf(/turf/space)
- else
- T.to_be_destroyed = 0
- T.max_fire_temperature_sustained = 0
-
-/obj/effect/hotspot/New()
- ..()
- dir = pick(cardinal)
- return
-
-/*
-/obj/effect/hotspot/Del()
- if (istype(loc, /turf/simulated))
- DestroyTurf()
- ..()
-*/
\ No newline at end of file
+
+/atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ return null
+
+
+
+/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
+ return
+
+
+/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh)
+ var/datum/gas_mixture/air_contents = return_air()
+ if(!air_contents)
+ return 0
+ if(active_hotspot)
+ if(soh)
+ if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5)
+ if(active_hotspot.temperature < exposed_temperature)
+ active_hotspot.temperature = exposed_temperature
+ if(active_hotspot.volume < exposed_volume)
+ active_hotspot.volume = exposed_volume
+ return 1
+
+ var/igniting = 0
+
+ if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && air_contents.toxins > 0.5)
+ igniting = 1
+
+ if(igniting)
+ if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5)
+ return 0
+
+ active_hotspot = new(src)
+ active_hotspot.temperature = exposed_temperature
+ active_hotspot.volume = exposed_volume
+
+ active_hotspot.just_spawned = (current_cycle < air_master.current_cycle)
+ //remove just_spawned protection if no longer processing this cell
+ air_master.add_to_active(src, 0)
+ return igniting
+
+//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile
+/obj/effect/hotspot
+ anchored = 1
+ mouse_opacity = 0
+ unacidable = 1//So you can't melt fire with acid.
+ icon = 'icons/effects/fire.dmi'
+ icon_state = "1"
+ layer = TURF_LAYER
+ luminosity = 3
+
+ var/volume = 125
+ var/temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST
+ var/just_spawned = 1
+ var/bypassing = 0
+
+/obj/effect/hotspot/New()
+ ..()
+ air_master.hotspots += src
+
+/obj/effect/hotspot/proc/perform_exposure()
+ var/turf/simulated/floor/location = loc
+ if(!istype(location) || !(location.air)) return 0
+
+ if(volume > CELL_VOLUME*0.95) bypassing = 1
+ else bypassing = 0
+
+ if(bypassing)
+ if(!just_spawned)
+ volume = location.air.fuel_burnt*FIRE_GROWTH_RATE
+ temperature = location.air.temperature
+ else
+ var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume)
+ affected.temperature = temperature
+ affected.react()
+ temperature = affected.temperature
+ volume = affected.fuel_burnt*FIRE_GROWTH_RATE
+ location.assume_air(affected)
+
+ for(var/atom/item in loc)
+ if(item) // It's possible that the item is deleted in temperature_expose
+ item.fire_act(null, temperature, volume)
+
+ return 0
+
+
+/obj/effect/hotspot/process()
+ if(just_spawned)
+ just_spawned = 0
+ return 0
+
+ var/turf/simulated/floor/location = loc
+ if(!istype(location))
+ Kill()
+ return
+
+ if(location.excited_group)
+ location.excited_group.reset_cooldowns()
+
+ if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1))
+ Kill()
+ return
+
+ if((!(location.air) || location.air.toxins < 0.5 || location.air.oxygen < 0.5))
+ Kill()
+ return
+
+ perform_exposure()
+
+ if(location.wet) location.wet = 0
+
+ if(bypassing)
+ icon_state = "3"
+ location.burn_tile()
+
+ //Possible spread due to radiated heat
+ if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD)
+ var/radiated_temperature = location.air.temperature*FIRE_SPREAD_RADIOSITY_SCALE
+ for(var/direction in cardinal)
+ if(!(location.atmos_adjacent_turfs & direction))
+ continue
+ var/turf/simulated/T = get_step(src, direction)
+ if(istype(T) && T.active_hotspot)
+ T.hotspot_expose(radiated_temperature, CELL_VOLUME/4)
+
+ else
+ if(volume > CELL_VOLUME*0.4)
+ icon_state = "2"
+ else
+ icon_state = "1"
+
+ if(temperature > location.max_fire_temperature_sustained)
+ location.max_fire_temperature_sustained = temperature
+
+ if(location.heat_capacity && temperature > location.heat_capacity)
+ location.to_be_destroyed = 1
+ /*if(prob(25))
+ location.ReplaceWithSpace()
+ return 0*/
+ return 1
+
+// Garbage collect itself by nulling reference to it
+
+/obj/effect/hotspot/proc/Kill()
+ air_master.hotspots -= src
+ DestroyTurf()
+ qdel(src)
+
+/obj/effect/hotspot/Destroy()
+ if(istype(loc, /turf/simulated))
+ var/turf/simulated/T = loc
+ if(T.active_hotspot == src)
+ T.active_hotspot = null
+ loc = null
+
+/obj/effect/hotspot/proc/DestroyTurf()
+
+ if(istype(loc, /turf/simulated))
+ var/turf/simulated/T = loc
+ if(T.to_be_destroyed)
+ var/chance_of_deletion
+ if (T.heat_capacity) //beware of division by zero
+ chance_of_deletion = T.max_fire_temperature_sustained / T.heat_capacity * 8 //there is no problem with prob(23456), min() was redundant --rastaf0
+ else
+ chance_of_deletion = 100
+ if(prob(chance_of_deletion))
+ T.ChangeTurf(/turf/space)
+ else
+ T.to_be_destroyed = 0
+ T.max_fire_temperature_sustained = 0
+
+/obj/effect/hotspot/New()
+ ..()
+ dir = pick(cardinal)
+ air_update_turf()
+ return
+
diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm
new file mode 100644
index 00000000000..faa86e46754
--- /dev/null
+++ b/code/LINDA/LINDA_system.dm
@@ -0,0 +1,275 @@
+var/kill_air = 0
+
+var/global/datum/controller/air_system/air_master
+
+datum/controller/air_system
+ var/list/excited_groups = list()
+ var/list/active_turfs = list()
+ var/list/hotspots = list()
+ var/speed = 1
+
+ //Special functions lists
+ var/list/turf/simulated/active_super_conductivity = list()
+ var/list/turf/simulated/high_pressure_delta = list()
+
+ var/current_cycle = 0
+ var/update_delay = 5
+ var/failed_ticks = 0
+ var/tick_progress = 0
+
+
+/datum/controller/air_system/proc/Setup()
+ set background = 1
+ world << "\red \b Processing Geometry..."
+ sleep(1)
+
+ var/start_time = world.timeofday
+
+ setup_allturfs()
+
+ setup_overlays()
+
+ world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!"
+
+/datum/controller/air_system/proc/process()
+ if(kill_air)
+ return 1
+
+ for(var/i=0,i 20)
+ EG.dismantle()
+
+/datum/controller/air_system/proc/setup_overlays()
+ plmaster = new /obj/effect/overlay()
+ plmaster.icon = 'icons/effects/tile_effects.dmi'
+ plmaster.icon_state = "plasma"
+ plmaster.layer = FLY_LAYER
+ plmaster.mouse_opacity = 0
+
+ slmaster = new /obj/effect/overlay()
+ slmaster.icon = 'icons/effects/tile_effects.dmi'
+ slmaster.icon_state = "sleeping_agent"
+ slmaster.layer = FLY_LAYER
+ slmaster.mouse_opacity = 0
+
+/turf/proc/CanAtmosPass(var/turf/T)
+ if(!istype(T)) return 0
+ var/R
+ if(blocks_air || T.blocks_air)
+ R = 1
+
+ for(var/obj/O in contents)
+ if(!O.CanAtmosPass(T))
+ R = 1
+ if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments
+ var/D = get_dir(src, T)
+ atmos_supeconductivity |= D
+ D = get_dir(T, src)
+ T.atmos_supeconductivity |= D
+ return 0 //no need to keep going, we got all we asked
+
+ for(var/obj/O in T.contents)
+ if(!O.CanAtmosPass(src))
+ R = 1
+ if(O.BlockSuperconductivity())
+ var/D = get_dir(src, T)
+ atmos_supeconductivity |= D
+ D = get_dir(T, src)
+ T.atmos_supeconductivity |= D
+ return 0
+
+ var/D = get_dir(src, T)
+ atmos_supeconductivity &= ~D
+ D = get_dir(T, src)
+ T.atmos_supeconductivity &= ~D
+
+ if(!R)
+ return 1
+
+atom/movable/proc/CanAtmosPass()
+ return 1
+
+atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
+ return (!density || !height || air_group)
+
+turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0)
+ if(!target) return 0
+
+ if(istype(mover)) // turf/Enter(...) will perform more advanced checks
+ return !density
+
+ else // Now, doing more detailed checks for air movement and air group formation
+ if(target.blocks_air||blocks_air)
+ return 0
+
+ for(var/obj/obstacle in src)
+ if(!obstacle.CanPass(mover, target, height, air_group))
+ return 0
+ for(var/obj/obstacle in target)
+ if(!obstacle.CanPass(mover, src, height, air_group))
+ return 0
+
+ return 1
+
+/atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm.
+ return 0
+
+/turf/proc/CalculateAdjacentTurfs()
+ atmos_adjacent_turfs_amount = 0
+ for(var/direction in cardinal)
+ var/turf/T = get_step(src, direction)
+ if(!istype(T))
+ continue
+ var/counterdir = get_dir(T, src)
+ if(CanAtmosPass(T))
+ atmos_adjacent_turfs_amount += 1
+ atmos_adjacent_turfs |= direction
+ if(!(T.atmos_adjacent_turfs & counterdir))
+ T.atmos_adjacent_turfs_amount += 1
+ T.atmos_adjacent_turfs |= counterdir
+ else
+ atmos_adjacent_turfs &= ~direction
+ if(T.atmos_adjacent_turfs & counterdir)
+ T.atmos_adjacent_turfs_amount -= 1
+ T.atmos_adjacent_turfs &= ~counterdir
+
+/atom/movable/proc/air_update_turf(var/command = 0)
+ if(!istype(loc,/turf) && command)
+ return
+ for(var/turf/T in locs) // used by double wide doors and other nonexistant multitile structures
+ T.air_update_turf(command)
+
+/turf/proc/air_update_turf(var/command = 0)
+ if(command)
+ CalculateAdjacentTurfs()
+ if(air_master)
+ air_master.add_to_active(src,command)
+
+/atom/movable/proc/move_update_air(var/turf/T)
+ if(istype(T,/turf))
+ T.air_update_turf(1)
+ air_update_turf(1)
+
+
+
+/atom/movable/proc/atmos_spawn_air(var/text, var/amount) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires
+ var/turf/simulated/T = get_turf(src)
+ if(!istype(T))
+ return
+ T.atmos_spawn_air(text, amount)
+
+var/const/SPAWN_HEAT = 1
+
+var/const/SPAWN_TOXINS = 4
+var/const/SPAWN_OXYGEN = 8
+var/const/SPAWN_CO2 = 16
+var/const/SPAWN_NITROGEN = 32
+
+var/const/SPAWN_N2O = 64
+
+var/const/SPAWN_AIR = 256
+
+/turf/simulated/proc/atmos_spawn_air(var/flag, var/amount)
+ if(!text || !amount || !air)
+ return
+
+ var/datum/gas_mixture/G = new
+
+ if(flag & SPAWN_HEAT)
+ G.temperature += 1000
+
+ if(flag & SPAWN_TOXINS)
+ G.toxins += amount
+ if(flag & SPAWN_OXYGEN)
+ G.oxygen += amount
+ if(flag & SPAWN_CO2)
+ G.carbon_dioxide += amount
+ if(flag & SPAWN_NITROGEN)
+ G.nitrogen += amount
+
+ if(flag & SPAWN_N2O)
+ var/datum/gas/sleeping_agent/T = new
+ T.moles += amount
+ G.trace_gases += T
+
+ if(flag & SPAWN_AIR)
+ G.oxygen += MOLES_O2STANDARD * amount
+ G.nitrogen += MOLES_N2STANDARD * amount
+
+ air.merge(G)
+ air_master.add_to_active(src, 0)
\ No newline at end of file
diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm
new file mode 100644
index 00000000000..e90fd803661
--- /dev/null
+++ b/code/LINDA/LINDA_turf_tile.dm
@@ -0,0 +1,462 @@
+
+
+turf
+ var/pressure_difference = 0
+ var/pressure_direction = 0
+ var/atmos_adjacent_turfs = 0
+ var/atmos_adjacent_turfs_amount = 0
+ var/atmos_supeconductivity = 0
+
+turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
+ del(giver)
+ return 0
+
+turf/return_air()
+ //Create gas mixture to hold data for passing
+ var/datum/gas_mixture/GM = new
+
+ GM.oxygen = oxygen
+ GM.carbon_dioxide = carbon_dioxide
+ GM.nitrogen = nitrogen
+ GM.toxins = toxins
+
+ GM.temperature = temperature
+
+ return GM
+
+turf/remove_air(amount as num)
+ var/datum/gas_mixture/GM = new
+
+ var/sum = oxygen + carbon_dioxide + nitrogen + toxins
+ if(sum>0)
+ GM.oxygen = (oxygen/sum)*amount
+ GM.carbon_dioxide = (carbon_dioxide/sum)*amount
+ GM.nitrogen = (nitrogen/sum)*amount
+ GM.toxins = (toxins/sum)*amount
+
+ GM.temperature = temperature
+
+ return GM
+
+
+turf/simulated
+ var/datum/excited_group/excited_group
+ var/excited = 0
+ var/recently_active = 0
+ var/datum/gas_mixture/air
+ var/archived_cycle = 0
+ var/current_cycle = 0
+
+ var/obj/effect/hotspot/active_hotspot
+
+ var/temperature_archived //USED ONLY FOR SOLIDS
+
+turf/simulated/New()
+ ..()
+
+ if(!blocks_air)
+ air = new
+
+ air.oxygen = oxygen
+ air.carbon_dioxide = carbon_dioxide
+ air.nitrogen = nitrogen
+ air.toxins = toxins
+
+ air.temperature = temperature
+
+turf/simulated/Destroy()
+ if(active_hotspot)
+ qdel(active_hotspot)
+ ..()
+
+turf/simulated/assume_air(datum/gas_mixture/giver)
+ if(!giver) return 0
+ var/datum/gas_mixture/receiver = air
+ if(istype(receiver))
+
+ air.merge(giver)
+
+ if(air.check_tile_graphic())
+ update_visuals(air)
+
+ return 1
+
+ else return ..()
+
+turf/simulated/proc/copy_air_with_tile(turf/simulated/T)
+ if(istype(T) && T.air && air)
+ air.copy_from(T.air)
+
+turf/simulated/proc/copy_air(datum/gas_mixture/copy)
+ if(air && copy)
+ air.copy_from(copy)
+
+turf/simulated/return_air()
+ if(air)
+ return air
+
+ else
+ return ..()
+
+turf/simulated/remove_air(amount as num)
+ if(air)
+ var/datum/gas_mixture/removed = null
+
+ removed = air.remove(amount)
+
+ if(air.check_tile_graphic())
+ update_visuals(air)
+
+ return removed
+
+ else
+ return ..()
+
+turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - model.temperature)
+ if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER))
+
+ var/heat = conduction_coefficient*delta_temperature* \
+ (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity))
+ temperature -= heat/heat_capacity
+
+turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - sharer.temperature_archived)
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity)
+
+ var/heat = conduction_coefficient*delta_temperature* \
+ (heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity))
+
+ temperature -= heat/heat_capacity
+ sharer.temperature += heat/sharer.heat_capacity
+
+
+
+
+
+
+
+
+/turf/simulated/proc/process_cell()
+ if(archived_cycle < air_master.current_cycle) //archive self if not already done
+ archive()
+ current_cycle = air_master.current_cycle
+
+ var/remove = 1 //set by non simulated turfs who are sharing with this turf
+
+ for(var/direction in cardinal)
+ if(!(atmos_adjacent_turfs & direction))
+ continue
+
+ var/turf/enemy_tile = get_step(src, direction)
+
+ if(istype(enemy_tile,/turf/simulated))
+ var/turf/simulated/enemy_simulated = enemy_tile
+
+ if(current_cycle > enemy_simulated.current_cycle)
+ enemy_simulated.archive()
+
+ /******************* GROUP HANDLING START *****************************************************************/
+
+ if(enemy_simulated.excited)
+ if(excited_group)
+ if(enemy_simulated.excited_group)
+ if(excited_group != enemy_simulated.excited_group)
+ excited_group.merge_groups(enemy_simulated.excited_group) //combine groups
+ share_air(enemy_simulated) //share
+ else
+ if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air))
+ excited_group.add_turf(enemy_simulated) //add enemy to our group
+ share_air(enemy_simulated) //share
+ else
+ if(enemy_simulated.excited_group)
+ if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air))
+ enemy_simulated.excited_group.add_turf(src) //join self to enemy group
+ share_air(enemy_simulated) //share
+ else
+ if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air))
+ var/datum/excited_group/EG = new //generate new group
+ EG.add_turf(src)
+ EG.add_turf(enemy_simulated)
+ share_air(enemy_simulated) //share
+ else
+ if(!air.compare(enemy_simulated.air)) //compare if
+ air_master.add_to_active(enemy_simulated) //excite enemy
+ if(excited_group)
+ excited_group.add_turf(enemy_simulated) //add enemy to group
+ else
+ var/datum/excited_group/EG = new //generate new group
+ EG.add_turf(src)
+ EG.add_turf(enemy_simulated)
+ share_air(enemy_simulated) //share
+
+ /******************* GROUP HANDLING FINISH *********************************************************************/
+
+ else
+ if(!air.check_turf(enemy_tile, atmos_adjacent_turfs_amount))
+ var/difference = air.mimic(enemy_tile,,atmos_adjacent_turfs_amount)
+ if(difference)
+ if(difference > 0)
+ consider_pressure_difference(enemy_tile, difference)
+ else
+ enemy_tile.consider_pressure_difference(src, difference)
+ remove = 0
+ if(excited_group)
+ last_share_check()
+
+ air.react()
+
+ if(air.check_tile_graphic())
+ update_visuals(air)
+
+ if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
+ hotspot_expose(air.temperature, CELL_VOLUME)
+ for(var/atom/movable/item in src)
+ item.temperature_expose(air, air.temperature, CELL_VOLUME)
+ temperature_expose(air, air.temperature, CELL_VOLUME)
+
+ if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION)
+ if(consider_superconductivity(starting = 1))
+ remove = 0
+
+ if(!excited_group && remove == 1)
+ air_master.remove_from_active(src)
+
+
+/turf/simulated/proc/archive()
+ if(air) //For open space like floors
+ air.archive()
+ temperature_archived = temperature
+ archived_cycle = air_master.current_cycle
+
+/turf/simulated/proc/update_visuals(datum/gas_mixture/model)
+ overlays.Cut()
+ var/siding_icon_state = return_siding_icon_state()
+ if(siding_icon_state)
+ overlays += image('icons/turf/floors.dmi',siding_icon_state)
+ switch(model.graphic)
+ if("plasma")
+ overlays.Add(plmaster)
+ if("sleeping_agent")
+ overlays.Add(slmaster)
+
+/turf/simulated/proc/share_air(var/turf/simulated/T)
+ if(T.current_cycle < current_cycle)
+ var/difference
+ difference = air.share(T.air, atmos_adjacent_turfs_amount)
+ if(difference)
+ if(difference > 0)
+ consider_pressure_difference(T, difference)
+ else
+ T.consider_pressure_difference(src, difference)
+ last_share_check()
+
+/turf/proc/consider_pressure_difference(var/turf/simulated/T, var/difference)
+ air_master.high_pressure_delta |= src
+ if(difference > pressure_difference)
+ pressure_direction = get_dir(src, T)
+ pressure_difference = difference
+
+/turf/simulated/proc/last_share_check()
+ if(air.last_share > MINIMUM_AIR_TO_SUSPEND)
+ excited_group.reset_cooldowns()
+
+/turf/proc/high_pressure_movements()
+ for(var/atom/movable/M in src)
+ M.experience_pressure_difference(pressure_difference, pressure_direction)
+
+
+
+
+atom/movable/var/pressure_resistance = 5
+atom/movable/var/last_forced_movement = 0
+
+atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
+ if(last_forced_movement >= air_master.current_cycle+2)
+ return 0
+ else if(!anchored)
+ if(pressure_difference > pressure_resistance)
+ last_forced_movement = air_master.current_cycle
+ spawn step(src, direction)
+ return 1
+
+
+
+
+/datum/excited_group
+ var/list/turf_list = list()
+ var/breakdown_cooldown = 0
+
+/datum/excited_group/New()
+ if(air_master)
+ air_master.excited_groups += src
+
+/datum/excited_group/proc/add_turf(var/turf/simulated/T)
+ turf_list += T
+ T.excited_group = src
+ T.recently_active = 1
+ reset_cooldowns()
+
+/datum/excited_group/proc/merge_groups(var/datum/excited_group/E)
+ if(turf_list.len > E.turf_list.len)
+ air_master.excited_groups -= E
+ for(var/turf/simulated/T in E.turf_list)
+ T.excited_group = src
+ turf_list += T
+ reset_cooldowns()
+ else
+ air_master.excited_groups -= src
+ for(var/turf/simulated/T in turf_list)
+ T.excited_group = E
+ E.turf_list += T
+ E.reset_cooldowns()
+
+/datum/excited_group/proc/reset_cooldowns()
+ breakdown_cooldown = 0
+
+/datum/excited_group/proc/self_breakdown()
+ var/datum/gas_mixture/A = new
+ var/datum/gas/sleeping_agent/S = new
+ A.trace_gases += S
+ for(var/turf/simulated/T in turf_list)
+ if(T == null || !istype(T)) return
+ A.oxygen += T.air.oxygen
+ A.carbon_dioxide+= T.air.carbon_dioxide
+ A.nitrogen += T.air.nitrogen
+ A.toxins += T.air.toxins
+
+ if(T.air.trace_gases.len)
+ for(var/datum/gas/N in T.air.trace_gases)
+ S.moles += N.moles
+
+ for(var/turf/simulated/T in turf_list)
+ T.air.oxygen = A.oxygen/turf_list.len
+ T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len
+ T.air.nitrogen = A.nitrogen/turf_list.len
+ T.air.toxins = A.toxins/turf_list.len
+
+ if(S.moles > 0)
+ if(T.air.trace_gases.len)
+ for(var/datum/gas/G in T.air.trace_gases)
+ G.moles = S.moles/turf_list.len
+ else
+ var/datum/gas/sleeping_agent/G = new
+ G.moles = S.moles/turf_list.len
+ T.air.trace_gases += G
+
+ if(T.air.check_tile_graphic())
+ T.update_visuals(T.air)
+
+
+/datum/excited_group/proc/dismantle()
+ for(var/turf/simulated/T in turf_list)
+ T.excited = 0
+ T.recently_active = 0
+ air_master.active_turfs -= T
+ air_master.excited_groups -= src
+
+/datum/excited_group/proc/garbage_collect()
+ for(var/turf/simulated/T in turf_list)
+ T.excited_group = null
+ turf_list.Cut()
+ air_master.excited_groups -= src
+
+
+
+
+
+
+
+
+
+
+turf/simulated/proc/super_conduct()
+ var/conductivity_directions = 0
+ if(blocks_air)
+ //Does not participate in air exchange, so will conduct heat across all four borders at this time
+ conductivity_directions = NORTH|SOUTH|EAST|WEST
+
+ if(archived_cycle < air_master.current_cycle)
+ archive()
+ else
+ //Does particate in air exchange so only consider directions not considered during process_cell()
+ for(var/direction in cardinal)
+ if(!(atmos_adjacent_turfs & direction) && !(atmos_supeconductivity & direction))
+ conductivity_directions += direction
+
+ if(conductivity_directions>0)
+ //Conduct with tiles around me
+ for(var/direction in cardinal)
+ if(conductivity_directions&direction)
+ var/turf/neighbor = get_step(src,direction)
+
+ if(!neighbor.thermal_conductivity)
+ continue
+
+ if(istype(neighbor, /turf/simulated)) //anything under this subtype will share in the exchange
+ var/turf/simulated/T = neighbor
+
+ if(T.archived_cycle < air_master.current_cycle)
+ T.archive()
+
+ if(T.air)
+ if(air) //Both tiles are open
+ air.temperature_share(T.air, WINDOW_HEAT_TRANSFER_COEFFICIENT)
+ else //Solid but neighbor is open
+ T.air.temperature_turf_share(src, T.thermal_conductivity)
+ air_master.add_to_active(T, 0)
+ else
+ if(air) //Open but neighbor is solid
+ air.temperature_turf_share(T, T.thermal_conductivity)
+ else //Both tiles are solid
+ share_temperature_mutual_solid(T, T.thermal_conductivity)
+ T.temperature_expose(null, T.temperature, null)
+
+ T.consider_superconductivity()
+
+ else
+ if(air) //Open
+ air.temperature_mimic(neighbor, neighbor.thermal_conductivity)
+ else
+ mimic_temperature_solid(neighbor, neighbor.thermal_conductivity)
+
+ radiate_to_spess()
+
+ //Conduct with air on my tile if I have it
+ if(air)
+ air.temperature_turf_share(src, thermal_conductivity)
+
+ //Make sure still hot enough to continue conducting heat
+ if(air.temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)
+ air_master.active_super_conductivity -= src
+ return 0
+
+ else
+ if(temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)
+ air_master.active_super_conductivity -= src
+ return 0
+
+turf/simulated/proc/consider_superconductivity(starting)
+ if(!thermal_conductivity)
+ return 0
+
+ if(air)
+ if(air.temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION))
+ return 0
+ if(air.heat_capacity() < M_CELL_WITH_RATIO) // Was: MOLES_CELLSTANDARD*0.1*0.05 Since there are no variables here we can make this a constant.
+ return 0
+ else
+ if(temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION))
+ return 0
+
+ air_master.active_super_conductivity |= src
+ return 1
+
+turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space
+ if(temperature > T0C) //Considering 0 degC as te break even point for radiation in and out
+ var/delta_temperature = (temperature_archived - 2.7) //hardcoded space temperature
+ if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER))
+
+ var/heat = thermal_conductivity*delta_temperature* \
+ (heat_capacity*700000/(heat_capacity+700000)) //700000 is the heat_capacity from a space turf, hardcoded here
+ temperature -= heat/heat_capacity
\ No newline at end of file
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 43f4808a076..c269df248b5 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -967,13 +967,11 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl
X.icon_state = old_icon_state1
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
- var/turf/simulated/ST = T
- if(istype(ST) && ST.zone)
- var/turf/simulated/SX = X
- if(!SX.air)
- SX.make_air()
- SX.air.copy_from(ST.zone.air)
- ST.zone.remove(ST)
+ // Give the new turf our air, if simulated
+ if(istype(X, /turf/simulated) && istype(T, /turf/simulated))
+ var/turf/simulated/sim = X
+ sim.copy_air_with_tile(T)
+
/* Quick visual fix for some weird shuttle corner artefacts when on transit space tiles */
if(direction && findtext(X.icon_state, "swall_s"))
@@ -1034,28 +1032,16 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl
refined_trg -= B
continue moving
- var/list/doors = new/list()
-
if(toupdate.len)
for(var/turf/simulated/T1 in toupdate)
- for(var/obj/machinery/door/D2 in T1)
- doors += D2
- /*if(T1.parent)
- air_master.groups_to_rebuild += T1.parent
- else
- air_master.tiles_to_update += T1*/
+ T1.CalculateAdjacentTurfs()
+ air_master.add_to_active(T1,1)
if(fromupdate.len)
for(var/turf/simulated/T2 in fromupdate)
- for(var/obj/machinery/door/D2 in T2)
- doors += D2
- /*if(T2.parent)
- air_master.groups_to_rebuild += T2.parent
- else
- air_master.tiles_to_update += T2*/
+ T2.CalculateAdjacentTurfs()
+ air_master.add_to_active(T2,1)
- for(var/obj/O in doors)
- O:update_nearby_tiles(1)
@@ -1199,22 +1185,10 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
-
- var/list/doors = new/list()
-
if(toupdate.len)
for(var/turf/simulated/T1 in toupdate)
- for(var/obj/machinery/door/D2 in T1)
- doors += D2
- /*if(T1.parent)
- air_master.groups_to_rebuild += T1.parent
- else
- air_master.tiles_to_update += T1*/
-
- for(var/obj/O in doors)
- O:update_nearby_tiles(1)
-
-
+ T1.CalculateAdjacentTurfs()
+ air_master.add_to_active(T1,1)
return copiedobjs
diff --git a/code/controllers/Processes/air.dm b/code/controllers/Processes/air.dm
index d8ca38844a0..3d45fa77b76 100644
--- a/code/controllers/Processes/air.dm
+++ b/code/controllers/Processes/air.dm
@@ -8,7 +8,7 @@
/datum/controller/process/air/doWork()
if(!air_processing_killed)
- if(!air_master.Tick()) //Runtimed.
+ if(!air_master.process()) //Runtimed.
air_master.failed_ticks++
if(air_master.failed_ticks > 5)
diff --git a/code/controllers/Processes/mob.dm b/code/controllers/Processes/mob.dm
index b3765b0cf9c..9eff6b9c007 100644
--- a/code/controllers/Processes/mob.dm
+++ b/code/controllers/Processes/mob.dm
@@ -5,6 +5,9 @@
name = "mob"
schedule_interval = 20 // every 2 seconds
updateQueueInstance = new
+ if(!mob_master)
+ mob_master = new
+ mob_master.Setup()
/datum/controller/process/mob/started()
..()
@@ -18,3 +21,17 @@
if(updateQueueInstance)
updateQueueInstance.init(mob_list, "Life")
updateQueueInstance.Run()
+ mob_master.process()
+
+var/global/datum/controller/mob_system/mob_master
+
+/datum/controller/mob_system
+ var/current_cycle
+ var/starttime
+
+/datum/controller/mob_system/proc/Setup()
+ world << "\red Mob ticker starting up."
+ starttime = world.timeofday
+
+/datum/controller/mob_system/proc/process()
+ current_cycle++
\ No newline at end of file
diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index 963e01b7260..c1f46efe5ad 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -152,13 +152,13 @@ datum/controller/game_controller/proc/process()
air_master.current_cycle++
// if(!air_master.tick()) Runtimed.
- if(!air_master.Tick())
+ if(!air_master.process())
air_master.failed_ticks++
if(air_master.failed_ticks > 5)
world << "RUNTIMES IN ATMOS TICKER. Killing air simulation!"
- world.log << "### ZAS SHUTDOWN"
- message_admins("ZASALERT: unable to run [air_master.tick_progress], shutting down!")
- log_admin("ZASALERT: unable run zone/process() -- [air_master.tick_progress]")
+ world.log << "### LINDA SHUTDOWN"
+ message_admins("LINDAALERT: unable to run [air_master.tick_progress], shutting down!")
+ log_admin("LINDAALERT: unable run zone/process() -- [air_master.tick_progress]")
air_processing_killed = 1
air_master.failed_ticks = 0
air_cost = (world.timeofday - timer) / 10
diff --git a/code/FEA/FEA_gas_mixture.dm b/code/datums/gas_mixture.dm
similarity index 93%
rename from code/FEA/FEA_gas_mixture.dm
rename to code/datums/gas_mixture.dm
index 6beeffc1870..7bdd0cf0abc 100644
--- a/code/FEA/FEA_gas_mixture.dm
+++ b/code/datums/gas_mixture.dm
@@ -1,933 +1,961 @@
-/*
-What are the archived variables for?
- Calculations are done using the archived variables with the results merged into the regular variables.
- This prevents race conditions that arise based on the order of tile processing.
-*/
-
-#define SPECIFIC_HEAT_TOXIN 200
-#define SPECIFIC_HEAT_AIR 20
-#define SPECIFIC_HEAT_CDO 30
-#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \
- (carbon_dioxide*SPECIFIC_HEAT_CDO + (oxygen+nitrogen)*SPECIFIC_HEAT_AIR + toxins*SPECIFIC_HEAT_TOXIN)
-
-#define MINIMUM_HEAT_CAPACITY 0.0003
-#define QUANTIZE(variable) (round(variable,0.0001))
-
-/datum/gas
- sleeping_agent
- specific_heat = 40
-
- oxygen_agent_b
- specific_heat = 300
-
- volatile_fuel
- specific_heat = 30
-
- var/moles = 0
- var/specific_heat = 0
-
- var/moles_archived = 0
-
-
-/datum/gas_mixture
- var/oxygen = 0
- var/carbon_dioxide = 0
- var/nitrogen = 0
- var/toxins = 0
-
- var/volume = CELL_VOLUME
-
- var/temperature = 0 //in Kelvin, use calculate_temperature() to modify
-
- var/group_multiplier = 1
- //Size of the group this gas_mixture is representing.
- //=1 for singletons
-
- var/graphic
-
- var/list/datum/gas/trace_gases = list()
-
-
- var/tmp/oxygen_archived
- var/tmp/carbon_dioxide_archived
- var/tmp/nitrogen_archived
- var/tmp/toxins_archived
-
- var/tmp/temperature_archived
-
- var/tmp/graphic_archived
- var/tmp/fuel_burnt = 0
-
- //PV=nRT - related procedures
- proc/heat_capacity()
- var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins)
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- heat_capacity += trace_gas.moles*trace_gas.specific_heat
- return heat_capacity
-
-
- proc/heat_capacity_archived()
- var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,toxins_archived)
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- heat_capacity_archived += trace_gas.moles_archived*trace_gas.specific_heat
- return heat_capacity_archived
-
-
- proc/total_moles()
- var/moles = oxygen + carbon_dioxide + nitrogen + toxins
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- moles += trace_gas.moles
- return moles
-
-
- proc/return_pressure()
- if(volume>0)
- return total_moles()*R_IDEAL_GAS_EQUATION*temperature/volume
- return 0
-
-
- proc/return_temperature()
- return temperature
-
-
- proc/return_volume()
- return max(0, volume)
-
-
- proc/thermal_energy()
- return temperature*heat_capacity()
-
-
- //Procedures used for very specific events
- proc/check_tile_graphic()
- //returns 1 if graphic changed
- graphic = null
- if(toxins > MOLES_PLASMA_VISIBLE)
- graphic = "plasma"
- else
- var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases
- if(sleeping_agent && (sleeping_agent.moles > 1))
- graphic = "sleeping_agent"
- else
- graphic = null
-
- return graphic != graphic_archived
-
- proc/react(atom/dump_location)
- var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network)
-
- if(trace_gases.len > 0)
- if(temperature > 900)
- if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY)
- var/datum/gas/oxygen_agent_b/trace_gas = locate(/datum/gas/oxygen_agent_b/) in trace_gases
- if(trace_gas)
- var/reaction_rate = min(carbon_dioxide*0.75, toxins*0.25, trace_gas.moles*0.05)
-
- carbon_dioxide -= reaction_rate
- oxygen += reaction_rate
-
- trace_gas.moles -= reaction_rate*0.05
-
- temperature -= (reaction_rate*20000)/heat_capacity()
-
- reacting = 1
-
- fuel_burnt = 0
- if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
- //world << "pre [temperature], [oxygen], [toxins]"
- if(fire() > 0)
- reacting = 1
- //world << "post [temperature], [oxygen], [toxins]"
-
- return reacting
-
- proc/fire()
- var/energy_released = 0
- var/old_heat_capacity = heat_capacity()
-
- var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel/) in trace_gases
- if(fuel_store) //General volatile gas burn
- var/burned_fuel = 0
-
- if(oxygen < fuel_store.moles)
- burned_fuel = oxygen
- fuel_store.moles -= burned_fuel
- oxygen = 0
- else
- burned_fuel = fuel_store.moles
- oxygen -= fuel_store.moles
- trace_gases -= fuel_store
- fuel_store = null
-
- energy_released += FIRE_CARBON_ENERGY_RELEASED * burned_fuel
- carbon_dioxide += burned_fuel
- fuel_burnt += burned_fuel
-
- //Handle plasma burning
- if(toxins > MINIMUM_HEAT_CAPACITY)
- var/plasma_burn_rate = 0
- var/oxygen_burn_rate = 0
- //more plasma released at higher temperatures
- var/temperature_scale
- if(temperature > PLASMA_UPPER_TEMPERATURE)
- temperature_scale = 1
- else
- temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE)
- if(temperature_scale > 0)
- oxygen_burn_rate = 1.4 - temperature_scale
- if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN)
- plasma_burn_rate = (toxins*temperature_scale)/4
- else
- plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4
- if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY)
- toxins -= plasma_burn_rate
- oxygen -= plasma_burn_rate*oxygen_burn_rate
- carbon_dioxide += plasma_burn_rate
-
- energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate)
-
- fuel_burnt += (plasma_burn_rate)*(1+oxygen_burn_rate)
-
- if(energy_released > 0)
- var/new_heat_capacity = heat_capacity()
- if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
- temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity
-
- return fuel_burnt
-
- proc/archive()
- //Update archived versions of variables
- //Returns: 1 in all cases
-
- proc/merge(datum/gas_mixture/giver)
- //Merges all air from giver into self. Deletes giver.
- //Returns: 1 on success (no failure cases yet)
-
- proc/check_then_merge(datum/gas_mixture/giver)
- //Similar to merge(...) but first checks to see if the amount of air assumed is small enough
- // that group processing is still accurate for source (aborts if not)
- //Returns: 1 on successful merge, 0 if the check failed
-
- proc/remove(amount)
- //Proportionally removes amount of gas from the gas_mixture
- //Returns: gas_mixture with the gases removed
-
- proc/remove_ratio(ratio)
- //Proportionally removes amount of gas from the gas_mixture
- //Returns: gas_mixture with the gases removed
-
- proc/subtract(datum/gas_mixture/right_side)
- //Subtracts right_side from air_mixture. Used to help turfs mingle
-
- proc/check_then_remove(amount)
- //Similar to remove(...) but first checks to see if the amount of air removed is small enough
- // that group processing is still accurate for source (aborts if not)
- //Returns: gas_mixture with the gases removed or null
-
- proc/copy_from(datum/gas_mixture/sample)
- //Copies variables from sample
-
- proc/share(datum/gas_mixture/sharer)
- //Performs air sharing calculations between two gas_mixtures assuming only 1 boundary length
- //Return: amount of gas exchanged (+ if sharer received)
-
- proc/mimic(turf/model)
- //Similar to share(...), except the model is not modified
- //Return: amount of gas exchanged
-
- proc/check_gas_mixture(datum/gas_mixture/sharer)
- //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if both checks pass
-
- proc/check_turf(turf/model)
- //Returns: 0 if self-check failed or 1 if check passes
-
- // check_me_then_share(datum/gas_mixture/sharer)
- //Similar to share(...) but first checks to see if amount of air moved is small enough
- // that group processing is still accurate for source (aborts if not)
- //Returns: 1 on successful share, 0 if the check failed
-
- // check_me_then_mimic(turf/model)
- //Similar to mimic(...) but first checks to see if amount of air moved is small enough
- // that group processing is still accurate (aborts if not)
- //Returns: 1 on successful mimic, 0 if the check failed
-
- // check_both_then_share(datum/gas_mixture/sharer)
- //Similar to check_me_then_share(...) but also checks to see if amount of air moved is small enough
- // that group processing is still accurate for the sharer (aborts if not)
- //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if successful share
-
-
- proc/temperature_mimic(turf/model, conduction_coefficient)
-
- proc/temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
-
- proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
-
-
- proc/check_me_then_temperature_mimic(turf/model, conduction_coefficient)
-
- proc/check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
-
- proc/check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
-
- proc/check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
-
- proc/compare(datum/gas_mixture/sample)
- //Compares sample to self to see if within acceptable ranges that group processing may be enabled
-
- archive()
- oxygen_archived = oxygen
- carbon_dioxide_archived = carbon_dioxide
- nitrogen_archived = nitrogen
- toxins_archived = toxins
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- trace_gas.moles_archived = trace_gas.moles
-
- temperature_archived = temperature
-
- graphic_archived = graphic
-
- return 1
-
- check_then_merge(datum/gas_mixture/giver)
- if(!giver)
- return 0
- if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((giver.toxins > MINIMUM_AIR_TO_SUSPEND) && (giver.toxins >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND)))
- return 0
- if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
- return 0
-
- if(giver.trace_gases.len)
- for(var/datum/gas/trace_gas in giver.trace_gases)
- var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
- if((trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) && (!corresponding || (trace_gas.moles >= corresponding.moles*MINIMUM_AIR_RATIO_TO_SUSPEND)))
- return 0
-
- return merge(giver)
-
- merge(datum/gas_mixture/giver)
- if(!giver)
- return 0
-
- if(abs(temperature-giver.temperature)>MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/self_heat_capacity = heat_capacity()*group_multiplier
- var/giver_heat_capacity = giver.heat_capacity()*giver.group_multiplier
- var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity
- if(combined_heat_capacity != 0)
- temperature = (giver.temperature*giver_heat_capacity + temperature*self_heat_capacity)/combined_heat_capacity
-
- if((group_multiplier>1)||(giver.group_multiplier>1))
- oxygen += giver.oxygen*giver.group_multiplier/group_multiplier
- carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier
- nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier
- toxins += giver.toxins*giver.group_multiplier/group_multiplier
- else
- oxygen += giver.oxygen
- carbon_dioxide += giver.carbon_dioxide
- nitrogen += giver.nitrogen
- toxins += giver.toxins
-
- if(giver.trace_gases.len)
- for(var/datum/gas/trace_gas in giver.trace_gases)
- var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
- if(!corresponding)
- corresponding = new trace_gas.type()
- trace_gases += corresponding
- corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier
-
- // del(giver)
- return 1
-
- remove(amount)
-
- var/sum = total_moles()
- amount = min(amount,sum) //Can not take more air than tile has!
- if(amount <= 0)
- return null
-
- var/datum/gas_mixture/removed = new
-
-
- removed.oxygen = QUANTIZE((oxygen/sum)*amount)
- removed.nitrogen = QUANTIZE((nitrogen/sum)*amount)
- removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount)
- removed.toxins = QUANTIZE((toxins/sum)*amount)
-
- oxygen -= removed.oxygen/group_multiplier
- nitrogen -= removed.nitrogen/group_multiplier
- carbon_dioxide -= removed.carbon_dioxide/group_multiplier
- toxins -= removed.toxins/group_multiplier
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- var/datum/gas/corresponding = new trace_gas.type()
- removed.trace_gases += corresponding
-
- corresponding.moles = (trace_gas.moles/sum)*amount
- trace_gas.moles -= corresponding.moles/group_multiplier
-
- removed.temperature = temperature
-
- return removed
-
- remove_ratio(ratio)
-
- if(ratio <= 0)
- return null
-
- ratio = min(ratio, 1)
-
- var/datum/gas_mixture/removed = new
-
- removed.oxygen = QUANTIZE(oxygen*ratio)
- removed.nitrogen = QUANTIZE(nitrogen*ratio)
- removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio)
- removed.toxins = QUANTIZE(toxins*ratio)
-
- oxygen -= removed.oxygen/group_multiplier
- nitrogen -= removed.nitrogen/group_multiplier
- carbon_dioxide -= removed.carbon_dioxide/group_multiplier
- toxins -= removed.toxins/group_multiplier
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- var/datum/gas/corresponding = new trace_gas.type()
- removed.trace_gases += corresponding
-
- corresponding.moles = trace_gas.moles*ratio
- trace_gas.moles -= corresponding.moles/group_multiplier
-
- removed.temperature = temperature
-
- return removed
-
- check_then_remove(amount)
-
- //Since it is all proportional, the check may be done on the gas as a whole
- var/sum = total_moles()
- amount = min(amount,sum) //Can not take more air than tile has!
-
- if((amount > MINIMUM_AIR_RATIO_TO_SUSPEND) && (amount > sum*MINIMUM_AIR_RATIO_TO_SUSPEND))
- return 0
-
- return remove(amount)
-
- copy_from(datum/gas_mixture/sample)
- oxygen = sample.oxygen
- carbon_dioxide = sample.carbon_dioxide
- nitrogen = sample.nitrogen
- toxins = sample.toxins
-
- trace_gases.len=null
- if(sample.trace_gases.len > 0)
- for(var/datum/gas/trace_gas in sample.trace_gases)
- var/datum/gas/corresponding = new trace_gas.type()
- trace_gases += corresponding
-
- corresponding.moles = trace_gas.moles
-
- temperature = sample.temperature
-
- return 1
-
- subtract(datum/gas_mixture/right_side)
- oxygen -= right_side.oxygen
- carbon_dioxide -= right_side.carbon_dioxide
- nitrogen -= right_side.nitrogen
- toxins -= right_side.toxins
-
- if((trace_gases.len > 0)||(right_side.trace_gases.len > 0))
- for(var/datum/gas/trace_gas in right_side.trace_gases)
- var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
- if(!corresponding)
- corresponding = new trace_gas.type()
- trace_gases += corresponding
-
- corresponding.moles -= trace_gas.moles
-
- return 1
-
- check_gas_mixture(datum/gas_mixture/sharer)
- if(!sharer) return 0
- var/delta_oxygen = (oxygen_archived - sharer.oxygen_archived)/5
- var/delta_carbon_dioxide = (carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5
- var/delta_nitrogen = (nitrogen_archived - sharer.nitrogen_archived)/5
- var/delta_toxins = (toxins_archived - sharer.toxins_archived)/5
-
- var/delta_temperature = (temperature_archived - sharer.temperature_archived)
-
- if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
- return 0
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
- return 0
-
- if(sharer.trace_gases.len)
- for(var/datum/gas/trace_gas in sharer.trace_gases)
- if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
- var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
- if(corresponding)
- if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4)
- return 0
- else
- return 0
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
- if(!locate(trace_gas.type) in sharer.trace_gases)
- return 0
-
- if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= sharer.toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
- return -1
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
- var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases
- if(corresponding)
- if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4)
- return -1
- else
- return -1
-
- return 1
-
- check_turf(turf/model)
- var/delta_oxygen = (oxygen_archived - model.oxygen)/5
- var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/5
- var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/5
- var/delta_toxins = (toxins_archived - model.toxins)/5
-
- var/delta_temperature = (temperature_archived - model.temperature)
-
- if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
- || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
- return 0
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
- return 0
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
- return 0
-
- return 1
-
- share(datum/gas_mixture/sharer)
- if(!sharer) return 0
- var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/5
- var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5
- var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/5
- var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/5
-
- var/delta_temperature = (temperature_archived - sharer.temperature_archived)
-
- var/old_self_heat_capacity = 0
- var/old_sharer_heat_capacity = 0
-
- var/heat_capacity_self_to_sharer = 0
- var/heat_capacity_sharer_to_self = 0
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
-
- var/delta_air = delta_oxygen+delta_nitrogen
- if(delta_air)
- var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air
- if(delta_air > 0)
- heat_capacity_self_to_sharer += air_heat_capacity
- else
- heat_capacity_sharer_to_self -= air_heat_capacity
-
- if(delta_carbon_dioxide)
- var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide
- if(delta_carbon_dioxide > 0)
- heat_capacity_self_to_sharer += carbon_dioxide_heat_capacity
- else
- heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity
-
- if(delta_toxins)
- var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins
- if(delta_toxins > 0)
- heat_capacity_self_to_sharer += toxins_heat_capacity
- else
- heat_capacity_sharer_to_self -= toxins_heat_capacity
-
- old_self_heat_capacity = heat_capacity()*group_multiplier
- old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier
-
- oxygen -= delta_oxygen/group_multiplier
- sharer.oxygen += delta_oxygen/sharer.group_multiplier
-
- carbon_dioxide -= delta_carbon_dioxide/group_multiplier
- sharer.carbon_dioxide += delta_carbon_dioxide/sharer.group_multiplier
-
- nitrogen -= delta_nitrogen/group_multiplier
- sharer.nitrogen += delta_nitrogen/sharer.group_multiplier
-
- toxins -= delta_toxins/group_multiplier
- sharer.toxins += delta_toxins/sharer.group_multiplier
-
- var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins)
-
- var/list/trace_types_considered = list()
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
-
- var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases
- var/delta = 0
-
- if(corresponding)
- delta = QUANTIZE(trace_gas.moles_archived - corresponding.moles_archived)/5
- else
- corresponding = new trace_gas.type()
- sharer.trace_gases += corresponding
-
- delta = trace_gas.moles_archived/5
-
- trace_gas.moles -= delta/group_multiplier
- corresponding.moles += delta/sharer.group_multiplier
-
- if(delta)
- var/individual_heat_capacity = trace_gas.specific_heat*delta
- if(delta > 0)
- heat_capacity_self_to_sharer += individual_heat_capacity
- else
- heat_capacity_sharer_to_self -= individual_heat_capacity
-
- moved_moles += delta
-
- trace_types_considered += trace_gas.type
-
-
- if(sharer.trace_gases.len)
- for(var/datum/gas/trace_gas in sharer.trace_gases)
- if(trace_gas.type in trace_types_considered) continue
- else
- var/datum/gas/corresponding
- var/delta = 0
-
- corresponding = new trace_gas.type()
- trace_gases += corresponding
-
- delta = trace_gas.moles_archived/5
-
- trace_gas.moles -= delta/sharer.group_multiplier
- corresponding.moles += delta/group_multiplier
-
- //Guaranteed transfer from sharer to self
- var/individual_heat_capacity = trace_gas.specific_heat*delta
- heat_capacity_sharer_to_self += individual_heat_capacity
-
- moved_moles += -delta
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/new_self_heat_capacity = old_self_heat_capacity + heat_capacity_sharer_to_self - heat_capacity_self_to_sharer
- var/new_sharer_heat_capacity = old_sharer_heat_capacity + heat_capacity_self_to_sharer - heat_capacity_sharer_to_self
-
- if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY)
- temperature = (old_self_heat_capacity*temperature - heat_capacity_self_to_sharer*temperature_archived + heat_capacity_sharer_to_self*sharer.temperature_archived)/new_self_heat_capacity
-
- if(new_sharer_heat_capacity > MINIMUM_HEAT_CAPACITY)
- sharer.temperature = (old_sharer_heat_capacity*sharer.temperature-heat_capacity_sharer_to_self*sharer.temperature_archived + heat_capacity_self_to_sharer*temperature_archived)/new_sharer_heat_capacity
-
- if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY)
- if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity
- temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT)
-
- if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE)
- var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles)
- return delta_pressure*R_IDEAL_GAS_EQUATION/volume
-
- else
- return 0
-
- mimic(turf/model, border_multiplier)
- var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/5
- var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/5
- var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/5
- var/delta_toxins = QUANTIZE(toxins_archived - model.toxins)/5
-
- var/delta_temperature = (temperature_archived - model.temperature)
-
- var/heat_transferred = 0
- var/old_self_heat_capacity = 0
- var/heat_capacity_transferred = 0
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
-
- var/delta_air = delta_oxygen+delta_nitrogen
- if(delta_air)
- var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air
- heat_transferred -= air_heat_capacity*model.temperature
- heat_capacity_transferred -= air_heat_capacity
-
- if(delta_carbon_dioxide)
- var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide
- heat_transferred -= carbon_dioxide_heat_capacity*model.temperature
- heat_capacity_transferred -= carbon_dioxide_heat_capacity
-
- if(delta_toxins)
- var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins
- heat_transferred -= toxins_heat_capacity*model.temperature
- heat_capacity_transferred -= toxins_heat_capacity
-
- old_self_heat_capacity = heat_capacity()*group_multiplier
-
- if(border_multiplier)
- oxygen -= delta_oxygen*border_multiplier/group_multiplier
- carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier
- nitrogen -= delta_nitrogen*border_multiplier/group_multiplier
- toxins -= delta_toxins*border_multiplier/group_multiplier
- else
- oxygen -= delta_oxygen/group_multiplier
- carbon_dioxide -= delta_carbon_dioxide/group_multiplier
- nitrogen -= delta_nitrogen/group_multiplier
- toxins -= delta_toxins/group_multiplier
-
- var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins)
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- var/delta = 0
-
- delta = trace_gas.moles_archived/5
-
- if(border_multiplier)
- trace_gas.moles -= delta*border_multiplier/group_multiplier
- else
- trace_gas.moles -= delta/group_multiplier
-
- var/heat_cap_transferred = delta*trace_gas.specific_heat
- heat_transferred += heat_cap_transferred*temperature_archived
- heat_capacity_transferred += heat_cap_transferred
- moved_moles += delta
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/new_self_heat_capacity = old_self_heat_capacity - heat_capacity_transferred
- if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY)
- if(border_multiplier)
- temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity
- else
- temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity
-
- temperature_mimic(model, model.thermal_conductivity, border_multiplier)
-
- if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE)
- var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.toxins)
- return delta_pressure*R_IDEAL_GAS_EQUATION/volume
- else
- return 0
-
- check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
- var/delta_temperature = (temperature_archived - sharer.temperature_archived)
-
- var/self_heat_capacity = heat_capacity_archived()
- var/sharer_heat_capacity = sharer.heat_capacity_archived()
-
- var/self_temperature_delta = 0
- var/sharer_temperature_delta = 0
-
- if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity))
-
- self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
- sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier)
- else
- return 1
-
- if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
- && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
- return 0
-
- if((abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
- && (abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*sharer.temperature_archived))
- return -1
-
- temperature += self_temperature_delta
- sharer.temperature += sharer_temperature_delta
-
- return 1
- //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency
-
- check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
- var/delta_temperature = (temperature_archived - sharer.temperature_archived)
-
- var/self_heat_capacity = heat_capacity_archived()
- var/sharer_heat_capacity = sharer.heat_capacity_archived()
-
- var/self_temperature_delta = 0
- var/sharer_temperature_delta = 0
-
- if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity))
-
- self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
- sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier)
- else
- return 1
-
- if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
- && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
- return 0
-
- temperature += self_temperature_delta
- sharer.temperature += sharer_temperature_delta
-
- return 1
- //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency
-
- check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
- var/delta_temperature = (temperature_archived - sharer.temperature)
-
- var/self_temperature_delta = 0
- var/sharer_temperature_delta = 0
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/self_heat_capacity = heat_capacity_archived()
-
- if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity))
-
- self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
- sharer_temperature_delta = heat/sharer.heat_capacity
- else
- return 1
-
- if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
- && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
- return 0
-
- temperature += self_temperature_delta
- sharer.temperature += sharer_temperature_delta
-
- return 1
- //Logic integrated from: temperature_turf_share(sharer, conduction_coefficient) for efficiency
-
- check_me_then_temperature_mimic(turf/model, conduction_coefficient)
- var/delta_temperature = (temperature_archived - model.temperature)
- var/self_temperature_delta = 0
-
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/self_heat_capacity = heat_capacity_archived()
-
- if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity))
-
- self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
-
- if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
- && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
- return 0
-
- temperature += self_temperature_delta
-
- return 1
- //Logic integrated from: temperature_mimic(model, conduction_coefficient) for efficiency
-
- temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
-
- var/delta_temperature = (temperature_archived - sharer.temperature_archived)
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/self_heat_capacity = heat_capacity_archived()
- var/sharer_heat_capacity = sharer.heat_capacity_archived()
-
- if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity))
-
- temperature -= heat/(self_heat_capacity*group_multiplier)
- sharer.temperature += heat/(sharer_heat_capacity*sharer.group_multiplier)
-
- temperature_mimic(turf/model, conduction_coefficient, border_multiplier)
- var/delta_temperature = (temperature - model.temperature)
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/self_heat_capacity = heat_capacity()//_archived()
-
- if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity))
-
- if(border_multiplier)
- temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier)
- else
- temperature -= heat/(self_heat_capacity*group_multiplier)
-
- temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
- var/delta_temperature = (temperature_archived - sharer.temperature)
- if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
- var/self_heat_capacity = heat_capacity()
-
- if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
- var/heat = conduction_coefficient*delta_temperature* \
- (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity))
-
- temperature -= heat/(self_heat_capacity*group_multiplier)
- sharer.temperature += heat/sharer.heat_capacity
-
- compare(datum/gas_mixture/sample)
- if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \
- ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen)))
- return 0
- if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \
- ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen)))
- return 0
- if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \
- ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide)))
- return 0
- if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \
- ((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins)))
- return 0
-
- if(total_moles() > MINIMUM_AIR_TO_SUSPEND)
- if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \
- ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature)))
- //world << "temp fail [temperature] & [sample.temperature]"
- return 0
-
- if(sample.trace_gases.len)
- for(var/datum/gas/trace_gas in sample.trace_gases)
- if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND)
- var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
- if(corresponding)
- if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \
- ((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles)))
- return 0
- else
- return 0
-
- if(trace_gases.len)
- for(var/datum/gas/trace_gas in trace_gases)
- if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND)
- var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases
- if(corresponding)
- if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \
- ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles)))
- return 0
- else
- return 0
+ /*
+What are the archived variables for?
+ Calculations are done using the archived variables with the results merged into the regular variables.
+ This prevents race conditions that arise based on the order of tile processing.
+*/
+
+#define SPECIFIC_HEAT_TOXIN 200
+#define SPECIFIC_HEAT_AIR 20
+#define SPECIFIC_HEAT_CDO 30
+#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \
+ (carbon_dioxide*SPECIFIC_HEAT_CDO + (oxygen+nitrogen)*SPECIFIC_HEAT_AIR + toxins*SPECIFIC_HEAT_TOXIN)
+
+#define MINIMUM_HEAT_CAPACITY 0.0003
+#define QUANTIZE(variable) (round(variable,0.0001))
+
+/datum/gas
+ sleeping_agent
+ specific_heat = 40
+
+ oxygen_agent_b
+ specific_heat = 300
+
+ volatile_fuel
+ specific_heat = 30
+
+ var/moles = 0
+ var/specific_heat = 0
+
+ var/moles_archived = 0
+
+
+/datum/gas_mixture
+ var/oxygen = 0
+ var/carbon_dioxide = 0
+ var/nitrogen = 0
+ var/toxins = 0
+
+ var/volume = CELL_VOLUME
+
+ var/temperature = 0 //in Kelvin, use calculate_temperature() to modify
+
+ var/last_share
+
+ var/group_multiplier = 1
+ //Size of the group this gas_mixture is representing.
+ //=1 for singletons
+
+ var/graphic
+
+ var/list/datum/gas/trace_gases = list()
+
+
+ var/tmp/oxygen_archived
+ var/tmp/carbon_dioxide_archived
+ var/tmp/nitrogen_archived
+ var/tmp/toxins_archived
+
+ var/tmp/temperature_archived
+
+ var/tmp/graphic_archived
+ var/tmp/fuel_burnt = 0
+
+ //PV=nRT - related procedures
+ proc/heat_capacity()
+ var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins)
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ heat_capacity += trace_gas.moles*trace_gas.specific_heat
+ return heat_capacity
+
+
+ proc/heat_capacity_archived()
+ var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,toxins_archived)
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ heat_capacity_archived += trace_gas.moles_archived*trace_gas.specific_heat
+ return heat_capacity_archived
+
+
+ proc/total_moles()
+ var/moles = oxygen + carbon_dioxide + nitrogen + toxins
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ moles += trace_gas.moles
+ return moles
+
+
+ proc/return_pressure()
+ if(volume>0)
+ return total_moles()*R_IDEAL_GAS_EQUATION*temperature/volume
+ return 0
+
+
+ proc/return_temperature()
+ return temperature
+
+
+ proc/return_volume()
+ return max(0, volume)
+
+
+ proc/thermal_energy()
+ return temperature*heat_capacity()
+
+
+ //Procedures used for very specific events
+ proc/check_tile_graphic()
+ //returns 1 if graphic changed
+ graphic = null
+ if(toxins > MOLES_PLASMA_VISIBLE)
+ graphic = "plasma"
+ else
+ var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases
+ if(sleeping_agent && (sleeping_agent.moles > 1))
+ graphic = "sleeping_agent"
+ else
+ graphic = null
+
+ return graphic != graphic_archived
+
+ proc/react(atom/dump_location)
+ var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network)
+
+ if(trace_gases.len > 0)
+ if(temperature > 900)
+ if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY)
+ var/datum/gas/oxygen_agent_b/trace_gas = locate(/datum/gas/oxygen_agent_b/) in trace_gases
+ if(trace_gas)
+ var/reaction_rate = min(carbon_dioxide*0.75, toxins*0.25, trace_gas.moles*0.05)
+
+ carbon_dioxide -= reaction_rate
+ oxygen += reaction_rate
+
+ trace_gas.moles -= reaction_rate*0.05
+
+ temperature -= (reaction_rate*20000)/heat_capacity()
+
+ reacting = 1
+
+ fuel_burnt = 0
+ if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
+ //world << "pre [temperature], [oxygen], [toxins]"
+ if(fire() > 0)
+ reacting = 1
+ //world << "post [temperature], [oxygen], [toxins]"
+
+ return reacting
+
+ proc/fire()
+ var/energy_released = 0
+ var/old_heat_capacity = heat_capacity()
+
+ var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel/) in trace_gases
+ if(fuel_store) //General volatile gas burn
+ var/burned_fuel = 0
+
+ if(oxygen < fuel_store.moles)
+ burned_fuel = oxygen
+ fuel_store.moles -= burned_fuel
+ oxygen = 0
+ else
+ burned_fuel = fuel_store.moles
+ oxygen -= fuel_store.moles
+ trace_gases -= fuel_store
+ fuel_store = null
+
+ energy_released += FIRE_CARBON_ENERGY_RELEASED * burned_fuel
+ carbon_dioxide += burned_fuel
+ fuel_burnt += burned_fuel
+
+ //Handle plasma burning
+ if(toxins > MINIMUM_HEAT_CAPACITY)
+ var/plasma_burn_rate = 0
+ var/oxygen_burn_rate = 0
+ //more plasma released at higher temperatures
+ var/temperature_scale
+ if(temperature > PLASMA_UPPER_TEMPERATURE)
+ temperature_scale = 1
+ else
+ temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE)
+ if(temperature_scale > 0)
+ oxygen_burn_rate = 1.4 - temperature_scale
+ if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN)
+ plasma_burn_rate = (toxins*temperature_scale)/4
+ else
+ plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4
+ if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY)
+ toxins -= plasma_burn_rate
+ oxygen -= plasma_burn_rate*oxygen_burn_rate
+ carbon_dioxide += plasma_burn_rate
+
+ energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate)
+
+ fuel_burnt += (plasma_burn_rate)*(1+oxygen_burn_rate)
+
+ if(energy_released > 0)
+ var/new_heat_capacity = heat_capacity()
+ if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity
+
+ return fuel_burnt
+
+ proc/archive()
+ //Update archived versions of variables
+ //Returns: 1 in all cases
+
+ proc/merge(datum/gas_mixture/giver)
+ //Merges all air from giver into self. Deletes giver.
+ //Returns: 1 on success (no failure cases yet)
+
+ proc/check_then_merge(datum/gas_mixture/giver)
+ //Similar to merge(...) but first checks to see if the amount of air assumed is small enough
+ // that group processing is still accurate for source (aborts if not)
+ //Returns: 1 on successful merge, 0 if the check failed
+
+ proc/remove(amount)
+ //Proportionally removes amount of gas from the gas_mixture
+ //Returns: gas_mixture with the gases removed
+
+ proc/remove_ratio(ratio)
+ //Proportionally removes amount of gas from the gas_mixture
+ //Returns: gas_mixture with the gases removed
+
+ proc/subtract(datum/gas_mixture/right_side)
+ //Subtracts right_side from air_mixture. Used to help turfs mingle
+
+ proc/check_then_remove(amount)
+ //Similar to remove(...) but first checks to see if the amount of air removed is small enough
+ // that group processing is still accurate for source (aborts if not)
+ //Returns: gas_mixture with the gases removed or null
+
+ proc/copy_from(datum/gas_mixture/sample)
+ //Copies variables from sample
+
+ proc/share(datum/gas_mixture/sharer)
+ //Performs air sharing calculations between two gas_mixtures assuming only 1 boundary length
+ //Return: amount of gas exchanged (+ if sharer received)
+
+ proc/mimic(turf/model)
+ //Similar to share(...), except the model is not modified
+ //Return: amount of gas exchanged
+
+ proc/check_gas_mixture(datum/gas_mixture/sharer)
+ //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if both checks pass
+
+ proc/check_turf(turf/model)
+ //Returns: 0 if self-check failed or 1 if check passes
+
+ // check_me_then_share(datum/gas_mixture/sharer)
+ //Similar to share(...) but first checks to see if amount of air moved is small enough
+ // that group processing is still accurate for source (aborts if not)
+ //Returns: 1 on successful share, 0 if the check failed
+
+ // check_me_then_mimic(turf/model)
+ //Similar to mimic(...) but first checks to see if amount of air moved is small enough
+ // that group processing is still accurate (aborts if not)
+ //Returns: 1 on successful mimic, 0 if the check failed
+
+ // check_both_then_share(datum/gas_mixture/sharer)
+ //Similar to check_me_then_share(...) but also checks to see if amount of air moved is small enough
+ // that group processing is still accurate for the sharer (aborts if not)
+ //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if successful share
+
+
+ proc/temperature_mimic(turf/model, conduction_coefficient)
+
+ proc/temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
+
+ proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
+
+
+ proc/check_me_then_temperature_mimic(turf/model, conduction_coefficient)
+
+ proc/check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
+
+ proc/check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
+
+ proc/check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
+
+ proc/compare(datum/gas_mixture/sample)
+ //Compares sample to self to see if within acceptable ranges that group processing may be enabled
+
+ archive()
+ oxygen_archived = oxygen
+ carbon_dioxide_archived = carbon_dioxide
+ nitrogen_archived = nitrogen
+ toxins_archived = toxins
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ trace_gas.moles_archived = trace_gas.moles
+
+ temperature_archived = temperature
+
+ graphic_archived = graphic
+
+ return 1
+
+ check_then_merge(datum/gas_mixture/giver)
+ if(!giver)
+ return 0
+ if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((giver.toxins > MINIMUM_AIR_TO_SUSPEND) && (giver.toxins >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND)))
+ return 0
+ if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
+ return 0
+
+ if(giver.trace_gases.len)
+ for(var/datum/gas/trace_gas in giver.trace_gases)
+ var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
+ if((trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) && (!corresponding || (trace_gas.moles >= corresponding.moles*MINIMUM_AIR_RATIO_TO_SUSPEND)))
+ return 0
+
+ return merge(giver)
+
+ merge(datum/gas_mixture/giver)
+ if(!giver)
+ return 0
+
+ if(abs(temperature-giver.temperature)>MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/self_heat_capacity = heat_capacity()*group_multiplier
+ var/giver_heat_capacity = giver.heat_capacity()*giver.group_multiplier
+ var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity
+ if(combined_heat_capacity != 0)
+ temperature = (giver.temperature*giver_heat_capacity + temperature*self_heat_capacity)/combined_heat_capacity
+
+ if((group_multiplier>1)||(giver.group_multiplier>1))
+ oxygen += giver.oxygen*giver.group_multiplier/group_multiplier
+ carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier
+ nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier
+ toxins += giver.toxins*giver.group_multiplier/group_multiplier
+ else
+ oxygen += giver.oxygen
+ carbon_dioxide += giver.carbon_dioxide
+ nitrogen += giver.nitrogen
+ toxins += giver.toxins
+
+ if(giver.trace_gases.len)
+ for(var/datum/gas/trace_gas in giver.trace_gases)
+ var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
+ if(!corresponding)
+ corresponding = new trace_gas.type()
+ trace_gases += corresponding
+ corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier
+
+ // del(giver)
+ return 1
+
+ remove(amount)
+
+ var/sum = total_moles()
+ amount = min(amount,sum) //Can not take more air than tile has!
+ if(amount <= 0)
+ return null
+
+ var/datum/gas_mixture/removed = new
+
+
+ removed.oxygen = QUANTIZE((oxygen/sum)*amount)
+ removed.nitrogen = QUANTIZE((nitrogen/sum)*amount)
+ removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount)
+ removed.toxins = QUANTIZE((toxins/sum)*amount)
+
+ oxygen -= removed.oxygen/group_multiplier
+ nitrogen -= removed.nitrogen/group_multiplier
+ carbon_dioxide -= removed.carbon_dioxide/group_multiplier
+ toxins -= removed.toxins/group_multiplier
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ var/datum/gas/corresponding = new trace_gas.type()
+ removed.trace_gases += corresponding
+
+ corresponding.moles = (trace_gas.moles/sum)*amount
+ trace_gas.moles -= corresponding.moles/group_multiplier
+
+ removed.temperature = temperature
+
+ return removed
+
+ remove_ratio(ratio)
+
+ if(ratio <= 0)
+ return null
+
+ ratio = min(ratio, 1)
+
+ var/datum/gas_mixture/removed = new
+
+ removed.oxygen = QUANTIZE(oxygen*ratio)
+ removed.nitrogen = QUANTIZE(nitrogen*ratio)
+ removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio)
+ removed.toxins = QUANTIZE(toxins*ratio)
+
+ oxygen -= removed.oxygen/group_multiplier
+ nitrogen -= removed.nitrogen/group_multiplier
+ carbon_dioxide -= removed.carbon_dioxide/group_multiplier
+ toxins -= removed.toxins/group_multiplier
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ var/datum/gas/corresponding = new trace_gas.type()
+ removed.trace_gases += corresponding
+
+ corresponding.moles = trace_gas.moles*ratio
+ trace_gas.moles -= corresponding.moles/group_multiplier
+
+ removed.temperature = temperature
+
+ return removed
+
+ check_then_remove(amount)
+
+ //Since it is all proportional, the check may be done on the gas as a whole
+ var/sum = total_moles()
+ amount = min(amount,sum) //Can not take more air than tile has!
+
+ if((amount > MINIMUM_AIR_RATIO_TO_SUSPEND) && (amount > sum*MINIMUM_AIR_RATIO_TO_SUSPEND))
+ return 0
+
+ return remove(amount)
+
+ copy_from(datum/gas_mixture/sample)
+ oxygen = sample.oxygen
+ carbon_dioxide = sample.carbon_dioxide
+ nitrogen = sample.nitrogen
+ toxins = sample.toxins
+
+ trace_gases.len=null
+ if(sample.trace_gases.len > 0)
+ for(var/datum/gas/trace_gas in sample.trace_gases)
+ var/datum/gas/corresponding = new trace_gas.type()
+ trace_gases += corresponding
+
+ corresponding.moles = trace_gas.moles
+
+ temperature = sample.temperature
+
+ return 1
+
+ subtract(datum/gas_mixture/right_side)
+ oxygen -= right_side.oxygen
+ carbon_dioxide -= right_side.carbon_dioxide
+ nitrogen -= right_side.nitrogen
+ toxins -= right_side.toxins
+
+ if((trace_gases.len > 0)||(right_side.trace_gases.len > 0))
+ for(var/datum/gas/trace_gas in right_side.trace_gases)
+ var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
+ if(!corresponding)
+ corresponding = new trace_gas.type()
+ trace_gases += corresponding
+
+ corresponding.moles -= trace_gas.moles
+
+ return 1
+
+ check_gas_mixture(datum/gas_mixture/sharer)
+ if(!sharer) return 0
+ var/delta_oxygen = (oxygen_archived - sharer.oxygen_archived)/5
+ var/delta_carbon_dioxide = (carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5
+ var/delta_nitrogen = (nitrogen_archived - sharer.nitrogen_archived)/5
+ var/delta_toxins = (toxins_archived - sharer.toxins_archived)/5
+
+ var/delta_temperature = (temperature_archived - sharer.temperature_archived)
+
+ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
+ return 0
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
+ return 0
+
+ if(sharer.trace_gases.len)
+ for(var/datum/gas/trace_gas in sharer.trace_gases)
+ if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
+ var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
+ if(corresponding)
+ if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4)
+ return 0
+ else
+ return 0
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
+ if(!locate(trace_gas.type) in sharer.trace_gases)
+ return 0
+
+ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= sharer.toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
+ return -1
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
+ var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases
+ if(corresponding)
+ if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4)
+ return -1
+ else
+ return -1
+
+ return 1
+
+ check_turf(turf/model, atmos_adjacent_turfs = 4)
+ var/delta_oxygen = (oxygen_archived - model.oxygen)/(atmos_adjacent_turfs+1)
+ var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/(atmos_adjacent_turfs+1)
+ var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/(atmos_adjacent_turfs+1)
+ var/delta_toxins = (toxins_archived - model.toxins)/(atmos_adjacent_turfs+1)
+
+ var/delta_temperature = (temperature_archived - model.temperature)
+
+ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)))
+ return 0
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
+ return 0
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4)
+ return 0
+
+ return 1
+
+ proc/check_turf_total(turf/model)
+ var/delta_oxygen = (oxygen - model.oxygen)
+ var/delta_carbon_dioxide = (carbon_dioxide - model.carbon_dioxide)
+ var/delta_nitrogen = (nitrogen - model.nitrogen)
+ var/delta_toxins = (toxins - model.toxins)
+
+ var/delta_temperature = (temperature - model.temperature)
+
+ if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \
+ || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND)))
+ return 0
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND)
+ return 0
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND*4)
+ return 0
+
+ return 1
+
+ share(datum/gas_mixture/sharer, var/atmos_adjacent_turfs = 4)
+ if(!sharer) return 0
+ var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/(atmos_adjacent_turfs+1)
+ var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/(atmos_adjacent_turfs+1)
+ var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/(atmos_adjacent_turfs+1)
+ var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/(atmos_adjacent_turfs+1)
+
+ var/delta_temperature = (temperature_archived - sharer.temperature_archived)
+
+ var/old_self_heat_capacity = 0
+ var/old_sharer_heat_capacity = 0
+
+ var/heat_capacity_self_to_sharer = 0
+ var/heat_capacity_sharer_to_self = 0
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+
+ var/delta_air = delta_oxygen+delta_nitrogen
+ if(delta_air)
+ var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air
+ if(delta_air > 0)
+ heat_capacity_self_to_sharer += air_heat_capacity
+ else
+ heat_capacity_sharer_to_self -= air_heat_capacity
+
+ if(delta_carbon_dioxide)
+ var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide
+ if(delta_carbon_dioxide > 0)
+ heat_capacity_self_to_sharer += carbon_dioxide_heat_capacity
+ else
+ heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity
+
+ if(delta_toxins)
+ var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins
+ if(delta_toxins > 0)
+ heat_capacity_self_to_sharer += toxins_heat_capacity
+ else
+ heat_capacity_sharer_to_self -= toxins_heat_capacity
+
+ old_self_heat_capacity = heat_capacity()*group_multiplier
+ old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier
+
+ oxygen -= delta_oxygen/group_multiplier
+ sharer.oxygen += delta_oxygen/sharer.group_multiplier
+
+ carbon_dioxide -= delta_carbon_dioxide/group_multiplier
+ sharer.carbon_dioxide += delta_carbon_dioxide/sharer.group_multiplier
+
+ nitrogen -= delta_nitrogen/group_multiplier
+ sharer.nitrogen += delta_nitrogen/sharer.group_multiplier
+
+ toxins -= delta_toxins/group_multiplier
+ sharer.toxins += delta_toxins/sharer.group_multiplier
+
+ var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins)
+ last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins)
+
+ var/list/trace_types_considered = list()
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+
+ var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases
+ var/delta = 0
+
+ if(corresponding)
+ delta = QUANTIZE(trace_gas.moles_archived - corresponding.moles_archived)/(atmos_adjacent_turfs+1)
+ else
+ corresponding = new trace_gas.type()
+ sharer.trace_gases += corresponding
+
+ delta = trace_gas.moles_archived/(atmos_adjacent_turfs+1)
+
+ trace_gas.moles -= delta/group_multiplier
+ corresponding.moles += delta/sharer.group_multiplier
+
+ if(delta)
+ var/individual_heat_capacity = trace_gas.specific_heat*delta
+ if(delta > 0)
+ heat_capacity_self_to_sharer += individual_heat_capacity
+ else
+ heat_capacity_sharer_to_self -= individual_heat_capacity
+
+ moved_moles += delta
+ last_share += abs(delta)
+
+ trace_types_considered += trace_gas.type
+
+
+ if(sharer.trace_gases.len)
+ for(var/datum/gas/trace_gas in sharer.trace_gases)
+ if(trace_gas.type in trace_types_considered) continue
+ else
+ var/datum/gas/corresponding
+ var/delta = 0
+
+ corresponding = new trace_gas.type()
+ trace_gases += corresponding
+
+ delta = trace_gas.moles_archived/5
+
+ trace_gas.moles -= delta/sharer.group_multiplier
+ corresponding.moles += delta/group_multiplier
+
+ //Guaranteed transfer from sharer to self
+ var/individual_heat_capacity = trace_gas.specific_heat*delta
+ heat_capacity_sharer_to_self += individual_heat_capacity
+
+ moved_moles += -delta
+ last_share += abs(delta)
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/new_self_heat_capacity = old_self_heat_capacity + heat_capacity_sharer_to_self - heat_capacity_self_to_sharer
+ var/new_sharer_heat_capacity = old_sharer_heat_capacity + heat_capacity_self_to_sharer - heat_capacity_sharer_to_self
+
+ if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ temperature = (old_self_heat_capacity*temperature - heat_capacity_self_to_sharer*temperature_archived + heat_capacity_sharer_to_self*sharer.temperature_archived)/new_self_heat_capacity
+
+ if(new_sharer_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ sharer.temperature = (old_sharer_heat_capacity*sharer.temperature-heat_capacity_sharer_to_self*sharer.temperature_archived + heat_capacity_self_to_sharer*temperature_archived)/new_sharer_heat_capacity
+
+ if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY)
+ if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity
+ temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT)
+
+ if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE)
+ var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles)
+ return delta_pressure*R_IDEAL_GAS_EQUATION/volume
+
+ mimic(turf/model, border_multiplier, var/atmos_adjacent_turfs = 4)
+ var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/(atmos_adjacent_turfs+1)
+ var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/(atmos_adjacent_turfs+1)
+ var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/(atmos_adjacent_turfs+1)
+ var/delta_toxins = QUANTIZE(toxins_archived - model.toxins)/(atmos_adjacent_turfs+1)
+
+ var/delta_temperature = (temperature_archived - model.temperature)
+
+ var/heat_transferred = 0
+ var/old_self_heat_capacity = 0
+ var/heat_capacity_transferred = 0
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+
+ var/delta_air = delta_oxygen+delta_nitrogen
+ if(delta_air)
+ var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air
+ heat_transferred -= air_heat_capacity*model.temperature
+ heat_capacity_transferred -= air_heat_capacity
+
+ if(delta_carbon_dioxide)
+ var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide
+ heat_transferred -= carbon_dioxide_heat_capacity*model.temperature
+ heat_capacity_transferred -= carbon_dioxide_heat_capacity
+
+ if(delta_toxins)
+ var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins
+ heat_transferred -= toxins_heat_capacity*model.temperature
+ heat_capacity_transferred -= toxins_heat_capacity
+
+ old_self_heat_capacity = heat_capacity()*group_multiplier
+
+ if(border_multiplier)
+ oxygen -= delta_oxygen*border_multiplier/group_multiplier
+ carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier
+ nitrogen -= delta_nitrogen*border_multiplier/group_multiplier
+ toxins -= delta_toxins*border_multiplier/group_multiplier
+ else
+ oxygen -= delta_oxygen/group_multiplier
+ carbon_dioxide -= delta_carbon_dioxide/group_multiplier
+ nitrogen -= delta_nitrogen/group_multiplier
+ toxins -= delta_toxins/group_multiplier
+
+ var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins)
+ last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins)
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ var/delta = 0
+
+ delta = trace_gas.moles_archived/(atmos_adjacent_turfs+1)
+
+ if(border_multiplier)
+ trace_gas.moles -= delta*border_multiplier/group_multiplier
+ else
+ trace_gas.moles -= delta/group_multiplier
+
+ var/heat_cap_transferred = delta*trace_gas.specific_heat
+ heat_transferred += heat_cap_transferred*temperature_archived
+ heat_capacity_transferred += heat_cap_transferred
+ moved_moles += delta
+ moved_moles += abs(delta)
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/new_self_heat_capacity = old_self_heat_capacity - heat_capacity_transferred
+ if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ if(border_multiplier)
+ temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity
+ else
+ temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity
+
+ temperature_mimic(model, model.thermal_conductivity, border_multiplier)
+
+ if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE)
+ var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.toxins)
+ return delta_pressure*R_IDEAL_GAS_EQUATION/volume
+ else
+ return 0
+
+ check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - sharer.temperature_archived)
+
+ var/self_heat_capacity = heat_capacity_archived()
+ var/sharer_heat_capacity = sharer.heat_capacity_archived()
+
+ var/self_temperature_delta = 0
+ var/sharer_temperature_delta = 0
+
+ if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity))
+
+ self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
+ sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier)
+ else
+ return 1
+
+ if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
+ && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
+ return 0
+
+ if((abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
+ && (abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*sharer.temperature_archived))
+ return -1
+
+ temperature += self_temperature_delta
+ sharer.temperature += sharer_temperature_delta
+
+ return 1
+ //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency
+
+ check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - sharer.temperature_archived)
+
+ var/self_heat_capacity = heat_capacity_archived()
+ var/sharer_heat_capacity = sharer.heat_capacity_archived()
+
+ var/self_temperature_delta = 0
+ var/sharer_temperature_delta = 0
+
+ if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity))
+
+ self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
+ sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier)
+ else
+ return 1
+
+ if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
+ && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
+ return 0
+
+ temperature += self_temperature_delta
+ sharer.temperature += sharer_temperature_delta
+
+ return 1
+ //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency
+
+ check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - sharer.temperature)
+
+ var/self_temperature_delta = 0
+ var/sharer_temperature_delta = 0
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/self_heat_capacity = heat_capacity_archived()
+
+ if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity))
+
+ self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
+ sharer_temperature_delta = heat/sharer.heat_capacity
+ else
+ return 1
+
+ if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
+ && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
+ return 0
+
+ temperature += self_temperature_delta
+ sharer.temperature += sharer_temperature_delta
+
+ return 1
+ //Logic integrated from: temperature_turf_share(sharer, conduction_coefficient) for efficiency
+
+ check_me_then_temperature_mimic(turf/model, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - model.temperature)
+ var/self_temperature_delta = 0
+
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/self_heat_capacity = heat_capacity_archived()
+
+ if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity))
+
+ self_temperature_delta = -heat/(self_heat_capacity*group_multiplier)
+
+ if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \
+ && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived))
+ return 0
+
+ temperature += self_temperature_delta
+
+ return 1
+ //Logic integrated from: temperature_mimic(model, conduction_coefficient) for efficiency
+
+ temperature_share(datum/gas_mixture/sharer, conduction_coefficient)
+
+ var/delta_temperature = (temperature_archived - sharer.temperature_archived)
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/self_heat_capacity = heat_capacity_archived()
+ var/sharer_heat_capacity = sharer.heat_capacity_archived()
+
+ if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity))
+
+ temperature -= heat/(self_heat_capacity*group_multiplier)
+ sharer.temperature += heat/(sharer_heat_capacity*sharer.group_multiplier)
+
+ temperature_mimic(turf/model, conduction_coefficient, border_multiplier)
+ var/delta_temperature = (temperature - model.temperature)
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/self_heat_capacity = heat_capacity()//_archived()
+
+ if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity))
+
+ if(border_multiplier)
+ temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier)
+ else
+ temperature -= heat/(self_heat_capacity*group_multiplier)
+
+ temperature_turf_share(turf/simulated/sharer, conduction_coefficient)
+ var/delta_temperature = (temperature_archived - sharer.temperature)
+ if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
+ var/self_heat_capacity = heat_capacity()
+
+ if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
+ var/heat = conduction_coefficient*delta_temperature* \
+ (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity))
+
+ temperature -= heat/(self_heat_capacity*group_multiplier)
+ sharer.temperature += heat/sharer.heat_capacity
+
+ compare(datum/gas_mixture/sample)
+ if(!istype(sample)) return //fix for this.. randomly runtiming
+ if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \
+ ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen)))
+ return 0
+ if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \
+ ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen)))
+ return 0
+ if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \
+ ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide)))
+ return 0
+ if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \
+ ((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins)))
+ return 0
+
+ if(total_moles() > MINIMUM_AIR_TO_SUSPEND)
+ if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \
+ ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature)))
+ //world << "temp fail [temperature] & [sample.temperature]"
+ return 0
+
+ if(sample.trace_gases.len)
+ for(var/datum/gas/trace_gas in sample.trace_gases)
+ if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND)
+ var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases
+ if(corresponding)
+ if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \
+ ((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles)))
+ return 0
+ else
+ return 0
+
+ if(trace_gases.len)
+ for(var/datum/gas/trace_gas in trace_gases)
+ if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND)
+ var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases
+ if(corresponding)
+ if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \
+ ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles)))
+ return 0
+ else
+ return 0
return 1
\ No newline at end of file
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index b0c1e4e60c6..97cea1d09af 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -252,6 +252,9 @@ its easier to just keep the beam vertical.
/atom/proc/blob_act()
return
+/atom/proc/fire_act()
+ return
+
/atom/proc/emag_act()
return
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 687bf9c1bb1..a98313eefdb 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -534,9 +534,11 @@
"their hair","what to do next","their job","space","amusing things","sad things",
"annoying things","happy things","something incoherent","something they did wrong")
var/thoughts = "thinking about [pick(randomthoughts)]"
- if (M.fire_stacks)
+
+ if(M.fire_stacks)
pain_condition -= 50
thoughts = "preoccupied with the fire"
+
if (M.radiation)
pain_condition -= 25
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 2f7e6be9c46..3636acdb2e1 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -42,6 +42,7 @@ var/global/datum/controller/gameticker/ticker
/datum/controller/gameticker/proc/pregame()
login_music = pick(\
+ 'sound/music/THUNDERDOME.ogg',\
'sound/music/space.ogg',\
'sound/music/Title1.ogg',\
'sound/music/Title2.ogg',)
diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm
index fd41c77e985..ec971e84e59 100644
--- a/code/game/gamemodes/vampire/vampire.dm
+++ b/code/game/gamemodes/vampire/vampire.dm
@@ -293,7 +293,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
H.vessel.remove_reagent("blood",25)
if(ishuman(src))
var/mob/living/carbon/human/V = src
- V.nutrition += blood
+ V.nutrition = min(450,V.nutrition+(blood/2))
src.mind.vampire.draining = null
src << "\blue You stop draining [H.name] of blood."
diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm
index 68c47360599..9c1bd3fdafc 100644
--- a/code/game/machinery/Freezer.dm
+++ b/code/game/machinery/Freezer.dm
@@ -33,7 +33,7 @@
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/stack/cable_coil(src, 1)
RefreshParts()
-
+
/obj/machinery/atmospherics/unary/cold_sink/freezer/RefreshParts()
var/H
var/T
@@ -58,7 +58,7 @@
if (istype(I, /obj/item/weapon/wrench))
if(!panel_open)
user << "Open the maintenance panel first."
- return
+ return
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
dir = pick(WEST,EAST,SOUTH,NORTH)
var/node_connect = dir
@@ -88,7 +88,7 @@
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_hand(mob/user as mob)
if(panel_open)
user << "Close the maintenance panel first."
- return
+ return
src.ui_interact(user)
/obj/machinery/atmospherics/unary/cold_sink/freezer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
@@ -98,13 +98,13 @@
data["gasPressure"] = round(air_contents.return_pressure())
data["gasTemperature"] = round(air_contents.temperature)
data["gasTemperatureCelsius"] = round(air_contents.temperature - T0C,1)
- if(air_contents.total_moles == 0 && air_contents.temperature == 0)
+ if(air_contents.total_moles() == 0 && air_contents.temperature == 0)
data["gasTemperatureCelsius"] = 0
data["minGasTemperature"] = round(min_temperature)
data["maxGasTemperature"] = round(T20C)
data["targetGasTemperature"] = round(current_temperature)
data["targetGasTemperatureCelsius"] = round(current_temperature - T0C,1)
-
+
var/temp_class = "good"
if (air_contents.temperature > (T0C - 20))
temp_class = "bad"
@@ -175,7 +175,7 @@
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/stack/cable_coil(src, 1)
RefreshParts()
-
+
/obj/machinery/atmospherics/unary/heat_reservoir/heater/upgraded/New()
..()
var/obj/item/weapon/circuitboard/thermomachine/H = new /obj/item/weapon/circuitboard/thermomachine(null)
@@ -215,7 +215,7 @@
if (istype(I, /obj/item/weapon/wrench))
if(!panel_open)
user << "Open the maintenance panel first."
- return
+ return
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
dir = pick(WEST,EAST,SOUTH,NORTH)
var/node_connect = dir
@@ -245,7 +245,7 @@
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_hand(mob/user as mob)
if(panel_open)
user << "Close the maintenance panel first."
- return
+ return
src.ui_interact(user)
/obj/machinery/atmospherics/unary/heat_reservoir/heater/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
@@ -255,13 +255,13 @@
data["gasPressure"] = round(air_contents.return_pressure())
data["gasTemperature"] = round(air_contents.temperature)
data["gasTemperatureCelsius"] = round(air_contents.temperature - T0C,1)
- if(air_contents.total_moles == 0 && air_contents.temperature == 0)
+ if(air_contents.total_moles() == 0 && air_contents.temperature == 0)
data["gasTemperatureCelsius"] = 0
data["minGasTemperature"] = round(T20C)
data["maxGasTemperature"] = round(T20C+max_temperature)
data["targetGasTemperature"] = round(current_temperature)
data["targetGasTemperatureCelsius"] = round(current_temperature - T0C,1)
-
+
var/temp_class = "normal"
if (air_contents.temperature > (T20C+40))
temp_class = "bad"
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index a41fcc019f9..917a2212365 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -202,7 +202,7 @@
if(target_temperature < T0C + MIN_TEMPERATURE)
target_temperature = T0C + MIN_TEMPERATURE
- var/datum/gas_mixture/gas = location.remove_air(0.25*environment.total_moles)
+ var/datum/gas_mixture/gas = location.remove_air(0.25*environment.total_moles())
var/heat_capacity = gas.heat_capacity()
var/energy_used = max( abs( heat_capacity*(gas.temperature - target_temperature) ), MAX_ENERGY_CHANGE)
@@ -1099,7 +1099,7 @@ FIRE ALARM
else
icon_state = "fire0"
-/obj/machinery/firealarm/fire_act(datum/gas_mixture/air, temperature, volume)
+/obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume)
if(src.detecting)
if(temperature > T0C+200)
src.alarm() // added check of detector status here
@@ -1130,17 +1130,26 @@ FIRE ALARM
if(wiresexposed)
switch(buildstage)
if(2)
- if (istype(W, /obj/item/device/multitool))
+ if(istype(W, /obj/item/device/multitool))
src.detecting = !( src.detecting )
if (src.detecting)
user.visible_message("\red [user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.")
else
user.visible_message("\red [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.")
+
+ else if(istype(W, /obj/item/weapon/wirecutters)) // cutting the wires out
+ user << "You cut the wires!"
+ playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
+ var/obj/item/stack/cable_coil/new_coil = new /obj/item/stack/cable_coil()
+ new_coil.amount = 5
+ new_coil.loc = user.loc
+ buildstage = 1
+ update_icon()
if(1)
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/coil = W
if(coil.amount < 5)
- user << "You need more cable for this!"
+ user << "You cut the wires!"
return
coil.amount -= 5
@@ -1148,11 +1157,11 @@ FIRE ALARM
del(coil)
buildstage = 2
- user << "You wire \the [src]!"
+ user << "You wire \the [src]!"
update_icon()
else if(istype(W, /obj/item/weapon/crowbar))
- user << "You pry out the circuit!"
+ user << "You pry out the circuit!"
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
spawn(20)
var/obj/item/weapon/firealarm_electronics/circuit = new /obj/item/weapon/firealarm_electronics()
@@ -1161,13 +1170,13 @@ FIRE ALARM
update_icon()
if(0)
if(istype(W, /obj/item/weapon/firealarm_electronics))
- user << "You insert the circuit!"
+ user << "You insert the circuit!"
del(W)
buildstage = 1
update_icon()
else if(istype(W, /obj/item/weapon/wrench))
- user << "You remove the fire alarm assembly from the wall!"
+ user << "You remove the fire alarm assembly from the wall!"
new /obj/item/mounted/frame/firealarm(get_turf(user))
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)
del(src)
@@ -1191,7 +1200,7 @@ FIRE ALARM
src.updateDialog()
last_process = world.timeofday
- if(locate(/obj/fire) in loc)
+ if(locate(/obj/effect/hotspot) in loc)
alarm()
return
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 4140d7cdcfe..99782c1b022 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -34,7 +34,7 @@
list("name" = "\[Air\]", "icon" = "grey-c-2"),
list("name" = "\[CAUTION\]", "icon" = "yellow-c-2")
)
-
+
possibledecals = list( //var that stores all possible decals, used by ui
list("name" = "Low temperature canister", "icon" = "cold"),
list("name" = "High temperature canister", "icon" = "hot"),
@@ -50,24 +50,24 @@ var/datum/canister_icons/canister_icon_container = new()
density = 1
var/health = 100.0
flags = CONDUCT
-
+
var/menu = 0
//used by nanoui: 0 = main menu, 1 = relabel
-
+
var/valve_open = 0
var/release_pressure = ONE_ATMOSPHERE
-
+
var/list/_color //variable that stores colours
var/list/decals //list that stores the decals
-
+
//lists for check_change()
var/list/oldcolor
var/list/olddecals
-
+
//passed to the ui to render the color lists
var/list/colorcontainer
var/list/possibledecals
-
+
var/can_label = 1
var/filled = 0.5
pressure_resistance = 7*ONE_ATMOSPHERE
@@ -77,7 +77,7 @@ var/datum/canister_icons/canister_icon_container = new()
var/release_log = ""
var/busy = 0
var/update_flag = 0
-
+
New()
..()
_color = list(
@@ -90,7 +90,7 @@ var/datum/canister_icons/canister_icon_container = new()
colorcontainer = new /list(4)
possibledecals = new /list(3)
update_icon()
-
+
/obj/machinery/portable_atmospherics/canister/proc/init_data_vars()
//passed to the ui to render the color lists
colorcontainer = list(
@@ -111,7 +111,7 @@ var/datum/canister_icons/canister_icon_container = new()
"name" = "Quaternary color",
)
)
-
+
//var/anycolor used by the nanoUI, 0: no color applied. 1: color applied
for(var/C in colorcontainer)
if(C == "prim") continue
@@ -121,9 +121,9 @@ var/datum/canister_icons/canister_icon_container = new()
else
L.Add(list("anycolor" = 1))
colorcontainer[C] = L
-
+
possibledecals = new /list(3)
-
+
var/i
var/list/L = canister_icon_container.possibledecals
for(i=1;i<=L.len;i++)
@@ -153,11 +153,11 @@ var/datum/canister_icons/canister_icon_container = new()
if(list2params(oldcolor) != list2params(_color))
update_flag |= 64
oldcolor = _color.Copy()
-
+
if(list2params(olddecals) != list2params(decals))
update_flag |= 128
olddecals = decals.Copy()
-
+
if(update_flag == old_flag)
return 1
else
@@ -188,12 +188,12 @@ update_flag
return
overlays.Cut()
-
+
for(var/C in _color)
if(C == "prim") continue
if(_color[C] == "none") continue
overlays.Add(_color[C])
-
+
for(var/D in decals)
if(decals[D])
overlays.Add("decal-" + D)
@@ -210,12 +210,12 @@ update_flag
overlays += "can-o2"
else if(update_flag & 32)
overlays += "can-o3"
-
+
update_flag &= ~196 //the flags 128 and 64 represent change, not states. As such, we have to reset them to be able to detect a change on the next go.
return
//template modification exploit prevention, used in Topic()
-/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all")
+/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all")
if (checkColor == "prim" || checkColor == "all")
for(var/list/L in canister_icon_container.possiblemaincolor)
if (L["icon"] == inputVar)
@@ -240,7 +240,7 @@ update_flag
return 1
return 0
-/obj/machinery/portable_atmospherics/canister/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > temperature_resistance)
health -= 5
healthcheck()
@@ -294,15 +294,16 @@ update_flag
environment.merge(removed)
else
loc.assume_air(removed)
+ air_update_turf()
src.update_icon()
+
if(air_contents.return_pressure() < 1)
can_label = 1
else
can_label = 0
- if(air_contents.temperature > PLASMA_FLASHPOINT)
- air_contents.zburn()
+ src.updateDialog()
return
/obj/machinery/portable_atmospherics/canister/return_air()
@@ -389,7 +390,7 @@ update_flag
return
init_data_vars() //set up var/colorcontainer and var/possibledecals
-
+
// this is the data which will be sent to the ui
var/data[0]
data["name"] = name
@@ -421,7 +422,7 @@ update_flag
ui.open()
// auto update every Master Controller tick
ui.set_auto_update(1)
-
+
//Disregard these, avoid cluttering up the VV window
colorcontainer = new /list(4)
possibledecals = new /list(3)
@@ -436,7 +437,7 @@ update_flag
usr << browse(null, "window=canister")
onclose(usr, "canister")
return
-
+
if (href_list["choice"] == "menu")
menu = text2num(href_list["mode_target"])
@@ -467,7 +468,7 @@ update_flag
release_pressure = min(10*ONE_ATMOSPHERE, release_pressure+diff)
else
release_pressure = max(ONE_ATMOSPHERE/10, release_pressure+diff)
-
+
if (href_list["rename"])
if (can_label)
var/T = sanitize(copytext(input("Choose canister label", "Name", name) as text|null,1,MAX_NAME_LEN))
@@ -497,11 +498,11 @@ update_flag
_color["quart"] = "none"
else if (is_a_color(href_list["icon"],"quart"))
_color["quart"] = href_list["icon"]
-
+
if (href_list["choice"] == "decals")
if (is_a_decal(href_list["icon"]))
decals[href_list["icon"]] = (decals[href_list["icon"]] == 0)
-
+
src.add_fingerprint(usr)
update_icon()
@@ -540,11 +541,10 @@ update_flag
/obj/machinery/portable_atmospherics/canister/toxins/New()
..()
-
+
_color["prim"] = "orange"
decals["plasma"] = 1
src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.update_values()
src.update_icon()
return 1
@@ -554,18 +554,17 @@ update_flag
_color["prim"] = "blue"
src.air_contents.oxygen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.update_values()
+
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/sleeping_agent/New()
..()
-
+
_color["prim"] = "redws"
var/datum/gas/sleeping_agent/trace_gas = new
air_contents.trace_gases += trace_gas
trace_gas.moles = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.update_values()
src.update_icon()
return 1
@@ -591,17 +590,15 @@ update_flag
_color["prim"] = "red"
src.air_contents.nitrogen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.update_values()
src.update_icon()
return 1
/obj/machinery/portable_atmospherics/canister/carbon_dioxide/New()
..()
-
+
_color["prim"] = "black"
src.air_contents.carbon_dioxide = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.update_values()
src.update_icon()
return 1
@@ -609,11 +606,10 @@ update_flag
/obj/machinery/portable_atmospherics/canister/air/New()
..()
-
+
_color["prim"] = "grey"
src.air_contents.oxygen = (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
src.air_contents.nitrogen = (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
- air_contents.update_values()
src.update_icon()
return 1
diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm
index 4c86909c05e..aec5d82c346 100644
--- a/code/game/machinery/atmoalter/pump.dm
+++ b/code/game/machinery/atmoalter/pump.dm
@@ -66,6 +66,7 @@
environment.merge(removed)
else
loc.assume_air(removed)
+ air_update_turf()
else
var/pressure_delta = target_pressure - air_contents.return_pressure()
//Can not have a pressure delta that would cause environment pressure > tank pressure
@@ -80,6 +81,7 @@
removed = environment.remove(transfer_moles)
else
removed = loc.remove_air(transfer_moles)
+ air_update_turf()
air_contents.merge(removed)
//src.update_icon()
diff --git a/code/game/machinery/atmoalter/zvent.dm b/code/game/machinery/atmoalter/zvent.dm
index 163e86a74da..2e7ce0ac9b7 100644
--- a/code/game/machinery/atmoalter/zvent.dm
+++ b/code/game/machinery/atmoalter/zvent.dm
@@ -20,10 +20,8 @@
if (istype(zvent_conn))
//both floors have simulated turfs, share()
var/turf/simulated/myturf = loc
- var/datum/gas_mixture/conn_air = zturf_conn.zone.air //TODO: pop culture reference
+ var/datum/gas_mixture/conn_air = zturf_conn.air //TODO: pop culture reference
var/datum/gas_mixture/my_air = myturf.air
if (istype(conn_air) && istype(my_air))
-// if (!my_air.compare(conn_air))
-// myturf.reset_delay()
-// zturf_conn.reset_delay()
my_air.share(conn_air)
+ air_update_turf()
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 48ff9d2bd16..cb00c9cacc0 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -400,7 +400,7 @@
expel_gas = air_contents.remove(remove_amount)
expel_gas.temperature = T20C // Lets expel hot gas and see if that helps people not die as they are removed
loc.assume_air(expel_gas)
- update_nearby_tiles()
+ air_update_turf(1)
/obj/machinery/atmospherics/unary/cryo_cell/proc/go_out()
if(!( occupant ))
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index abf40d8de10..64f9bc02add 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -232,37 +232,27 @@
return
/obj/machinery/door/airlock/plasma
- name = "Plasma Airlock"
+ name = "plasma airlock"
desc = "No way this can end badly."
icon = 'icons/obj/doors/Doorplasma.dmi'
mineral = "plasma"
- autoignition_temperature = 300
+/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ if(exposed_temperature > 300)
+ PlasmaBurn(exposed_temperature)
-/obj/machinery/door/airlock/plasma/ignite(temperature)
- PlasmaBurn(temperature)
+/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
+ if(exposed_temperature > 300)
+ PlasmaBurn(exposed_temperature)
/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
- for(var/turf/simulated/floor/target_tile in range(2,loc))
-// if(target_tile.parent && target_tile.parent.group_processing) // THESE PROBABLY DO SOMETHING IMPORTANT BUT I DON'T KNOW HOW TO FIX IT - Erthilo
-// target_tile.parent.suspend_group_processing()
- var/datum/gas_mixture/napalm = new
- var/toxinsToDeduce = 35
- napalm.toxins = toxinsToDeduce
- napalm.temperature = 400+T0C
- target_tile.assume_air(napalm)
- spawn (0) target_tile.hotspot_expose(temperature, 400)
- for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
- var/turf/T = get_turf(F)
- T.ChangeTurf(/turf/simulated/wall/mineral/plasma/)
- del (F)
- for(var/turf/simulated/wall/mineral/plasma/W in range(3,src))
- W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
- for(var/obj/machinery/door/airlock/plasma/D in range(3,src))
- D.ignite(temperature/4)
+ atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500)
new/obj/structure/door_assembly( src.loc )
del (src)
+/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~
+ return 0
+
/obj/machinery/door/airlock/clown
name = "Bananium Airlock"
icon = 'icons/obj/doors/Doorbananium.dmi'
@@ -918,10 +908,9 @@ About the new airlock wires panel:
// Do nothing
else
playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1)
- for(var/turf/turf in locs)
- var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf)
- if(killthis)
- killthis.ex_act(2)//Smashin windows
+ var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src))
+ if(killthis)
+ killthis.ex_act(2)//Smashin windows
if(density)
return 1
@@ -937,14 +926,11 @@ About the new airlock wires panel:
if(visible && !glass)
SetOpacity(1)
operating = 0
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(locate(/mob/living) in get_turf(src))
open()
- //I shall not add a check every x ticks if a door has closed over some fire.
- var/obj/fire/fire = locate() in loc
- if(fire)
- del fire
return
/obj/machinery/door/airlock/proc/lock(var/forced=0)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index b94fd17c30e..6588131ac9f 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -33,7 +33,6 @@
. = ..()
if(density)
layer = closed_layer
- update_heat_protection(get_turf(src))
else
layer = open_layer
@@ -46,14 +45,16 @@
bound_width = world.icon_size
bound_height = width * world.icon_size
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
+ update_freelok_sight()
airlocks += src
return
/obj/machinery/door/Destroy()
density = 0
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
airlocks -= src
..()
return
@@ -95,11 +96,13 @@
/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if(air_group) return !block_air_zones
+ if(air_group) return 0
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density
+/obj/machinery/door/CanAtmosPass()
+ return !density
//used in the AStar algorithm to determinate if the turf the door is on is passable
/obj/machinery/door/proc/CanAStarPass(var/obj/item/weapon/card/id/ID)
@@ -107,9 +110,9 @@
/obj/machinery/door/proc/bumpopen(mob/user as mob)
if(operating) return
- if(user.last_airflow > world.time - vsc.airflow_delay) //Fakkit
+// if(user.last_airflow > world.time) //Fakkit //remind me to figure out the linda equiv
// if(user.last_airflow > world.time - zas_settings.Get("airflow_delay")) //Fakkit
- return
+// return
src.add_fingerprint(user)
if(!src.requiresID())
user = null
@@ -240,7 +243,8 @@
update_icon()
SetOpacity(0)
operating = 0
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(autoclose && normalspeed)
spawn(150)
@@ -267,12 +271,13 @@
if(visible && !glass)
SetOpacity(1) //caaaaarn!
operating = 0
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
//I shall not add a check every x ticks if a door has closed over some fire.
- var/obj/fire/fire = locate() in loc
+ var/obj/effect/hotspot/fire = locate() in loc
if(fire)
- del fire
+ qdel(fire)
return
/obj/machinery/door/proc/crush()
@@ -296,14 +301,6 @@
/obj/machinery/door/proc/requiresID()
return 1
-
-/obj/machinery/door/proc/update_heat_protection(var/turf/simulated/source)
- if(istype(source))
- if(src.density && (src.opacity || src.heat_proof))
- source.thermal_conductivity = DOOR_HEAT_TRANSFER_COEFFICIENT
- else
- source.thermal_conductivity = initial(source.thermal_conductivity)
-
/obj/machinery/door/proc/autoclose()
var/obj/machinery/door/airlock/A = src
if(!A.density && !A.operating && !A.locked && !A.welded && A.autoclose)
@@ -311,7 +308,10 @@
return
/obj/machinery/door/Move(new_loc, new_dir)
- update_nearby_tiles()
+ var/turf/T = loc
+ ..()
+ move_update_air(T)
+
. = ..()
if(width > 1)
if(dir in list(EAST, WEST))
@@ -321,7 +321,10 @@
bound_width = world.icon_size
bound_height = width * world.icon_size
- update_nearby_tiles()
+/obj/machinery/door/BlockSuperconductivity()
+ if(opacity || heat_proof)
+ return 1
+ return 0
/obj/machinery/door/morgue
icon = 'icons/obj/doors/doormorgue.dmi'
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 43c392bdde8..afe8fe92580 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -1,85 +1,23 @@
/var/const/OPEN = 1
/var/const/CLOSED = 2
-/proc/convert_k2c(var/temp)
- return ((temp - T0C)) // * 1.8) + 32
-
-/proc/convert_c2k(var/temp)
- return ((temp + T0C)) // * 1.8) + 32
-
-/proc/getCardinalAirInfo(var/turf/loc, var/list/stats=list("temperature"))
- var/list/temps = new/list(4)
- for(var/dir in cardinal)
- var/direction
- switch(dir)
- if(NORTH)
- direction = 1
- if(SOUTH)
- direction = 2
- if(EAST)
- direction = 3
- if(WEST)
- direction = 4
- var/turf/simulated/T=get_turf(get_step(loc,dir))
- var/list/rstats = new /list(stats.len)
- if(T && istype(T) && T.zone)
- var/datum/gas_mixture/environment = T.return_air()
- for(var/i=1;i<=stats.len;i++)
- if(stats[i] == "pressure")
- rstats[i] = environment.return_pressure()
- else
- rstats[i] = environment.vars[stats[i]]
- else if(istype(T, /turf/simulated))
- rstats = null // Exclude zone (wall, door, etc).
- else if(istype(T, /turf))
- // Should still work. (/turf/return_air())
- var/datum/gas_mixture/environment = T.return_air()
- for(var/i=1;i<=stats.len;i++)
- if(stats[i] == "pressure")
- continue
- else
- rstats[i] = environment.vars[stats[i]]
- temps[direction] = rstats
- return temps
-
-#define FIREDOOR_MAX_PRESSURE_DIFF 25 // kPa
-#define FIREDOOR_MAX_TEMP 50 // Celsius
-#define FIREDOOR_MIN_TEMP 0
-
-// Bitflags
-#define FIREDOOR_ALERT_HOT 1
-#define FIREDOOR_ALERT_COLD 2
-// Not used #define FIREDOOR_ALERT_LOWPRESS 4
-
/obj/machinery/door/firedoor
- name = "\improper Emergency Shutter"
- desc = "Emergency air-tight shutter, capable of sealing off breached areas."
- icon = 'icons/obj/doors/DoorHazard.dmi'
+ name = "Firelock"
+ desc = "Apply crowbar"
+ icon = 'icons/obj/doors/Doorfireglass.dmi'
icon_state = "door_open"
- req_one_access = list(access_atmospherics, access_engine)
opacity = 0
density = 0
+ heat_proof = 1
+ glass = 1
+ power_channel = ENVIRON
- //These are frequenly used with windows, so make sure zones can pass.
- //Generally if a firedoor is at a place where there should be a zone boundery then there will be a regular door underneath it.
- block_air_zones = 0
+ var/list/areas_added
var/blocked = 0
- var/lockdown = 0 // When the door has detected a problem, it locks.
- var/pdiff_alert = 0
- var/pdiff = 0
var/nextstate = null
- var/net_id
- var/list/areas_added
- var/list/users_to_open
- var/list/tile_info[4]
- var/list/dir_alerts[4] // 4 dirs, bitflags
- // MUST be in same order as FIREDOOR_ALERT_*
- var/list/ALERT_STATES=list(
- "hot",
- "cold"
- )
+ var/logged_users
/obj/machinery/door/firedoor/New()
. = ..()
@@ -88,6 +26,7 @@
spawn(1)
del src
return .
+
var/area/A = get_area(src)
ASSERT(istype(A))
@@ -106,66 +45,16 @@
A.all_doors.Remove(src)
. = ..()
-
-/obj/machinery/door/firedoor/examine()
- set src in view()
- . = ..()
-
- if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF)
- usr << "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!"
-
- usr << "Sensor readings:"
- for(var/index = 1; index <= tile_info.len; index++)
- var/o = " "
- switch(index)
- if(1)
- o += "NORTH: "
- if(2)
- o += "SOUTH: "
- if(3)
- o += "EAST: "
- if(4)
- o += "WEST: "
- if(tile_info[index] == null)
- o += "DATA UNAVAILABLE"
- usr << o
- continue
- var/celsius = convert_k2c(tile_info[index][1])
- var/pressure = tile_info[index][2]
- if(dir_alerts[index] & (FIREDOOR_ALERT_HOT|FIREDOOR_ALERT_COLD))
- o += ""
- else
- o += ""
- o += "[celsius] Celsius "
- o += ""
- o += "[pressure] kPa"
- usr << o
-
- if( islist(users_to_open) && users_to_open.len)
- var/users_to_open_string = users_to_open[1]
- if(users_to_open.len >= 2)
- for(var/i = 2 to users_to_open.len)
- users_to_open_string += ", [users_to_open[i]]"
- usr << "These people have opened \the [src] during an alert: [users_to_open_string]."
-
/obj/machinery/door/firedoor/Bumped(atom/AM)
- if(p_open || operating)
- return
- if(!density)
- return ..()
- if(istype(AM, /obj/mecha))
- var/obj/mecha/mecha = AM
- if (mecha.occupant)
- var/mob/M = mecha.occupant
- if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent popup message spam.
- M.last_bumped = world.time
- attack_hand(M)
+ if(p_open || operating) return
+ if(!density) return ..()
return 0
/obj/machinery/door/firedoor/power_change()
- if(powered(ENVIRON))
+ if(powered(power_channel))
stat &= ~NOPOWER
+ latetoggle()
else
stat |= NOPOWER
return
@@ -177,6 +66,7 @@
add_fingerprint(user)
if(operating)
return//Already doing something.
+
if(istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0, user))
@@ -198,24 +88,21 @@
if( istype(C, /obj/item/weapon/crowbar) || ( istype(C,/obj/item/weapon/twohanded/fireaxe) && C:wielded == 1 ) )
if(operating)
return
- if( blocked )
+ if(blocked)
user.visible_message("\red \The [user] pries at \the [src] with \a [C], but \the [src] is welded in place!",\
"You try to pry \the [src] [density ? "open" : "closed"], but it is welded in place!",\
"You hear someone struggle and metal straining.")
- if( stat & (BROKEN|NOPOWER) || !density || !alarmed )
+ if(stat & (BROKEN|NOPOWER) || !density || !alarmed)
user.visible_message("\red \The [user] forces \the [src] [density ? "open" : "closed"] with \a [C]!",\
"You force \the [src] [density ? "open" : "closed"] with \the [C]!",\
"You hear metal strain, and a door [density ? "open" : "close"].")
- else if( allowed(user) )
+
+ else if(allowed(user))
user.visible_message("\blue \The [user] lifts \the [src] with \a [C].",\
"\The [src] scans your ID, and obediently opens as you apply your [C].",\
"You hear metal move, and a door [density ? "open" : "close"].")
- else if(lockdown)
- user.visible_message("\blue \The [user] pries at \the [src] with \a [C], but \the [src] resists being opened.",\
- "\red You pry at \the [src], but it actively resists your efforts. Maybe use your ID, perhaps?",\
- "You hear someone struggling and metal straining")
- return
+
if(density)
spawn(0)
open()
@@ -223,6 +110,7 @@
spawn(0)
close()
return
+
var/access_granted = 0
var/users_name
if(!istype(C, /obj)) //If someone hit it with their hand. We need to see if they are allowed.
@@ -233,7 +121,7 @@
else
users_name = "Unknown"
- if( ishuman(user) && !stat && ( istype(C, /obj/item/weapon/card/id) || istype(C, /obj/item/device/pda) ) )
+ if(ishuman(user) && !stat && (istype(C, /obj/item/weapon/card/id) || istype(C, /obj/item/device/pda)))
var/obj/item/weapon/card/id/ID = C
if( istype(C, /obj/item/device/pda) )
@@ -248,31 +136,26 @@
if(check_access(ID))
access_granted = 1
- var/answer = "Yes"
+ var/answer = alert(user, "Are you sure you want to [density ? "open" : "close"] \the [src]?","\The [src] confirmation","Yes","No")
if(answer == "No")
return
+
if(user.stat || user.stunned || user.weakened || user.paralysis || get_dist(src, user) > 1)
user << "Sorry, you must remain able bodied and close to \the [src] in order to use it."
return
- if(alarmed && density && lockdown && !access_granted/* && !( users_name in users_to_open ) */)
- // Too many shitters on /vg/ for the honor system to work.
+ if(alarmed && density && !access_granted)
user << "Access denied. Please wait for authorities to arrive, or for the alert to clear."
return
- // End anti-shitter system
- /*
- user.visible_message("\red \The [src] opens for \the [user]",\
- "\The [src] opens after you acknowledge the consequences.",\
- "You hear a beep, and a door opening.")
- */
+
else
user.visible_message("\blue \The [src] [density ? "open" : "close"]s for \the [user].",\
"\The [src] [density ? "open" : "close"]s.",\
"You hear a beep, and a door opening.")
// Accountability!
- if(!users_to_open)
- users_to_open = list()
- users_to_open += users_name
+ if(!logged_users)
+ logged_users = list()
+ logged_users += users_name
var/needs_to_close = 0
if(density)
@@ -290,8 +173,8 @@
nextstate = CLOSED
/obj/machinery/door/firedoor/attack_ai(mob/user as mob)
- if(operating)
- return //Already doing something.
+ if(operating || stat & NOPOWER)
+ return //Already doing something or depowered.
if(blocked)
user << "\red \The [src] is welded solid!"
@@ -325,49 +208,38 @@
if(alarmed)
nextstate = CLOSED
- // CHECK PRESSURE
-/obj/machinery/door/firedoor/process()
- ..()
+/obj/machinery/door/firedoor/do_animate(animation)
+ switch(animation)
+ if("opening")
+ flick("door_opening", src)
+ if("closing")
+ flick("door_closing", src)
+ return
+/obj/machinery/door/firedoor/update_icon()
+ overlays.Cut()
if(density)
- var/changed = 0
- lockdown=0
- // Pressure alerts
- pdiff = getOPressureDifferential(src.loc)
- if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF)
- lockdown = 1
- if(!pdiff_alert)
- pdiff_alert = 1
- changed = 1 // update_icon()
- else
- if(pdiff_alert)
- pdiff_alert = 0
- changed = 1 // update_icon()
+ icon_state = "door_closed"
+ if(blocked)
+ overlays += "welded"
+ else
+ icon_state = "door_open"
+ if(blocked)
+ overlays += "welded_open"
+ return
- tile_info = getCardinalAirInfo(src.loc,list("temperature","pressure"))
- var/old_alerts = dir_alerts
- for(var/index = 1; index <= 4; index++)
- var/list/tileinfo=tile_info[index]
- if(tileinfo==null)
- continue // Bad data.
- var/celsius = convert_k2c(tileinfo[1])
+/obj/machinery/door/firedoor/open()
+ ..()
+ latetoggle()
+ return
- var/alerts=0
-
- // Temperatures
- if(celsius >= FIREDOOR_MAX_TEMP)
- alerts |= FIREDOOR_ALERT_HOT
- lockdown = 1
- else if(celsius <= FIREDOOR_MIN_TEMP)
- alerts |= FIREDOOR_ALERT_COLD
- lockdown = 1
-
- dir_alerts[index]=alerts
-
- if(dir_alerts != old_alerts)
- changed = 1
- if(changed)
- update_icon()
+/obj/machinery/door/firedoor/close()
+ ..()
+ if(locate(/mob/living) in get_turf(src))
+ open()
+ return
+ latetoggle()
+ return
/obj/machinery/door/firedoor/proc/latetoggle()
if(operating || stat & NOPOWER || !nextstate)
@@ -381,90 +253,30 @@
close()
return
-/obj/machinery/door/firedoor/close()
- ..()
- latetoggle()
- layer = 3.1
-/obj/machinery/door/firedoor/open()
- ..()
- latetoggle()
- layer = 2.6
-
-/obj/machinery/door/firedoor/update_icon()
- overlays = 0
- if(density)
- icon_state = "door_closed"
- if(blocked)
- overlays += "welded"
- if(pdiff_alert)
- overlays += "palert"
- if(dir_alerts)
- for(var/d=1;d<=4;d++)
- var/cdir = cardinal[d]
- // Loop while i = [1, 3], incrementing each loop
- for(var/i=1;i<=ALERT_STATES.len;i++) //
- if(dir_alerts[d] & (1<<(i-1))) // Check to see if dir_alerts[d] has the i-1th bit set.
- overlays += new /icon(icon,"alert_[ALERT_STATES[i]]",dir=cdir)
- else
- icon_state = "door_open"
- if(blocked)
- overlays += "welded_open"
- return
-
-/obj/machinery/door/firedoor/do_animate(animation)
- switch(animation)
- if("opening")
- flick("door_opening", src)
- if("closing")
- flick("door_closing", src)
- return
-
/obj/machinery/door/firedoor/border_only
-//These are playing merry hell on ZAS. Sorry fellas :(
-/*
icon = 'icons/obj/doors/edge_Doorfire.dmi'
- glass = 1 //There is a glass window so you can see through the door
- //This is needed due to BYOND limitations in controlling visibility
- heat_proof = 1
- air_properties_vary_with_direction = 1
+ flags = ON_BORDER
- CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if(istype(mover) && mover.checkpass(PASSGLASS))
- return 1
- if(get_dir(loc, target) == dir) //Make sure looking at appropriate border
- if(air_group) return 0
- return !density
- else
- return 1
-
- CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
- if(istype(mover) && mover.checkpass(PASSGLASS))
- return 1
- if(get_dir(loc, target) == dir)
- return !density
- else
- return 1
-
-
- update_nearby_tiles(need_rebuild)
- if(!air_master) return 0
-
- var/turf/simulated/source = loc
- var/turf/simulated/destination = get_step(source,dir)
-
- update_heat_protection(loc)
-
- if(istype(source)) air_master.tiles_to_update += source
- if(istype(destination)) air_master.tiles_to_update += destination
+/obj/machinery/door/firedoor/border_only/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
+ if(istype(mover) && mover.checkpass(PASSGLASS))
+ return 1
+ if(get_dir(loc, target) == dir) //Make sure looking at appropriate border
+ if(air_group) return 0
+ return !density
+ else
return 1
-*/
-/obj/machinery/door/firedoor/multi_tile
- icon = 'icons/obj/doors/DoorHazard2x1.dmi'
- width = 2
+/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
+ if(istype(mover) && mover.checkpass(PASSGLASS))
+ return 1
+ if(get_dir(loc, target) == dir)
+ return !density
+ else
+ return 1
-
-/obj/machinery/door/firedoor/multi_tile/triple
- icon = 'icons/obj/doors/DoorHazard3x1.dmi'
- width = 3
+/obj/machinery/door/firedoor/border_only/CanAtmosPass(var/turf/T)
+ if(get_dir(loc, T) == dir)
+ return !density
+ else
+ return 1
\ No newline at end of file
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index 0e549e5183d..7348a57181c 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -53,7 +53,8 @@
sleep(5)
src.density = 0
sleep(5)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
src.operating = 0
@@ -69,7 +70,8 @@
flick("pdoorc1", src)
src.icon_state = "pdoor1"
src.SetOpacity(initial(opacity))
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(5)
crush()
src.density = 1
@@ -147,7 +149,8 @@
f3.density = 0
f3.SetOpacity(0)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
src.operating = 0
@@ -173,7 +176,8 @@
if (src.visible)
src.SetOpacity(1)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(10)
src.operating = 0
@@ -201,7 +205,8 @@
f4.density = 0
f4.SetOpacity(0)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
src.operating = 0
@@ -229,7 +234,8 @@
if (src.visible)
src.SetOpacity(1)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(10)
src.operating = 0
@@ -304,7 +310,8 @@
f3.density = 0
f3.SetOpacity(0)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
src.operating = 0
@@ -330,7 +337,8 @@
if (src.visible)
src.SetOpacity(1)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(10)
src.operating = 0
@@ -358,7 +366,8 @@
f4.density = 0
f4.SetOpacity(0)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
src.operating = 0
@@ -386,7 +395,8 @@
if (src.visible)
src.SetOpacity(1)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(10)
src.operating = 0
diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm
index d8f751ec89e..c09226db1ee 100644
--- a/code/game/machinery/doors/shutters.dm
+++ b/code/game/machinery/doors/shutters.dm
@@ -7,7 +7,7 @@
/obj/machinery/door/poddoor/shutters/New()
..()
layer = 3.1
-
+
/obj/machinery/door/poddoor/shutters/preopen
icon_state = "shutter0"
density = 0
@@ -41,7 +41,8 @@
sleep(10)
density = 0
SetOpacity(0)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
operating = 0
@@ -59,7 +60,8 @@
density = 1
if(visible)
SetOpacity(1)
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(10)
operating = 0
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 544a4d7315d..d4cd6c3e500 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -81,6 +81,12 @@
else
return 1
+/obj/machinery/door/window/CanAtmosPass(var/turf/T)
+ if(get_dir(loc, T) == dir)
+ return !density
+ else
+ return 1
+
//used in the AStar algorithm to determinate if the turf the door is on is passable
/obj/machinery/door/window/CanAStarPass(var/obj/item/weapon/card/id/ID, var/to_dir)
return !density || (dir != to_dir) || check_access(ID)
@@ -113,7 +119,8 @@
src.density = 0
// src.sd_SetOpacity(0) //TODO: why is this here? Opaque windoors? ~Carn
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
if(operating == 1) //emag again
src.operating = 0
@@ -136,7 +143,8 @@
src.density = 1
// if(src.visible)
// SetOpacity(1) //TODO: why is this here? Opaque windoors? ~Carn
- update_nearby_tiles()
+ air_update_turf(1)
+ update_freelok_sight()
sleep(10)
src.operating = 0
diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm
index 291b5849d2f..2af4c5e0fbf 100644
--- a/code/game/machinery/programmable_unloader.dm
+++ b/code/game/machinery/programmable_unloader.dm
@@ -230,11 +230,11 @@
open = 0
if(!unwrenched && !circuit_removed)
src.stat &= ~MAINT
- user << "You open the [src]'s maintenance panel."
+ user << "You close \the [src]'s maintenance panel."
else
open = 1
src.stat |= MAINT
- user << "You close the [src]'s maintenance panel."
+ user << "You open \the [src]'s maintenance panel."
if(istype(I,/obj/item/weapon/crowbar))
if(open)
user << "\blue You begin to pry out the [src]'s circuits."
@@ -257,6 +257,7 @@
return
else
..(I,user)
+
if(istype(I,/obj/item/weapon/circuitboard/programmable))
if(!open)
user << "You have to open the machine first!"
@@ -553,9 +554,9 @@
origin_tech = "engineering=3;programming=6"
frame_desc = "Requires 2 Manipulators, 1 Scanning Module, 1 Cable."
req_components = list(
- "/obj/item/weapon/stock_parts/scanning_module" = 1,
- "/obj/item/weapon/stock_parts/manipulator" = 2,
- "/obj/item/stack/cable_coil" = 1)
+ /obj/item/weapon/stock_parts/scanning_module = 1,
+ /obj/item/weapon/stock_parts/manipulator = 2,
+ /obj/item/stack/cable_coil = 1)
//Customization of the machine
var/datum/cargoprofile/default = new/datum/cargoprofile()
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 07570114f00..d6a6a970acf 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -13,18 +13,26 @@
/obj/machinery/shield/New()
src.dir = pick(1,2,3,4)
..()
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
/obj/machinery/shield/Destroy()
opacity = 0
density = 0
- update_nearby_tiles()
+ air_update_turf(1)
..()
+/obj/machinery/shield/Move()
+ var/turf/T = loc
+ ..()
+ move_update_air(T)
+
/obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height, air_group)
if(!height || air_group) return 0
else return ..()
+/obj/machinery/shield/CanAtmosPass(var/turf/T)
+ return !density
+
/obj/machinery/shield/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(!istype(W)) return
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 9877ac6f138..c92b77ef47c 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -189,6 +189,7 @@
//world << "now at [removed.temperature]"
env.merge(removed)
+ air_update_turf()
//world << "turf now at [env.temperature]"
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 7eaa6315995..957111ea9d4 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -871,14 +871,10 @@
sleep(10)
if(helmet)
- if(radiation_level > 2)
- helmet.decontaminate()
if(radiation_level > 1)
helmet.clean_blood()
if(suit)
- if(radiation_level > 2)
- suit.decontaminate()
if(radiation_level > 1)
suit.clean_blood()
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 007fc2f5f7e..e6bf09f19af 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -788,16 +788,16 @@
/obj/machinery/vending/snack
name = "Getmore Chocolate Corp"
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
- product_slogans = "Try our new nougat bar!;Twice the calories for half the price!;Now featuring Discount Dan's food line!"
+ product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
icon_state = "snack"
products = list(/obj/item/weapon/reagent_containers/food/snacks/candy/candybar = 6,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6,/obj/item/weapon/reagent_containers/food/snacks/chips =6,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6,
- /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6,/obj/item/weapon/reagent_containers/food/drinks/dansoup/random = 20,/obj/item/weapon/reagent_containers/food/snacks/danburrito/random = 20)
+ /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6)
prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy/candybar = 20,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 30,
/obj/item/weapon/reagent_containers/food/snacks/chips =25,/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 30,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 20,
- /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 30,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25,/obj/item/weapon/reagent_containers/food/drinks/dansoup/random = 10,/obj/item/weapon/reagent_containers/food/snacks/danburrito/random = 12)
+ /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 30,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25)
refill_canister = /obj/item/weapon/vending_refill/snack
/obj/machinery/vending/snack/New()
@@ -845,20 +845,6 @@
component_parts += new /obj/item/weapon/vending_refill/cola(0)
component_parts += new /obj/item/weapon/vending_refill/cola(0)
-//New Cola Machine
-/obj/machinery/vending/soda
- name = "Donk Co. Cola"
- desc = "A cola vendor provided by Donk Company, Inc."
- icon_state = "soda"
- product_slogans = "Donk Co. Cola: Refreshing, delicious, and robust!"
- product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
- products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/robust = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/pubber = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/grifeo = 10,
- /obj/item/weapon/reagent_containers/food/drinks/cans/grones = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/runoff = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/horror = 10,
- /obj/item/weapon/reagent_containers/food/drinks/cans/orangeaid = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/limeaid = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/decirprevo = 10)
- prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/robust = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/pubber = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/grifeo = 35,
- /obj/item/weapon/reagent_containers/food/drinks/cans/grones = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/runoff = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/horror = 35,
- /obj/item/weapon/reagent_containers/food/drinks/cans/orangeaid = 50, /obj/item/weapon/reagent_containers/food/drinks/cans/limeaid = 50, /obj/item/weapon/reagent_containers/food/drinks/cans/decirprevo = 60)
-
//This one's from bay12
/obj/machinery/vending/cart
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 361ecedb4e1..02597fed7d7 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -44,9 +44,6 @@
for(var/atom/A in contents)
A.clean_blood()
- for(var/obj/item/I in contents)
- I.decontaminate()
-
//Tanning!
for(var/obj/item/stack/sheet/hairlesshide/HH in contents)
var/obj/item/stack/sheet/wetleather/WL = new(src)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 521716c44a5..0785ff11b29 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -668,7 +668,7 @@
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
return
-/obj/mecha/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature>src.max_temperature)
src.log_message("Exposed to dangerous temperature.",1)
src.take_damage(5,"fire")
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 985b3bca9ba..cca19e50a98 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -35,7 +35,9 @@
..()
/obj/structure/alien/resin/Move()
+ var/turf/T = loc
..()
+ move_update_air(T)
/obj/structure/alien/resin/wall
name = "resin wall"
@@ -229,7 +231,7 @@
del(src)
-/obj/structure/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
health -= 5
healthcheck()
@@ -387,7 +389,7 @@
del(src) //Remove the egg after it has been hit after bursting.
-/obj/structure/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 500)
health -= 5
healthcheck()
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index a0b3fff9c7b..c66706a18b3 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -118,10 +118,7 @@
..()
var/turf/simulated/T = get_turf(src)
if(istype(T))
- var/datum/gas_mixture/payload = new
- payload.toxins = 60
- T.zone.air.merge(payload)
- T.hotspot_expose(1000, CELL_VOLUME)
+ T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 3)
/////////////////////
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index 5057bb1d3b0..d5d3555e12d 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -171,7 +171,6 @@ steam.start() -- spawns the effect
..()
playsound(src.loc, "sparks", 100, 1)
var/turf/T = loc
-
if (istype(T, /turf))
T.hotspot_expose(1000, 100)
spawn (100)
@@ -953,7 +952,7 @@ steam.start() -- spawns the effect
// foam disolves when heated
// except metal foams
-/obj/effect/effect/foam/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(!metal && prob(max(0, exposed_temperature - 475)))
flick("[icon_state]-disolve", src)
@@ -1040,16 +1039,19 @@ steam.start() -- spawns the effect
New()
..()
- update_nearby_tiles(1)
-
-
+ air_update_turf(1)
Destroy()
density = 0
- update_nearby_tiles(1)
+ air_update_turf(1)
..()
+ Move()
+ var/turf/T = loc
+ ..()
+ move_update_air(T)
+
proc/updateicon()
if(metal == 1)
icon_state = "metalfoam"
@@ -1109,6 +1111,9 @@ steam.start() -- spawns the effect
if(air_group) return 0
return !density
+ CanAtmosPass()
+ return !density
+
/datum/effect/effect/system/reagents_explosion
var/amount // TNT equivalent
var/flashing = 0 // does explosion creates flash effect?
diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm
index e8b8cc4bdaf..edb7031f1e4 100644
--- a/code/game/objects/effects/glowshroom.dm
+++ b/code/game/objects/effects/glowshroom.dm
@@ -156,7 +156,7 @@
else
return
-/obj/effect/glowshroom/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/effect/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
endurance -= 5
CheckEndurance()
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 53e24b9fc6f..9ca78dd7f30 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -46,35 +46,12 @@
del(src)
/obj/effect/mine/proc/triggern2o(obj)
- //example: n2o triggerproc
- //note: im lazy
-
- for (var/turf/simulated/floor/target in range(1,src))
- if(!target.blocks_air)
-
- var/datum/gas_mixture/payload = new
- var/datum/gas/sleeping_agent/trace_gas = new
-
- trace_gas.moles = 30
- payload += trace_gas
-
- target.zone.air.merge(payload)
-
+ atmos_spawn_air(SPAWN_N2O, 360)
spawn(0)
del(src)
/obj/effect/mine/proc/triggerplasma(obj)
- for (var/turf/simulated/floor/target in range(1,src))
- if(!target.blocks_air)
-
- var/datum/gas_mixture/payload = new
-
- payload.toxins = 30
-
- target.zone.air.merge(payload)
-
- target.hotspot_expose(1000, CELL_VOLUME)
-
+ atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 360)
spawn(0)
del(src)
diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm
index 26d56c153ed..ea7ee2764b1 100644
--- a/code/game/objects/effects/spawners/bombspawner.dm
+++ b/code/game/objects/effects/spawners/bombspawner.dm
@@ -110,11 +110,15 @@
icon = 'icons/mob/screen1.dmi'
icon_state = "x"
var/btype = 0 // 0=radio, 1=prox, 2=time
+ var/btemp1 = 1500
+ var/btemp2 = 1000 // tank temperatures
timer
btype = 2
syndicate
+ btemp1 = 150
+ btemp2 = 20
proximity
btype = 1
@@ -136,14 +140,8 @@
PT.master = V
OT.master = V
- PT.air_contents.temperature = PLASMA_FLASHPOINT
- PT.air_contents.toxins = 12
- PT.air_contents.carbon_dioxide = 8
- PT.air_contents.update_values()
-
- OT.air_contents.temperature = PLASMA_FLASHPOINT
- OT.air_contents.oxygen = 20
- OT.air_contents.update_values()
+ PT.air_contents.temperature = btemp1 + T0C
+ OT.air_contents.temperature = btemp2 + T0C
var/obj/item/device/assembly/S
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index ad68762c631..53178432ef6 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -47,7 +47,7 @@
if(health <= 0)
qdel(src)
-/obj/effect/spider/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
health -= 5
healthcheck()
diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm
index f69e9025637..f3d20babcf5 100644
--- a/code/game/objects/items/dehy_carp.dm
+++ b/code/game/objects/items/dehy_carp.dm
@@ -39,5 +39,5 @@
// Make space carp
var/mob/living/simple_animal/hostile/carp/C = new /mob/living/simple_animal/hostile/carp(get_turf(src))
// Make carp non-hostile to user, yes this means
- C.faction |= "\ref[owner]"
+ C.faction |= list("syndicate", "\ref[owner]")
qdel(src)
\ No newline at end of file
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 65aa09d2567..323a86208a7 100755
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -1223,10 +1223,10 @@ var/global/list/obj/item/device/pda/PDAs = list()
if (istype(A, /obj/machinery/atmospherics/pipe/tank))
var/obj/icon = A
- for (var/mob/O in viewers(user, null))
- O << "\red [user] has used [src] on \icon[icon] [A]"
-
var/obj/machinery/atmospherics/pipe/tank/T = A
+ for (var/mob/O in viewers(user, null))
+ O << "\red [user] has used [src] on \icon[icon] [T]"
+
var/pressure = T.parent.air.return_pressure()
var/total_moles = T.parent.air.total_moles()
@@ -1424,4 +1424,4 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/proc/JFLOG(message as text)
if (config)
- log_pda("[JFLOG_DescribeSelf()] >>> [message]")
+ log_pda("[JFLOG_DescribeSelf()] >>> [message]")
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index daab9b55a69..9b02799e496 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -38,7 +38,7 @@
/obj/item/latexballon/bullet_act()
burst()
-/obj/item/latexballon/fire_act(datum/gas_mixture/air, temperature, volume)
+/obj/item/latexballon/temperature_expose(datum/gas_mixture/air, temperature, volume)
if(temperature > T0C+100)
burst()
return
diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm
index f5044b1de28..b9d21b36934 100644
--- a/code/game/objects/items/policetape.dm
+++ b/code/game/objects/items/policetape.dm
@@ -9,6 +9,9 @@
var/tape_type = /obj/item/tape
var/icon_base
+var/list/image/hazard_overlays
+var/list/tape_roll_applications = list()
+
/obj/item/tape
name = "tape"
icon = 'icons/policetape.dmi'
@@ -16,6 +19,24 @@
density = 1
var/icon_base
+/obj/item/tape/New()
+ ..()
+ if(!hazard_overlays)
+ hazard_overlays = list()
+ hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N")
+ hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E")
+ hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S")
+ hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W")
+
+/obj/item/taperoll/New() //just using tape is not enough to guarantee the overlays are genned
+ ..()
+ if(!hazard_overlays)
+ hazard_overlays = list()
+ hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N")
+ hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E")
+ hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S")
+ hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W")
+
/obj/item/taperoll/police
name = "police tape"
desc = "A roll of police tape used to block off crime scenes from the public."
@@ -97,7 +118,10 @@
usr << "\blue You finish placing the [src]." //Git Test
/obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity)
- if (proximity && istype(A, /obj/machinery/door/airlock))
+ if (!proximity)
+ return
+
+ if(istype(A, /obj/machinery/door/airlock))
var/turf/T = get_turf(A)
var/obj/item/tape/P = new tape_type(T.x,T.y,T.z)
P.loc = locate(T.x,T.y,T.z)
@@ -105,6 +129,23 @@
P.layer = 3.2
user << "\blue You finish placing the [src]."
+ if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor))
+ var/turf/F = A
+ var/direction = user.loc == F ? user.dir : turn(user.dir, 180)
+ var/icon/hazard_overlay = hazard_overlays["[direction]"]
+ if(tape_roll_applications[F] == null)
+ tape_roll_applications[F] = 0
+
+ if(tape_roll_applications[F] & direction) // hazard_overlay in F.overlays wouldn't work.
+ user.visible_message("[user] uses the adhesive of \the [src] to remove area markings from \the [F].", "You use the adhesive of \the [src] to remove area markings from \the [F].")
+ F.overlays -= hazard_overlay
+ tape_roll_applications[F] &= ~direction
+ else
+ user.visible_message("[user] applied \the [src] on \the [F] to create area markings.", "You apply \the [src] on \the [F] to create area markings.")
+ F.overlays |= hazard_overlay
+ tape_roll_applications[F] |= direction
+ return
+
/obj/item/tape/Bumped(M as mob)
if(src.allowed(M))
var/turf/T = get_turf(src)
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 015fc0f159e..e9f67a3b060 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -30,7 +30,7 @@
icon_state = "sheet-glass"
g_amt = 0
created_window = /obj/structure/window/basic
-
+
/obj/item/stack/sheet/glass/full/New()
..()
amount = 50
@@ -106,6 +106,7 @@
W.ini_dir = W.dir
W.state = 0
W.anchored = 0
+ W.air_update_turf(1)
src.use(1)
if("Full Window")
if(!src) return 1
@@ -119,6 +120,7 @@
var/obj/structure/window/W = new full_window( user.loc, 0 )
W.state = 0
W.anchored = 0
+ W.air_update_turf(1)
src.use(2)
return 0
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 97bf00120ef..ab86e4994cf 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -117,7 +117,7 @@
//Step two - washing..... it's actually in washing machine code.
//Step three - drying
-/obj/item/stack/sheet/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/item/stack/sheet/wetleather/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
if(exposed_temperature >= drying_threshold_temperature)
wetness--
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 66dd12bf0b9..3914207e538 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -25,6 +25,10 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("brown comfy chair", /obj/structure/stool/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("lime comfy chair", /obj/structure/stool/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("teal comfy chair", /obj/structure/stool/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("red comfy chair", /obj/structure/stool/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("blue comfy chair", /obj/structure/stool/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("purple comfy chair", /obj/structure/stool/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("green comfy chair", /obj/structure/stool/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1), \
), 2), \
null, \
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index eb6b59b95cd..043cad9f443 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -6,7 +6,7 @@
icon = 'icons/obj/trash.dmi'
w_class = 1.0
desc = "This is rubbish."
- autoignition_temperature = AUTOIGNITION_PAPER
+
raisins
name = "4no raisins"
icon_state= "4no_raisins"
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index c2f37d4a455..3ad8dd7a509 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -156,7 +156,7 @@ RCD
if(do_after(user, 50))
if(!useResource(20, user)) return 0
activate()
- del(A)
+ qdel(A)
return 1
return 0
return 0
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 4b009aef988..902ce1e052a 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -34,7 +34,7 @@
m_amt = 0
max_water = 30
sprite_name = "miniFE"
-
+
/obj/item/weapon/extinguisher/examine()
set src in usr
@@ -160,6 +160,7 @@
if(isliving(atm)) //For extinguishing mobs on fire
var/mob/living/M = atm
M.ExtinguishMob()
+
if(W.loc == my_target) break
sleep(2)
@@ -168,4 +169,3 @@
step(user, user.inertia_dir)
else
return ..()
-
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 67d4528ef1e..af8b8e2fe5f 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -189,8 +189,8 @@
/obj/item/weapon/flamethrower/proc/flame_turf(turflist)
if(!lit || operating) return
operating = 1
- for(var/turf/T in turflist)
- if(T.density || istype(T, /turf/space))
+ for(var/turf/simulated/T in turflist)
+ if(!T.air)
break
if(!previousturf && length(turflist)>1)
previousturf = get_turf(src)
@@ -210,17 +210,16 @@
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target)
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
//Transfer 5% of current tank air contents to turf
- var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100))
- //air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
- new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.toxins,get_dir(loc,target))
- air_transfer.toxins = 0
+ var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.05)
+ air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
target.assume_air(air_transfer)
//Burn it based on transfered gas
- //target.hotspot_expose(part4.air_contents.temperature*2,300)
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE
//location.hotspot_expose(1000,500,1)
+ air_master.add_to_active(target, 0)
return
+
/obj/item/weapon/flamethrower/full/New(var/loc)
..()
weldtool = new /obj/item/weapon/weldingtool(src)
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index cccd0564f8f..6237792040f 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -8,8 +8,6 @@
var/mob/affecting = null
var/deity_name = "Christ"
- autoignition_temperature = 522 // Kelvin
-
suicide_act(mob/user)
viewers(user) << "[user] stares into [src.name] and attempts to trascend understanding of the universe!"
return (user.dust())
@@ -20,8 +18,6 @@
desc = "To be applied to the head repeatedly."
icon_state ="bible"
- autoignition_temperature = 0 // Not actually paper
-
/obj/item/weapon/storage/bible/booze/New()
..()
new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src)
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 03f627e56e7..04615c623e8 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -26,9 +26,6 @@
item_state = "syringe_kit"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
- autoignition_temperature = 522 // Kelvin
-
-
/obj/item/weapon/storage/box/large
name = "large box"
desc = "You could build a fort with this."
@@ -39,8 +36,6 @@
storage_slots = 21
max_combined_w_class = 42 // 21*2
- autoignition_temperature = 530 // Kelvin
-
/obj/item/weapon/storage/box/survival
New()
..()
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index 89df0ed8d01..74ab6d991ac 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -80,9 +80,8 @@
New()
..()
- //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
- return
+ air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
+
/obj/item/weapon/tank/jetpack/oxygen
name = "Jetpack (Oxygen)"
@@ -92,9 +91,7 @@
New()
..()
- //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
- return
+ air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
/obj/item/weapon/tank/jetpack/oxygen/harness
name = "jet harness (oxygen)"
@@ -113,9 +110,7 @@
New()
..()
- //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
- return
+ air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
/obj/item/weapon/tank/jetpack/carbondioxide
name = "Jetpack (Carbon Dioxide)"
@@ -128,9 +123,7 @@
..()
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
src.ion_trail.set_up(src)
- //src.air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- air_contents.adjust(0,(6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
- return
+ air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
examine()
set src in usr
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 1533b5d2c51..70f7a8235a4 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -19,8 +19,7 @@
New()
..()
- //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
+ src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -59,9 +58,6 @@
trace_gas.moles = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
src.air_contents.trace_gases += trace_gas
- //
- air_contents.update_values()
-
return
/*
@@ -85,12 +81,8 @@
src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
src.air_contents.nitrogen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
- //
- src.air_contents.update_values()
-
return
-
/*
* Plasma
*/
@@ -101,15 +93,13 @@
flags = CONDUCT
slot_flags = null //they have no straps!
-
/obj/item/weapon/tank/plasma/New()
..()
src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
- //
- src.air_contents.update_values()
return
+
/obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
..()
@@ -152,9 +142,6 @@
New()
..()
src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- //
- src.air_contents.update_values()
-
return
@@ -182,7 +169,6 @@
New()
..()
src.air_contents.oxygen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- src.air_contents.update_values()
return
/*
@@ -199,8 +185,6 @@
..()
src.air_contents.nitrogen = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
- //
- src.air_contents.update_values()
return
/obj/item/weapon/tank/nitrogen/examine()
@@ -224,7 +208,4 @@
..()
src.air_contents.oxygen -= (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
src.air_contents.nitrogen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
- //
- src.air_contents.update_values()
-
return
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index ebd2d4626f1..afaebdc4fe4 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -357,8 +357,8 @@
var/datum/gas_mixture/G = T.air
if(get_dist(T, src) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air
G.temperature = 2
- update_nearby_tiles()
- var/hotspot = (locate(/obj/fire) in T)
+ air_update_turf()
+ var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot && !istype(T, /turf/space))
var/CT = 10
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 761b445d7ee..5f4cfbe49c9 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -267,7 +267,6 @@
var/turf/location = get_turf(user)
if (istype(location, /turf))
location.hotspot_expose(700, 50, 1)
-
if(isliving(O))
var/mob/living/L = O
L.IgniteMob()
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 7909019481e..edc0426c5b8 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -178,14 +178,14 @@ obj/item/weapon/twohanded/
if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit
if(istype(A,/obj/structure/window))
- var/pdiff=performWallPressureCheck(A.loc)
+ /* var/pdiff=performWallPressureCheck(A.loc)
if(pdiff>0)
message_admins("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(A.loc)]!")
- log_admin("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([user.ckey]) at [A.loc]!")
+ log_admin("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([user.ckey]) at [A.loc]!")*///TODO: Figure out how the hell to remake this proc
var/obj/structure/window/W = A
W.destroy()
else
- del(A)
+ qdel(A)
/*
diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm
index 532454b445f..aeabb4e887b 100644
--- a/code/game/objects/structures/barsign.dm
+++ b/code/game/objects/structures/barsign.dm
@@ -2,6 +2,7 @@
icon = 'icons/obj/barsigns.dmi'
icon_state = "empty"
anchored = 1
+ var/nopick = 0
New()
ChangeSign(pick("magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thecavern", "cindikate", "theorchard", "lv426", "zocalo", "4theemprah", "ishimura", "tardis", "quarks", "tenforward", "thepranicngpony", "vault13", "solaris", "thehive", "cantina", "theouterspess", "milliways42", "thetimeofeve", "spaceasshole", "dwarffortress", "thebark", "thedrunkcarp", "theharmbaton", "thenest", "officerbeersky", "thesingulo"))
return
@@ -10,3 +11,18 @@
//on = 0
//brightness_on = 4 //uncomment these when the lighting fixes get in
return
+
+/obj/structure/sign/double/barsign/attackby(obj/item/I, mob/user)
+ if(nopick)
+ return
+
+ if(istype(I, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/card = I
+ if(access_bar in card.GetAccess())
+ var/sign_type = input(user, "What would you like to change the barsign to?") as null|anything in list("Off", "Magma Sea", "Limbo", "Rusty Axe", "Armok Bar", "Broken Drum", "Mead bay", "The Cavern", "Cindi Kate", "The Orchard", "LV 426", "Zocalo", "4 The Emprah", "Ishimura", "Tardis", "Quarks", "Ten Forward", "The Pranicng Pony", "Vault 13", "Solaris", "The Hive", "Cantina", "The Outer Spess", "Milliways 42", "The Time Of Eve", "Space Asshole", "Dwarf Fortress", "The Bark", "The Drunk Carp", "The Harm Baton", "The Nest", "Officer Beersky", "The Singulo", "On")
+ if(sign_type == null)
+ return
+ else
+ sign_type = replacetext(lowertext(sign_type), " ", "") // lowercase, strip spaces - along with choices for user options, avoids huge if-else-else
+ src.ChangeSign(sign_type)
+ user << "You change the barsign."
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index fcead78a565..48dd73532bf 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -105,6 +105,10 @@
new /obj/item/weapon/storage/backpack/cultpack (src)
new /obj/item/weapon/storage/fancy/candle_box(src)
new /obj/item/weapon/storage/fancy/candle_box(src)
+ new /obj/item/clothing/gloves/ring/silver(src)
+ new /obj/item/clothing/gloves/ring/silver(src)
+ new /obj/item/clothing/gloves/ring/gold(src)
+ new /obj/item/clothing/gloves/ring/gold(src)
return
diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm
index e48e8419d2c..53cc69d98ae 100644
--- a/code/game/objects/structures/curtains.dm
+++ b/code/game/objects/structures/curtains.dm
@@ -1,14 +1,17 @@
+#define SHOWER_OPEN_LAYER OBJ_LAYER + 0.4
+#define SHOWER_CLOSED_LAYER MOB_LAYER + 0.1
+
/obj/structure/curtain
icon = 'icons/obj/curtain.dmi'
name = "curtain"
icon_state = "closed"
- layer = MOB_LAYER + 0.1
+ layer = SHOWER_CLOSED_LAYER
opacity = 1
density = 0
/obj/structure/curtain/open
icon_state = "open"
- layer = OBJ_LAYER
+ layer = SHOWER_OPEN_LAYER
opacity = 0
/obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone)
@@ -27,10 +30,10 @@
opacity = !opacity
if(opacity)
icon_state = "closed"
- layer = MOB_LAYER + 0.1
+ layer = SHOWER_CLOSED_LAYER
else
icon_state = "open"
- layer = OBJ_LAYER
+ layer = SHOWER_OPEN_LAYER
/obj/structure/curtain/black
name = "black curtain"
@@ -45,3 +48,12 @@
name = "shower curtain"
color = "#ACD1E9"
alpha = 200
+
+/obj/structure/curtain/open/shower/engineering
+ color = "#FFA500"
+
+/obj/structure/curtain/open/shower/security
+ color = "#AA0000"
+
+#undef SHOWER_OPEN_LAYER
+#undef SHOWER_CLOSED_LAYER
\ No newline at end of file
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index e00b7f1c366..b69126768e0 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -6,68 +6,6 @@
// Also affects admin alerts.
#define FALSEDOOR_MAX_PRESSURE_DIFF 25.0
-/**
-* Gets the highest and lowest pressures from the tiles in cardinal directions
-* around us, then checks the difference.
-*/
-/proc/getOPressureDifferential(var/turf/loc)
- var/minp=16777216;
- var/maxp=0;
- for(var/dir in cardinal)
- var/turf/simulated/T=get_turf(get_step(loc,dir))
- var/cp=0
- if(T && istype(T) && T.zone)
- var/datum/gas_mixture/environment = T.return_air()
- cp = environment.return_pressure()
- else
- if(istype(T,/turf/simulated))
- continue
- if(cpmaxp)maxp=cp
- return abs(minp-maxp)
-
-// Checks pressure here vs. around us.
-/proc/performFalseWallPressureCheck(var/turf/loc)
- var/turf/simulated/lT=loc
- if(!istype(lT) || !lT.zone)
- return 0
- var/datum/gas_mixture/myenv=lT.return_air()
- var/pressure=myenv.return_pressure()
-
- for(var/dir in cardinal)
- var/turf/simulated/T=get_turf(get_step(loc,dir))
- if(T && istype(T) && T.zone)
- var/datum/gas_mixture/environment = T.return_air()
- var/pdiff = abs(pressure - environment.return_pressure())
- if(pdiff > FALSEDOOR_MAX_PRESSURE_DIFF)
- return pdiff
- return 0
-
-/proc/performWallPressureCheck(var/turf/loc)
- var/pdiff = getOPressureDifferential(loc)
- if(pdiff > FALSEDOOR_MAX_PRESSURE_DIFF)
- return pdiff
- return 0
-
-/client/proc/pdiff()
- set name = "Get PDiff"
- set category = "Debug"
-
- if(!mob || !holder)
- return
- var/turf/T = mob.loc
-
- if (!( istype(T, /turf) ))
- return
-
- var/pdiff = getOPressureDifferential(T)
- var/fwpcheck=performFalseWallPressureCheck(T)
- var/wpcheck=performWallPressureCheck(T)
-
- src << "Pressure Differential (cardinals): [pdiff]"
- src << "FWPCheck: [fwpcheck]"
- src << "WPCheck: [wpcheck]"
-
/obj/structure/falsewall
name = "wall"
desc = "A huge chunk of metal used to seperate rooms."
@@ -97,7 +35,7 @@
for(var/obj/structure/falsewall/W in range(temploc,1))
W.relativewall()
..()
-
+
/obj/structure/falsewall/relativewall()
if(!density)
@@ -140,7 +78,7 @@
SetOpacity(1)
update_icon()
opening = 0
-
+
/obj/structure/falsewall/proc/do_the_flick()
if(density)
flick("[walltype]fwall_opening", src)
@@ -154,7 +92,7 @@
relativewall()
else
icon_state = "[walltype]fwall_open"
-
+
/obj/structure/falsewall/proc/ChangeToWall(delete = 1)
var/turf/T = get_turf(src)
if(!walltype || walltype == "metal")
@@ -257,7 +195,7 @@
junction |= get_dir(src,W)
icon_state = "rwall[junction]"
return
-
+
/*
* Uranium Falsewalls
*/
@@ -321,7 +259,17 @@
desc = "A wall with plasma plating. This is definately a bad idea."
icon_state = ""
mineral = "plasma"
- walltype = "plasma"
+ walltype = "plasma"
+
+/obj/structure/falsewall/plasma/proc/burnbabyburn(user)
+ playsound(src, 'sound/items/Welder.ogg', 100, 1)
+ atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 400)
+ new /obj/structure/girder/displaced(loc)
+ qdel(src)
+
+/obj/structure/falsewall/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ if(exposed_temperature > 300)
+ burnbabyburn()
//-----------wtf?-----------start
/obj/structure/falsewall/clown
diff --git a/code/game/objects/structures/fullwindow.dm b/code/game/objects/structures/fullwindow.dm
index cff4b75de02..71c6e56616d 100644
--- a/code/game/objects/structures/fullwindow.dm
+++ b/code/game/objects/structures/fullwindow.dm
@@ -10,18 +10,6 @@
return 1
return 0
-/obj/structure/window/full/update_nearby_tiles(need_rebuild)
- if(!air_master) return 0
- if(!loc) return 0
-
- var/turf/simulated/source = get_turf(src)
- if(istype(source))
- air_master.tiles_to_update |= source
- for(var/dir in cardinal)
- var/turf/simulated/target = get_step(source,dir)
- if(istype(target)) air_master.tiles_to_update |= target
- return 1
-
/obj/structure/window/full/is_fulltile()
return 1
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index f5a2e615b6a..8057ce7e922 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -71,17 +71,10 @@
if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg)
if(!anchored)
if(S.amount < 2) return
- var/pdiff=performWallPressureCheck(src.loc)
- if(!pdiff)
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall (src.loc)
- del(src)
- else
- user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it."
- message_admins("Attempted false wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!")
- log_admin("Attempted false wall made by [user.real_name] (user.ckey) at [loc] had a pressure difference of [pdiff]!")
- return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall (src.loc)
+ del(src)
else
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
@@ -99,17 +92,10 @@
if(/obj/item/stack/sheet/plasteel)
if(!anchored)
if(S.amount < 2) return
- var/pdiff=performWallPressureCheck(src.loc)
- if(!pdiff)
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/reinforced (src.loc)
- del(src)
- else
- user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it."
- message_admins("Attempted false rwall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!")
- log_admin("Attempted false rwall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!")
- return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/reinforced (src.loc)
+ del(src)
else
if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
if(S.amount < 1) return ..()
@@ -139,18 +125,11 @@
var/M = S.sheettype
if(!anchored)
if(S.amount < 2) return
- var/pdiff=performWallPressureCheck(src.loc)
- if(!pdiff)
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- var/F = text2path("/obj/structure/falsewall/[M]")
- new F (src.loc)
- del(src)
- else
- user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it."
- message_admins("Attempted false [M] wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!")
- log_admin("Attempted false [M] wall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!")
- return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ var/F = text2path("/obj/structure/falsewall/[M]")
+ new F (src.loc)
+ del(src)
else
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
@@ -187,7 +166,7 @@
if(health <= 0)
new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
-
+
if(istype(Proj ,/obj/item/projectile/beam/pulse))
src.ex_act(2)
..()
@@ -248,7 +227,7 @@
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
dismantle()
-
+
/obj/structure/cultgirder/proc/dismantle()
new /obj/effect/decal/remains/human(get_turf(src))
qdel(src)
@@ -256,7 +235,7 @@
/obj/structure/cultgirder/blob_act()
if(prob(40))
dismantle()
-
+
/obj/structure/cultgirder/bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets?????
health -= Proj.damage
..()
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 548bcbe0986..bb5838ceffd 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -258,7 +258,7 @@
return 0
return 0
-/obj/structure/grille/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/grille/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(!destroyed)
if(exposed_temperature > T0C + 1500)
health -= 1
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index 3cb32653054..5d4eab9c35b 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -28,10 +28,10 @@
New(location)
..()
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf()
Del()
- update_nearby_tiles()
+ air_update_turf()
..()
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
@@ -217,7 +217,7 @@
Close()
else
Open()
- update_nearby_tiles()
+ air_update_turf()
proc/Open()
isSwitchingStates = 1
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index 127ee7ee638..d4d3dc787c0 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -20,12 +20,17 @@
..()
icon_state = mineralType
name = "[mineralType] door"
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
Destroy()
- update_nearby_tiles()
+ air_update_turf(1)
..()
+ Move()
+ var/turf/T = loc
+ ..()
+ move_update_air(T)
+
Bumped(atom/user)
..()
if(!state)
@@ -51,6 +56,9 @@
return !opacity
return !density
+ CanAtmosPass()
+ return !density
+
proc/TryToSwitchState(atom/user)
if(isSwitchingStates) return
if(ismob(user))
@@ -82,7 +90,7 @@
state = 1
update_icon()
isSwitchingStates = 0
- update_nearby_tiles()
+ air_update_turf()
proc/Close()
isSwitchingStates = 1
@@ -94,7 +102,7 @@
state = 0
update_icon()
isSwitchingStates = 0
- update_nearby_tiles()
+ air_update_turf()
update_icon()
if(state)
@@ -187,34 +195,21 @@
/obj/structure/mineral_door/transparent/plasma
mineralType = "plasma"
-/*
- attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
TemperatureAct(100)
..()
- fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
TemperatureAct(exposed_temperature)
proc/TemperatureAct(temperature)
- for(var/turf/simulated/floor/target_tile in range(2,loc))
-
- var/datum/gas_mixture/napalm = new
-
- var/toxinsToDeduce = temperature/10
-
- napalm.toxins = toxinsToDeduce
- napalm.temperature = 200+T0C
-
- target_tile.assume_air(napalm)
- spawn (0) target_tile.hotspot_expose(temperature, 400)
-
- hardness -= toxinsToDeduce/100
- CheckHardness()
-*/
+ atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500)
+ hardness = 0
+ CheckHardness()
/obj/structure/mineral_door/transparent/diamond
mineralType = "diamond"
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 2a493bdff37..5d6dac37720 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -54,13 +54,20 @@
buckle_mob(M, user)
return
+/obj/structure/stool/bed/proc/afterbuckle(mob/M as mob) //Called after somebody buckled / unbuckled
+ return
+
/obj/structure/stool/bed/proc/unbuckle()
if(buckled_mob)
if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt
buckled_mob.buckled = null
buckled_mob.anchored = initial(buckled_mob.anchored)
buckled_mob.update_canmove()
+
+ var/M = buckled_mob
buckled_mob = null
+
+ afterbuckle(M)
return
/obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob)
@@ -110,6 +117,7 @@
M.update_canmove()
src.buckled_mob = M
src.add_fingerprint(user)
+ afterbuckle(M)
return
/*
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 6a5598a37ef..85e47ec0c40 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -73,7 +73,6 @@
// Chair types
/obj/structure/stool/bed/chair/wood
- autoignition_temperature = AUTOIGNITION_WOOD
// TODO: Special ash subtype that looks like charred chair legs
/obj/structure/stool/bed/chair/wood/normal
@@ -97,26 +96,53 @@
/obj/structure/stool/bed/chair/comfy
name = "comfy chair"
desc = "It looks comfy."
+ icon_state = "comfychair"
+ color = rgb(255,255,255)
+ var/image/armrest = null
+
+/obj/structure/stool/bed/chair/comfy/New()
+ armrest = image("icons/obj/objects.dmi", "comfychair_armrest")
+ armrest.layer = MOB_LAYER + 0.1
+
+ return ..()
+
+/obj/structure/stool/bed/chair/comfy/afterbuckle()
+ if(buckled_mob)
+ overlays += armrest
+ else
+ overlays -= armrest
/obj/structure/stool/bed/chair/comfy/brown
- icon_state = "comfychair_brown"
+ color = rgb(141,70,0)
-/obj/structure/stool/bed/chair/comfy/beige
- icon_state = "comfychair_beige"
+/obj/structure/stool/bed/chair/comfy/red
+ color = rgb(218,2,10)
/obj/structure/stool/bed/chair/comfy/teal
- icon_state = "comfychair_teal"
+ color = rgb(0,234,250)
+
+/obj/structure/stool/bed/chair/comfy/black
+ color = rgb(60,60,60)
+
+/obj/structure/stool/bed/chair/comfy/green
+ color = rgb(1,196,8)
+
+/obj/structure/stool/bed/chair/comfy/purp
+ color = rgb(112,2,176)
+
+/obj/structure/stool/bed/chair/comfy/blue
+ color = rgb(2,9,210)
+
+/obj/structure/stool/bed/chair/comfy/beige
+ color = rgb(255,253,195)
+
+/obj/structure/stool/bed/chair/comfy/lime
+ color = rgb(255,251,0)
/obj/structure/stool/bed/chair/office
anchored = 0
movable = 1
-/obj/structure/stool/bed/chair/comfy/black
- icon_state = "comfychair_black"
-
-/obj/structure/stool/bed/chair/comfy/lime
- icon_state = "comfychair_lime"
-
/obj/structure/stool/bed/chair/office/Move()
..()
if(buckled_mob)
@@ -166,7 +192,7 @@
name = "old ratty sofa"
icon_state = "sofamiddle"
anchored = 1
- density = 1
+
/obj/structure/stool/bed/chair/sofa/left
icon_state = "sofaend_left"
/obj/structure/stool/bed/chair/sofa/right
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 814fe2fc07e..9d50bbd9c4e 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -561,7 +561,6 @@
icon_state = "wood_table"
parts = /obj/item/weapon/table_parts/wood
health = 50
- autoignition_temperature = AUTOIGNITION_WOOD // TODO: Special ash subtype that looks like charred table legs.
/obj/structure/table/woodentable/attackby(obj/item/I as obj, mob/user as mob, params)
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index b41b5be8afc..a9ef0455066 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -30,20 +30,32 @@ obj/structure/windoor_assembly
obj/structure/windoor_assembly/New(dir=NORTH)
..()
src.ini_dir = src.dir
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
obj/structure/windoor_assembly/Destroy()
density = 0
- update_nearby_tiles()
+ air_update_turf(1)
..()
+/obj/structure/windoor_assembly/Move()
+ var/turf/T = loc
+ ..()
+ move_update_air(T)
+
/obj/structure/windoor_assembly/update_icon()
icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]"
-/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0)
+/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(istype(mover) && mover.checkpass(PASSGLASS))
return 1
if(get_dir(loc, target) == dir) //Make sure looking at appropriate border
+ if(air_group) return 0
+ return !density
+ else
+ return 1
+
+/obj/structure/windoor_assembly/CanAtmosPass(var/turf/T)
+ if(get_dir(loc, T) == dir)
return !density
else
return 1
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 568f4d45e9a..4bcadcb265d 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -60,13 +60,9 @@ var/global/wcColored
/obj/structure/window/bullet_act(var/obj/item/projectile/Proj)
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
health -= Proj.damage
- update_nearby_icons()
+ air_update_turf(1)
..()
if(health <= 0)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window destroyed by [Proj.firer.name] ([formatPlayerPanel(Proj.firer,Proj.firer.ckey)]) via \an [Proj]! pdiff = [pdiff] at [formatJumpTo(loc)]!")
- log_admin("Window destroyed by ([Proj.firer.ckey]) via \an [Proj]! pdiff = [pdiff] at [loc]!")
destroy()
return
@@ -118,11 +114,7 @@ var/global/wcColored
..()
visible_message("[src] was hit by [AM].")
var/tforce = 0
- var/mob/M=null
- if(ismob(AM))
- tforce = 40
- M=AM
- else if(isobj(AM))
+ if(isobj(AM))
var/obj/item/I = AM
tforce = I.throwforce
if(reinf) tforce *= 0.25
@@ -132,23 +124,7 @@ var/global/wcColored
anchored = 0
update_nearby_icons()
step(src, get_dir(AM, src))
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- if(M)
- msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] deanchored by [M.real_name][isAntag(M) ? "(ANTAG)" : ""] ([formatPlayerPanel(M,M.ckey)])!")
- log_admin("Window with pdiff [pdiff] at [loc] deanchored by [M.real_name] ([M.ckey])!")
- else
- msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] deanchored by [AM]!")
- log_admin("Window with pdiff [pdiff] at [loc] deanchored by [AM]!")
if(health <= 0)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- if(M)
- msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [M.real_name][isAntag(M) ? "(ANTAG)" : ""] ([formatPlayerPanel(M,M.ckey)])!")
- log_admin("Window with pdiff [pdiff] at [loc] destroyed by [M.real_name] ([M.ckey])!")
- else
- msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [AM]!")
- log_admin("Window with pdiff [pdiff] at [loc] destroyed by [AM]!")
destroy()
@@ -156,10 +132,6 @@ var/global/wcColored
if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
user.visible_message("[user] smashes through [src]!")
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window destroyed by hulk [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) with pdiff [pdiff] at [formatJumpTo(loc)]!")
- log_admin("Window destroyed by hulk [user.real_name] ([user.ckey]) with pdiff [pdiff] at [loc]!")
destroy()
else if (usr.a_intent == "harm")
user.changeNext_move(CLICK_CD_MELEE)
@@ -185,9 +157,6 @@ var/global/wcColored
health -= damage
if(health <= 0)
user.visible_message("[user] smashes through [src]!")
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window destroyed by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) with pdiff [pdiff] at [formatJumpTo(loc)]!")
destroy()
else //for nicer text~
user.visible_message("[user] smashes into [src]!")
@@ -255,21 +224,11 @@ var/global/wcColored
update_nearby_icons()
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
user << (anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor.")
- if(!anchored)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window with pdiff [pdiff] deanchored by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!")
- log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!")
else if(!reinf)
anchored = !anchored
update_nearby_icons()
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
user << (anchored ? "You have fastened the window to the floor." : "You have unfastened the window.")
- if(!anchored)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window with pdiff [pdiff] deanchored by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!")
- log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!")
else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <= 1)
state = 1 - state
playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
@@ -297,7 +256,7 @@ var/global/wcColored
user << "You have disassembled the window."
disassembled = 1
density = 0
- update_nearby_tiles()
+ air_update_turf(1)
update_nearby_icons()
del(src)
else
@@ -308,10 +267,6 @@ var/global/wcColored
anchored = 0
update_nearby_icons()
step(src, get_dir(user, src))
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window with pdiff [pdiff] deanchored by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!")
- log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!")
else
playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1)
..()
@@ -328,9 +283,6 @@ var/global/wcColored
if(sound_effect)
playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1)
if(health <= 0)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- msg_admin_attack("Window with pdiff [pdiff] broken at [formatJumpTo(loc)]!")
destroy()
return
@@ -344,10 +296,9 @@ var/global/wcColored
usr << "It is fastened to the floor therefore you can't rotate it!"
return 0
- update_nearby_tiles(need_rebuild=1) //Compel updates before
dir = turn(dir, 90)
// updateSilicate()
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
ini_dir = dir
return
@@ -361,10 +312,9 @@ var/global/wcColored
usr << "It is fastened to the floor therefore you can't rotate it!"
return 0
- update_nearby_tiles(need_rebuild=1) //Compel updates before
dir = turn(dir, 270)
// updateSilicate()
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
ini_dir = dir
return
@@ -389,24 +339,23 @@ var/global/wcColored
ini_dir = dir
if(!color && !istype(src,/obj/structure/window/plasmabasic) && !istype(src,/obj/structure/window/plasmareinforced))
color = color_windows(src)
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf(1)
update_nearby_icons()
return
/obj/structure/window/Destroy()
density = 0
- update_nearby_tiles()
+ air_update_turf(1)
if(loc && !disassembled)
playsound(get_turf(src), "shatter", 70, 1)
- update_nearby_icons()
..()
/obj/structure/window/Move()
- update_nearby_tiles(need_rebuild=1)
+ var/turf/T = loc
..()
dir = ini_dir
- update_nearby_tiles(need_rebuild=1)
+ move_update_air(T)
//checks if this window is full-tile one
/obj/structure/window/proc/is_fulltile()
@@ -414,7 +363,14 @@ var/global/wcColored
return 1
return 0
-//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc!
+/obj/structure/window/CanAtmosPass(turf/T)
+ if(get_dir(loc, T) == dir)
+ return !density
+ if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST)
+ return !density
+ return 1
+
+//This proc is used to update the icons of nearby windows.
/obj/structure/window/proc/update_nearby_icons()
if(!loc) return 0
update_icon()
@@ -425,7 +381,7 @@ var/global/wcColored
/obj/structure/window/update_icon()
return
-/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 800)
hit(round(exposed_volume / 100), 0)
..()
@@ -447,15 +403,23 @@ var/global/wcColored
/obj/structure/window/plasmabasic/New(Loc,re=0)
..()
ini_dir = dir
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf()
update_nearby_icons()
return
+/obj/structure/window/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ if(exposed_temperature > T0C + 32000)
+ hit(round(exposed_volume / 1000), 0)
+ ..()
+
/obj/structure/window/plasmabasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 32000)
hit(round(exposed_volume / 1000), 0)
..()
+/obj/structure/window/plasmabasic/BlockSuperconductivity()
+ return 1
+
/obj/structure/window/plasmareinforced
name = "reinforced plasma window"
desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof."
@@ -470,13 +434,19 @@ var/global/wcColored
/obj/structure/window/plasmareinforced/New(Loc,re=0)
..()
ini_dir = dir
- update_nearby_tiles(need_rebuild=1)
+ air_update_turf()
update_nearby_icons()
return
+/obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ return
+
/obj/structure/window/plasmareinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
+/obj/structure/window/plasmareinforced/BlockSuperconductivity()
+ return 1 //okay this SHOULD MAKE THE TOXINS CHAMBER WORK
+
/obj/structure/window/reinforced
name = "reinforced window"
desc = "It looks rather strong. Might take a few good hits to shatter it."
diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm
index 6bd631e88f3..f0d0544bd45 100644
--- a/code/game/shuttle_engines.dm
+++ b/code/game/shuttle_engines.dm
@@ -14,6 +14,9 @@
if(!height || air_group) return 0
else return ..()
+ CanAtmosPass(turf/T)
+ return !density
+
/obj/structure/shuttle/engine
name = "engine"
density = 1
diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm
index 3a9f559e133..fecdf392d51 100644
--- a/code/game/turfs/simulated.dm
+++ b/code/game/turfs/simulated.dm
@@ -15,6 +15,9 @@
..()
levelupdate()
+/turf/simulated/proc/burn_tile()
+ return
+
/turf/simulated/proc/MakeSlippery(var/wet_setting = 1) // 1 = Water, 2 = Lube
if(wet >= wet_setting)
return
@@ -157,7 +160,7 @@
else
M.inertia_dir = 0
return
- else if(!istype(M, /mob/living/carbon/metroid) || (M:species.bodyflags & FEET_NOSLIP))
+ else if(!istype(M, /mob/living/carbon/slime) || (M:species.bodyflags & FEET_NOSLIP))
if (M.m_intent == "run" && prob(30))
M.stop_pulling()
step(M, M.dir)
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index e75a0d4dc33..55954dc957f 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -44,15 +44,6 @@ var/list/wood_icons = list("wood","wood-broken")
else
icon_regular_floor = icon_state
-/turf/simulated/floor/ignite(var/temperature)
- on_fire=1
- visible_message("\The [src] bursts into flame!")
- overlays += image(fire_dmi,fire_sprite)
- spawn(rand(fire_time_min,fire_time_max) SECONDS)
- if(!on_fire)
- return
- burn_tile()
-
//turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
// if ((istype(mover, /obj/machinery/vehicle) && !(src.burnt)))
// if (!( locate(/obj/machinery/mass_driver, src) ))
@@ -302,7 +293,7 @@ turf/simulated/floor/proc/update_icon()
src.icon_state = "sand[pick("1","2","3")]"
broken = 1
-/turf/simulated/floor/proc/burn_tile()
+/turf/simulated/floor/burn_tile()
if(istype(src,/turf/simulated/floor/engine)) return
if(istype(src,/turf/simulated/floor/plating/airless/asteroid)) return//Asteroid tiles don't burn
if(broken || burnt) return
diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm
index 9f1288de647..91e4fd2a9b9 100644
--- a/code/game/turfs/simulated/floor_types.dm
+++ b/code/game/turfs/simulated/floor_types.dm
@@ -74,14 +74,14 @@
/turf/simulated/floor/engine/n20
New()
. = ..()
- //var/datum/gas_mixture/adding = new
+ var/datum/gas_mixture/adding = new
var/datum/gas/sleeping_agent/trace_gas = new
- air.trace_gases += trace_gas
- trace_gas.moles = 70000
- air.oxygen = 0
- air.nitrogen = 0
- air.update_values()
+ trace_gas.moles = 2000
+ adding.trace_gases += trace_gas
+ adding.temperature = T20C
+
+ assume_air(adding)
/turf/simulated/floor/engine/vacuum
name = "vacuum floor"
@@ -120,7 +120,7 @@
/turf/simulated/floor/greengrid
icon = 'icons/turf/floors.dmi'
icon_state = "gcircuit"
-
+
/turf/simulated/floor/greengrid/airless
icon_state = "gcircuit"
name = "airless floor"
@@ -154,7 +154,7 @@
name = "plating"
icon = 'icons/turf/floors.dmi'
icon_state = "plating"
-
+
/turf/simulated/shuttle/plating/vox //Vox skipjack plating
oxygen = 0
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
@@ -162,7 +162,7 @@
/turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph
name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle.
icon_state = "floor4"
-
+
/turf/simulated/shuttle/floor4/vox //Vox skipjack floors
name = "skipjack floor"
oxygen = 0
@@ -235,10 +235,10 @@
name = "snow"
icon = 'icons/turf/snow.dmi'
icon_state = "snow"
-
+
/turf/simulated/floor/plating/snow/ex_act(severity)
return
-
+
/turf/simulated/floor/snow
name = "snow"
icon = 'icons/turf/snow.dmi'
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 6a763055b3b..4dd7d14d460 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -317,10 +317,6 @@
else if(!is_sharp(W) && W.force >= 10 || W.force >= 20)
user << "\The [src] crumbles away under the force of your [W.name]."
src.dismantle_wall(1)
-
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff)
- message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) broke a rotting wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!")
return
//THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects
@@ -374,10 +370,6 @@
if( user.loc == T && user.get_active_hand() == WT )
user << "You remove the outer plating."
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff)
- message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) dismanted a wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!")
- log_admin("[user.real_name] ([user.ckey]) dismanted a wall with a pdiff of [pdiff] at [loc]!")
dismantle_wall()
return
else
@@ -397,10 +389,6 @@
if( user.loc == T && user.get_active_hand() == W )
user << "You remove the outer plating."
dismantle_wall()
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff)
- message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) dismantled with a pdiff of [pdiff] at [formatJumpTo(loc)]!")
- log_admin("[user.real_name] ([user.ckey]) dismantled with a pdiff of [pdiff] at [loc]!")
for(var/mob/O in viewers(user, 5))
O.show_message("The wall was sliced apart by [user]!", 1, "You hear metal being sliced apart.", 2)
return
@@ -418,10 +406,6 @@
if( user.loc == T && user.get_active_hand() == W )
user << "Your drill tears though the last of the reinforced plating."
dismantle_wall()
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff)
- message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) drilled a wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!")
- log_admin("[user.real_name] ([user.ckey]) drilled a wall with a pdiff of [pdiff] at [loc]!")
for(var/mob/O in viewers(user, 5))
O.show_message("The wall was drilled through by [user]!", 1, "You hear the grinding of metal.", 2)
return
@@ -443,10 +427,6 @@
playsound(src, "sparks", 50, 1)
playsound(src, 'sound/weapons/blade1.ogg', 50, 1)
dismantle_wall(1)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff)
- message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) sliced up a wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!")
- log_admin("[user.real_name] ([user.ckey]) sliced up a wall with a pdiff of [pdiff] at [loc]!")
for(var/mob/O in viewers(user, 5))
O.show_message("The wall was sliced apart by [user]!", 1, "You hear metal being sliced apart and sparks flying.", 2)
return
diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm
index 6f0e99475ab..393ff4beb8e 100644
--- a/code/game/turfs/simulated/walls_mineral.dm
+++ b/code/game/turfs/simulated/walls_mineral.dm
@@ -78,47 +78,29 @@
/turf/simulated/wall/mineral/plasma
name = "plasma wall"
- desc = "A wall with plasma plating. This is definitely a bad idea."
+ desc = "A wall with plasma plating. This is definately a bad idea."
icon_state = "plasma0"
walltype = "plasma"
mineral = "plasma"
+ thermal_conductivity = 0.04
-/turf/simulated/wall/mineral/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/turf/simulated/wall/mineral/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
ignite(is_hot(W))
return
..()
/turf/simulated/wall/mineral/plasma/proc/PlasmaBurn(temperature)
- var/pdiff=performWallPressureCheck(src.loc)
- if(pdiff>0)
- message_admins("Plasma wall with pdiff [pdiff] at [formatJumpTo(loc)] just caught fire!")
spawn(2)
new /obj/structure/girder(src)
src.ChangeTurf(/turf/simulated/floor)
- for(var/turf/simulated/floor/target_tile in range(0,src))
- /*if(target_tile.parent && target_tile.parent.group_processing)
- target_tile.parent.suspend_group_processing()*/
- var/datum/gas_mixture/napalm = new
- var/toxinsToDeduce = 20
- napalm.toxins = toxinsToDeduce
- napalm.temperature = 400+T0C
- target_tile.assume_air(napalm)
- spawn (0) target_tile.hotspot_expose(temperature, 400)
- for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
- var/turf/T = get_turf(F)
- T.ChangeTurf(/turf/simulated/wall/mineral/plasma/)
- del (F)
- for(var/turf/simulated/wall/mineral/plasma/W in range(3,src))
- W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
- for(var/obj/machinery/door/airlock/plasma/D in range(3,src))
- D.ignite(temperature/4)
+ atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 400)
-/turf/simulated/wall/mineral/plasma/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
+/turf/simulated/wall/mineral/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
-/turf/simulated/wall/mineral/plasma/ignite(exposed_temperature)
+/turf/simulated/wall/mineral/plasma/proc/ignite(exposed_temperature)
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index c84a24c12cb..ebefbf0ca20 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -36,6 +36,16 @@
return
return
+// Adds the adjacent turfs to the current atmos processing
+/turf/Destroy()
+ if(air_master)
+ for(var/direction in cardinal)
+ if(atmos_adjacent_turfs & direction)
+ var/turf/simulated/T = get_step(src, direction)
+ if(istype(T))
+ air_master.add_to_active(T)
+ ..()
+
/turf/ex_act(severity)
return 0
@@ -213,117 +223,65 @@
del L
//Creates a new turf
-/turf/proc/ChangeTurf(var/turf/N)
- if (!N)
- return
-
+/turf/proc/ChangeTurf(var/path)
+ if(!path) return
+ if(path == type) return src
var/old_lumcount = lighting_lumcount - initial(lighting_lumcount)
var/old_opacity = opacity
- //world << "Replacing [src.type] with [N]"
+ if(air_master)
+ air_master.remove_from_active(src)
- if(connections) connections.erase_all()
+ var/turf/W = new path(src)
- if(istype(src,/turf/simulated))
- //Yeah, we're just going to rebuild the whole thing.
- //Despite this being called a bunch during explosions,
- //the zone will only really do heavy lifting once.
- var/turf/simulated/S = src
- if(S.zone) S.zone.rebuild()
+ if(istype(W, /turf/simulated))
+ W:Assimilate_Air()
+ W.RemoveLattice()
- if(ispath(N, /turf/simulated/floor))
- //if the old turf had a zone, connect the new turf to it as well - Cael
- //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf.
- //if(zone)
- // zone.RemoveTurf(src)
- // if(!zone.CheckStatus())
- // zone.SetStatus(ZONE_ACTIVE)
+ W.lighting_lumcount += old_lumcount
+ if(old_lumcount != W.lighting_lumcount) //light levels of the turf have changed. We need to shift it to another lighting-subarea
+ W.lighting_changed = 1
+ lighting_controller.changed_turfs += W
- var/turf/simulated/W = new N( locate(src.x, src.y, src.z) )
- //W.Assimilate_Air()
+ if(old_opacity != W.opacity) //opacity has changed. Need to update surrounding lights
+ if(W.lighting_lumcount) //unless we're being illuminated, don't bother (may be buggy, hard to test)
+ W.UpdateAffectingLights()
- W.lighting_lumcount += old_lumcount
- if(old_lumcount != W.lighting_lumcount)
- W.lighting_changed = 1
- lighting_controller.changed_turfs += W
+ W.levelupdate()
+ W.CalculateAdjacentTurfs()
+ return W
-
- if(old_opacity != W.opacity) //opacity has changed. Need to update surrounding lights
- if(W.lighting_lumcount) //unless we're being illuminated, don't bother (may be buggy, hard to test)
- W.UpdateAffectingLights()
-
- if (istype(W,/turf/simulated/floor))
- W.RemoveLattice()
-
- if(air_master)
- air_master.mark_for_update(src)
-
- W.levelupdate()
- return W
-
- else
- //if(zone)
- // zone.RemoveTurf(src)
- // if(!zone.CheckStatus())
- // zone.SetStatus(ZONE_ACTIVE)
-
- var/turf/W = new N( locate(src.x, src.y, src.z) )
- W.lighting_lumcount += old_lumcount
- if(old_lumcount != W.lighting_lumcount)
- W.lighting_changed = 1
- lighting_controller.changed_turfs += W
-
- if(air_master)
- air_master.mark_for_update(src)
-
- W.levelupdate()
- return W
-
-/*
//////Assimilate Air//////
/turf/simulated/proc/Assimilate_Air()
- var/aoxy = 0//Holders to assimilate air from nearby turfs
- var/anitro = 0
- var/aco = 0
- var/atox = 0
- var/atemp = 0
- var/turf_count = 0
+ if(air)
+ var/aoxy = 0//Holders to assimilate air from nearby turfs
+ var/anitro = 0
+ var/aco = 0
+ var/atox = 0
+ var/atemp = 0
+ var/turf_count = 0
- for(var/direction in cardinal)//Only use cardinals to cut down on lag
- var/turf/T = get_step(src,direction)
- if(istype(T,/turf/space))//Counted as no air
- turf_count++//Considered a valid turf for air calcs
- continue
- else if(istype(T,/turf/simulated/floor))
- var/turf/simulated/S = T
- if(S.air)//Add the air's contents to the holders
- aoxy += S.air.oxygen
- anitro += S.air.nitrogen
- aco += S.air.carbon_dioxide
- atox += S.air.toxins
- atemp += S.air.temperature
- turf_count ++
- air.oxygen = (aoxy/max(turf_count,1))//Averages contents of the turfs, ignoring walls and the like
- air.nitrogen = (anitro/max(turf_count,1))
- air.carbon_dioxide = (aco/max(turf_count,1))
- air.toxins = (atox/max(turf_count,1))
- air.temperature = (atemp/max(turf_count,1))//Trace gases can get bant
- air.update_values()
+ for(var/direction in cardinal)//Only use cardinals to cut down on lag
+ var/turf/T = get_step(src,direction)
+ if(istype(T,/turf/space))//Counted as no air
+ turf_count++//Considered a valid turf for air calcs
+ continue
+ else if(istype(T,/turf/simulated/floor))
+ var/turf/simulated/S = T
+ if(S.air)//Add the air's contents to the holders
+ aoxy += S.air.oxygen
+ anitro += S.air.nitrogen
+ aco += S.air.carbon_dioxide
+ atox += S.air.toxins
+ atemp += S.air.temperature
+ turf_count ++
+ air.oxygen = (aoxy/max(turf_count,1))//Averages contents of the turfs, ignoring walls and the like
+ air.nitrogen = (anitro/max(turf_count,1))
+ air.carbon_dioxide = (aco/max(turf_count,1))
+ air.toxins = (atox/max(turf_count,1))
+ air.temperature = (atemp/max(turf_count,1))//Trace gases can get bant
+ if(air_master)
+ air_master.add_to_active(src)
- //cael - duplicate the averaged values across adjacent turfs to enforce a seamless atmos change
- for(var/direction in cardinal)//Only use cardinals to cut down on lag
- var/turf/T = get_step(src,direction)
- if(istype(T,/turf/space))//Counted as no air
- continue
- else if(istype(T,/turf/simulated/floor))
- var/turf/simulated/S = T
- if(S.air)//Add the air's contents to the holders
- S.air.oxygen = air.oxygen
- S.air.nitrogen = air.nitrogen
- S.air.carbon_dioxide = air.carbon_dioxide
- S.air.toxins = air.toxins
- S.air.temperature = air.temperature
- S.air.update_values()
-*/
/turf/proc/ReplaceWithLattice()
src.ChangeTurf(/turf/space)
new /obj/structure/lattice( locate(src.x, src.y, src.z) )
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 51edf9a4cdf..1ea81011406 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -572,9 +572,6 @@ var/global/nologevent = 0
Quick Create Object
Create Turf
Create Mob
-
Edit Airflow Settings
- Edit Plasma Settings
- Choose a default ZAS setting
"}
usr << browse(dat, "window=admin2;size=210x280")
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 1108c287461..5b151c850c2 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -129,8 +129,6 @@ var/list/admin_verbs_server = list(
var/list/admin_verbs_debug = list(
/client/proc/cmd_admin_list_open_jobs,
/client/proc/Debug2,
- /client/proc/kill_air,
- /client/proc/ZASSettings,
/client/proc/cmd_debug_make_powernets,
/client/proc/debug_controller,
/client/proc/cmd_debug_mob_lists,
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 210d020553f..ebc48a70d0c 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -3048,18 +3048,6 @@
src.admincaster_signature = adminscrub(input(usr, "Provide your desired signature", "Network Identity Handler", ""))
src.access_news_network()
- else if(href_list["vsc"])
- if(check_rights(R_ADMIN|R_SERVER))
- if(href_list["vsc"] == "airflow")
- vsc.ChangeSettingsDialog(usr,vsc.settings)
- if(href_list["vsc"] == "plasma")
- vsc.ChangeSettingsDialog(usr,vsc.plc.settings)
-// zas_settings.ChangeSettingsDialog(usr,zas_settings.settings)
- if(href_list["vsc"] == "default")
- vsc.SetDefault(usr)
-// zas_settings.SetDefault(usr)
- // player info stuff
-
if(href_list["add_player_info"])
var/key = href_list["add_player_info"]
var/add = input("Add Player Info") as null|text
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index 2c27be1cde9..4788dad2832 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -1,3 +1,22 @@
+/client/proc/air_status(turf/target as turf)
+ set category = "Debug"
+ set name = "Display Air Status"
+
+ if(!isturf(target))
+ return
+
+ var/datum/gas_mixture/GM = target.return_air()
+ var/burning = 0
+ if(istype(target, /turf/simulated))
+ var/turf/simulated/T = target
+ if(T.active_hotspot)
+ burning = 1
+
+ usr << "\blue @[target.x],[target.y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]"
+ for(var/datum/gas/trace_gas in GM.trace_gases)
+ usr << "[trace_gas.type]: [trace_gas.moles]"
+ feedback_add_details("admin_verb","DAST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
/client/proc/fix_next_move()
set category = "Debug"
set name = "Unfreeze Everyone"
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index 5abfd4d1c04..7a616fd1c5c 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -143,10 +143,6 @@ var/intercom_range_display_status = 0
src.verbs += /client/proc/print_jobban_old
src.verbs += /client/proc/print_jobban_old_filter
src.verbs += /client/proc/forceEvent
- src.verbs += /client/proc/Zone_Info
- src.verbs += /client/proc/Test_ZAS_Connection
- src.verbs += /client/proc/ZoneTick
- //src.verbs += /client/proc/TestZASRebuild
//src.verbs += /client/proc/cmd_admin_rejuvenate
feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index be39f1be89a..48acf97242f 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -156,6 +156,7 @@
ground_zero.assume_air(air_contents)
ground_zero.hotspot_expose(1000, 125)
+ air_update_turf()
if(master)
del(master)
del(src)
@@ -165,4 +166,5 @@
var/turf/simulated/T = get_turf(src)
if(!T)
return
- T.assume_air(removed)
\ No newline at end of file
+ T.assume_air(removed)
+ air_update_turf()
\ No newline at end of file
diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm
index 7021deb3613..d91eac4a391 100644
--- a/code/modules/assembly/igniter.dm
+++ b/code/modules/assembly/igniter.dm
@@ -19,6 +19,10 @@
var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
if (tank)
tank.explode()
+ if (istype(src.loc.loc, /obj/item/weapon/reagent_containers/glass/beaker/))
+ var/obj/item/weapon/reagent_containers/glass/beaker/beakerbomb = src.loc.loc
+ if(beakerbomb)
+ beakerbomb.heat_beaker()
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index e6a1bc6f322..0a8a9f6a0c0 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -1,5 +1,3 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
-
/obj/item/device/assembly/infra
name = "infrared emitter"
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted."
@@ -10,173 +8,133 @@
bomb_name = "tripwire mine"
- secured = 0
-
var/on = 0
var/visible = 0
var/obj/effect/beam/i_beam/first = null
+ var/obj/effect/beam/i_beam/last = null
- proc
- trigger_beam()
-
- describe()
- return "The infrared trigger is [on?"on":"off"]."
-
- activate()
- if(!..()) return 0//Cooldown check
- on = !on
- update_icon()
- return 1
-
-
- toggle_secure()
- secured = !secured
- if(secured)
- processing_objects.Add(src)
- else
- on = 0
- if(first) del(first)
- processing_objects.Remove(src)
- update_icon()
- return secured
-
+/obj/item/device/assembly/infra/describe()
+ return "The infrared trigger is [on?"on":"off"]."
+/obj/item/device/assembly/infra/activate()
+ if(!..()) return 0//Cooldown check
+ on = !on
update_icon()
- overlays.Cut()
- attached_overlays = list()
- if(on)
- overlays += "infrared_on"
- attached_overlays += "infrared_on"
+ return 1
- if(holder)
- holder.update_icon()
- return
+/obj/item/device/assembly/infra/toggle_secure()
+ secured = !secured
+ if(secured)
+ processing_objects.Add(src)
+ else
+ on = 0
+ if(first) qdel(first)
+ processing_objects.Remove(src)
+ update_icon()
+ return secured
+/obj/item/device/assembly/infra/update_icon()
+ overlays.Cut()
+ attached_overlays = list()
+ if(on)
+ overlays += "infrared_on"
+ attached_overlays += "infrared_on"
- process()//Old code
- if(!on)
- if(first)
- del(first)
- return
- if(first || !secured) return
- var/turf/T = null
- if(istype(loc,/turf))
- T = loc
- else if (holder)
- if (istype(holder.loc,/turf))
- T = holder.loc
- else if (holder.master && istype(holder.master.loc,/turf)) //for onetankbombs and other tertiary builds with assemblies
- T = holder.loc.loc
- else if(istype(loc,/obj/item/weapon/grenade) && istype(loc.loc,/turf))
- T = loc.loc
- if(T)
- var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(T)
- I.master = src
- I.density = 1
- I.dir = dir
- step(I, I.dir)
- if(I)
- I.density = 0
- first = I
- I.vis_spread(visible)
- spawn(0)
- if(I)
- //world << "infra: setting limit"
- I.limit = 8
- //world << "infra: processing beam \ref[I]"
- I.process()
- return
- return
+ if(holder)
+ holder.update_icon()
+ return
-
- attack_hand()
- del(first)
- ..()
- return
-
-
- Move()
- var/t = dir
- ..()
- dir = t
- del(first)
- return
-
-
- holder_movement()
- if(!holder) return 0
- del(first)
- return 1
-
-
- trigger_beam()
- if((!secured)||(!on)||(cooldown > 0)) return 0
- pulse(0)
- visible_message("\icon[src] *beep* *beep*")
- cooldown = 2
- spawn(10)
- process_cooldown()
- return
-
-
- interact(mob/user as mob)//TODO: change this this to the wire control panel
- if(!secured) return
- user.set_machine(src)
- var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n", (on ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src)))
- if(holder)
- dat += "
Beam direction: [dir2text(dir)] Counter-clockwise | Clockwise"
- dat += "
Refresh"
- dat += "
Close"
- user << browse(dat, "window=infra")
- onclose(user, "infra")
- return
-
-
- Topic(href, href_list)
- ..()
- if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
- usr << browse(null, "window=infra")
- onclose(usr, "infra")
+/obj/item/device/assembly/infra/process()
+ if(!on)
+ if(first)
+ qdel(first)
return
+ if(!secured)
+ return
+ if(first && last)
+ last.process()
+ return
+ var/turf/T = get_turf(src)
+ if(T)
+ var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(T)
+ I.master = src
+ I.density = 1
+ I.dir = dir
+ first = I
+ step(I, I.dir)
+ if(first)
+ I.density = 0
+ I.vis_spread(visible)
+ I.limit = 8
+ I.process()
- if(href_list["rotate"])
- switch(href_list["rotate"])
- if("-1")
- dir = turn(dir,90)
- update_icon()
- del(first)
- if("1")
- dir = turn(dir,-90)
- update_icon()
- del(first)
+/obj/item/device/assembly/infra/attack_hand()
+ qdel(first)
+ ..()
+ return
- if(href_list["state"])
- on = !(on)
- update_icon()
+/obj/item/device/assembly/infra/Move()
+ var/t = dir
+ ..()
+ dir = t
+ qdel(first)
+ return
- if(href_list["visible"])
- visible = !(visible)
- spawn(0)
- if(first)
- first.vis_spread(visible)
+/obj/item/device/assembly/infra/holder_movement()
+ if(!holder) return 0
+// dir = holder.dir
+ qdel(first)
+ return 1
- if(href_list["close"])
- usr << browse(null, "window=infra")
- return
+/obj/item/device/assembly/infra/proc/trigger_beam()
+ if((!secured)||(!on)||(cooldown > 0))
+ return 0
+ pulse(0)
+ audible_message("\icon[src] *beep* *beep*", null, 3)
+ cooldown = 2
+ spawn(10)
+ process_cooldown()
+ return
- if(usr)
- attack_self(usr)
+/obj/item/device/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel
+ if(!secured) return
+ user.set_machine(src)
+ var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n", (on ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src)))
+ dat += "
Refresh"
+ dat += "
Close"
+ user << browse(dat, "window=infra")
+ onclose(user, "infra")
+ return
+/obj/item/device/assembly/infra/Topic(href, href_list)
+ ..()
+ if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
+ usr << browse(null, "window=infra")
+ onclose(usr, "infra")
+ return
+ if(href_list["state"])
+ on = !(on)
+ update_icon()
+ if(href_list["visible"])
+ visible = !(visible)
+ if(first)
+ first.vis_spread(visible)
+ if(href_list["close"])
+ usr << browse(null, "window=infra")
+ return
+ if(usr)
+ attack_self(usr)
+
+/obj/item/device/assembly/infra/verb/rotate()//This could likely be better
+ set name = "Rotate Infrared Laser"
+ set category = "Object"
+ set src in usr
+
+ if(usr.stat || !usr.canmove || usr.restrained())
return
-
- verb/rotate()//This could likely be better
- set name = "Rotate Infrared Laser"
- set category = "Object"
- set src in usr
-
- dir = turn(dir, 90)
- return
+ dir = turn(dir, 90)
+ return
@@ -187,41 +145,30 @@
icon = 'icons/obj/projectiles.dmi'
icon_state = "ibeam"
var/obj/effect/beam/i_beam/next = null
+ var/obj/effect/beam/i_beam/previous = null
var/obj/item/device/assembly/infra/master = null
var/limit = null
var/visible = 0.0
var/left = null
anchored = 1.0
- flags = 0
/obj/effect/beam/i_beam/proc/hit()
- //world << "beam \ref[src]: hit"
if(master)
- //world << "beam hit \ref[src]: calling master \ref[master].hit"
master.trigger_beam()
- del(src)
+ qdel(src)
return
/obj/effect/beam/i_beam/proc/vis_spread(v)
- //world << "i_beam \ref[src] : vis_spread"
visible = v
- spawn(0)
- if(next)
- //world << "i_beam \ref[src] : is next [next.type] \ref[next], calling spread"
- next.vis_spread(v)
- return
- return
+ if(next)
+ next.vis_spread(v)
+
/obj/effect/beam/i_beam/process()
- //world << "i_beam \ref[src] : process"
-
if((loc.density || !(master)))
- // world << "beam hit loc [loc] or no master [master], deleting"
- del(src)
+ qdel(src)
return
- //world << "proccess: [src.left] left"
-
if(left > 0)
left--
if(left < 1)
@@ -232,58 +179,40 @@
else
invisibility = 0
-
- //world << "now [src.left] left"
- var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc)
- I.master = master
- I.density = 1
- I.dir = dir
- //world << "created new beam \ref[I] at [I.x] [I.y] [I.z]"
- step(I, I.dir)
-
- if(I)
- //world << "step worked, now at [I.x] [I.y] [I.z]"
- if(!(next))
- //world << "no next"
+ if(!next && (limit > 0))
+ var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc)
+ I.master = master
+ I.density = 1
+ I.dir = dir
+ I.previous = src
+ next = I
+ step(I, I.dir)
+ if(next)
I.density = 0
- //world << "spreading"
I.vis_spread(visible)
- next = I
- spawn(0)
- //world << "limit = [limit] "
- if((I && limit > 0))
- I.limit = limit - 1
- //world << "calling next process"
- I.process()
- return
- else
- //world << "is a next: \ref[next], deleting beam \ref[I]"
- del(I)
- else
- //world << "step failed, deleting \ref[next]"
- del(next)
- spawn(10)
- process()
- return
- return
+ I.limit = limit - 1
+ master.last = I
+ I.process()
/obj/effect/beam/i_beam/Bump()
- del(src)
+ qdel(src)
return
/obj/effect/beam/i_beam/Bumped()
hit()
- return
/obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj)
if(istype(AM, /obj/effect/beam))
return
- spawn(0)
- hit()
- return
- return
+ hit()
/obj/effect/beam/i_beam/Destroy()
- del(next)
- ..()
- return
+ if(master.first == src)
+ master.first = null
+ if(next)
+ qdel(next)
+ next = null
+ if(previous)
+ previous.next = null
+ master.last = previous
+ ..()
\ No newline at end of file
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index df5eb1a35cb..d207130aeee 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -53,6 +53,7 @@
affecting = H.get_organ(type)
H.Stun(3)
if(affecting)
+ affecting.take_damage(1, 0)
H.updatehealth()
else if(ismouse(target))
var/mob/living/simple_animal/mouse/M = target
diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm
index f9638c18bce..ee3e0849d80 100644
--- a/code/modules/clothing/gloves/boxing.dm
+++ b/code/modules/clothing/gloves/boxing.dm
@@ -3,6 +3,7 @@
desc = "Because you really needed another excuse to punch your crewmates."
icon_state = "boxing"
item_state = "boxing"
+ species_restricted = null
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/gloves.dmi'
diff --git a/code/modules/clothing/gloves/rings.dm b/code/modules/clothing/gloves/rings.dm
new file mode 100644
index 00000000000..90b012d0580
--- /dev/null
+++ b/code/modules/clothing/gloves/rings.dm
@@ -0,0 +1,97 @@
+/obj/item/clothing/gloves/ring
+ name = "iron ring"
+ desc = "A band that goes around your finger. It's considered gauche to wear more than one."
+ gender = "neuter" // not plural anymore
+ transfer_prints = TRUE
+ icon_state = "ironring"
+ item_state = ""
+ icon = 'icons/obj/clothing/rings.dmi'
+ var/material = "iron"
+ var/stud = 0
+ species_restricted = null
+
+ New()
+ ..()
+ update_icon()
+
+ update_icon()
+ if(stud)
+ icon_state = "d_[initial(icon_state)]"
+ else
+ icon_state = initial(icon_state)
+ examine()
+ ..()
+ usr << "This one is made of [material]."
+ if(stud)
+ usr << "It is adorned with a single gem."
+
+/obj/item/clothing/gloves/ring/attackby(obj/item/I as obj, mob/user as mob, params)
+ if(istype(I, /obj/item/stack/sheet/mineral/diamond))
+ var/obj/item/stack/sheet/mineral/diamond/D = I
+ if(stud)
+ usr << "The [src] already has a gem."
+ else
+ if(D.amount >= 1)
+ D.use(1)
+ stud = 1
+ update_icon()
+ usr << "You socket the diamond into the [src]."
+
+// s'pensive
+/obj/item/clothing/gloves/ring/silver
+ name = "silver ring"
+ icon_state = "silverring"
+ material = "silver"
+
+/obj/item/clothing/gloves/ring/silver/blessed // todo
+ name = "blessed silver ring"
+
+/obj/item/clothing/gloves/ring/gold
+ name = "gold ring"
+ icon_state = "goldring"
+ material = "gold"
+
+/obj/item/clothing/gloves/ring/gold/blessed
+ name = "wedding band"
+
+// cheap
+/obj/item/clothing/gloves/ring/plastic
+ name = "white plastic ring"
+ icon_state = "whitering"
+ material = "plastic"
+
+/obj/item/clothing/gloves/ring/plastic/blue
+ name = "blue plastic ring"
+ icon_state = "bluering"
+
+/obj/item/clothing/gloves/ring/plastic/red
+ name = "red plastic ring"
+ icon_state = "redring"
+
+/obj/item/clothing/gloves/ring/plastic/random
+ New()
+ var/c = pick("white","blue","red")
+ name = "[c] plastic ring"
+ icon_state = "[c]ring"
+
+// weird
+/obj/item/clothing/gloves/ring/glass
+ name = "glass ring"
+ icon_state = "whitering"
+ material = "glass"
+
+/obj/item/clothing/gloves/ring/plasma
+ name = "plasma ring"
+ icon_state = "plasmaring"
+ material = "plasma"
+
+/obj/item/clothing/gloves/ring/uranium
+ name = "uranium ring"
+ icon_state = "uraniumring"
+ material = "uranium"
+
+// cultish
+/obj/item/clothing/gloves/ring/shadow
+ name = "shadow ring"
+ icon_state = "shadowring"
+ material = "shadows"
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 6bbd20f0d29..d3d93dccf06 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -7,3 +7,4 @@
else
biomass_infestation()
spacevines_spawned = 1
+v
\ No newline at end of file
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 9df91110429..a741c792642 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -20,8 +20,6 @@
opacity = 1
var/health = 50
- autoignition_temperature = AUTOIGNITION_WOOD
-
/obj/structure/bookcase/initialize()
for(var/obj/item/I in loc)
if(istype(I, /obj/item/weapon/book))
@@ -151,8 +149,6 @@
w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever)
attack_verb = list("bashed", "whacked", "educated")
- autoignition_temperature = AUTOIGNITION_PAPER
-
var/dat // Actual page content
var/due_date = 0 // Game time in 1/10th seconds
var/author // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm
index cc1e966ff46..16c4f90fde1 100644
--- a/code/modules/mining/coins.dm
+++ b/code/modules/mining/coins.dm
@@ -101,6 +101,19 @@
overlays = list()
string_attached = null
user << "You detach the string from the coin."
+ else if(istype(W,/obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/WT = W
+ if(WT.welding && WT.remove_fuel(0, user))
+ var/typelist = list("iron" = /obj/item/clothing/gloves/ring,
+ "silver" = /obj/item/clothing/gloves/ring/silver,
+ "gold" = /obj/item/clothing/gloves/ring/gold,
+ "plasma" = /obj/item/clothing/gloves/ring/plasma,
+ "uranium" = /obj/item/clothing/gloves/ring/uranium)
+ var/typekey = typelist[cmineral]
+ if(ispath(typekey))
+ user << "\blue You make [src] into a ring."
+ new typekey(get_turf(loc))
+ qdel(src)
else ..()
/obj/item/weapon/coin/attack_self(mob/user as mob)
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 533c47a253d..8ab42b7ae1c 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -9,7 +9,7 @@
opacity = 1
density = 1
blocks_air = 1
- temperature = TCMB
+ temperature = T0C
var/mineral/mineral
var/mined_ore = 0
var/last_act = 0
@@ -392,7 +392,7 @@
icon_state = "asteroid"
oxygen = 0.01
nitrogen = 0.01
- temperature = TCMB
+ temperature = T0C
icon_plating = "asteroid"
var/dug = 0 //0 = has not yet been dug, 1 = has already been dug
has_resources = 1
diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm
index fa5725faf19..80761679cba 100644
--- a/code/modules/mob/language.dm
+++ b/code/modules/mob/language.dm
@@ -505,7 +505,7 @@
if(L == default_language)
dat += "[L.name] (:[L.key]) - default - reset
[L.desc]
"
else
- dat += "[L.name] (:[L.key]) - set default
[L.desc]
"
+ dat += "[L.name] (:[L.key]) - set default
[L.desc]
"
src << browse(dat, "window=checklanguage")
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 2502561b537..6e5dcdc3dea 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -152,6 +152,7 @@
bodytemperature += BODYTEMP_HEATING_MAX //If you're on fire, you heat up!
return
+
/mob/living/carbon/alien/IsAdvancedToolUser()
return has_fine_manipulation
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index fbb2e477081..eda8df77ee7 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -20,7 +20,7 @@
//First, resolve location and get a breath
- if(air_master.current_cycle%4==2)
+ if(mob_master.current_cycle%4==2)
//Only try to take a breath every 4 seconds, unless suffocating
spawn(0) breathe()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm
index 6990eaa9223..0c218c81204 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm
@@ -65,6 +65,7 @@
update_fire()
+
/mob/living/carbon/alien/humanoid/update_hud()
//TODO
if (client)
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index 3b08794a76c..01e36955196 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -17,7 +17,7 @@
amount_grown++
//First, resolve location and get a breath
- if(air_master.current_cycle%4==2)
+ if(mob_master.current_cycle%4==2)
//Only try to take a breath every 4 seconds, unless suffocating
spawn(0) breathe()
else //Still give containing object the chance to interact
diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm
index 4a249312ba2..58f43b525b3 100644
--- a/code/modules/mob/living/carbon/alien/life.dm
+++ b/code/modules/mob/living/carbon/alien/life.dm
@@ -116,7 +116,7 @@
stomach_contents.Remove(M)
qdel(M)
continue
- if(air_master.current_cycle%3==1)
+ if(mob_master.current_cycle%3==1)
if(!(M.status_flags & GODMODE))
M.adjustBruteLoss(5)
nutrition += 10
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index b7bb4ee6dd2..37381273369 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -65,7 +65,7 @@ var/const/MAX_ACTIVE_TIME = 400
Die()
return
-/obj/item/clothing/mask/facehugger/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
Die()
return
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index c99cf3e2b31..925636dbba5 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -439,7 +439,12 @@ mob/living
item.throw_at(target, item.throw_range, item.throw_speed, src)
-
+/*
+/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ ..()
+ src.IgniteMob()
+ bodytemperature = max(bodytemperature, BODYTEMP_HEAT_DAMAGE_LIMIT+10)
+*/
/mob/living/carbon/can_use_hands()
if(handcuffed)
return 0
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 5c5f877ef74..078af523c0f 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -13,6 +13,11 @@
playsound(src.loc, 'sound/effects/gib.ogg', 100, 1, 10)
+ for(var/obj/item/organ/I in internal_organs)
+ if(istype(loc,/turf))
+ I.removed(src)
+ I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5)
+
for(var/obj/item/organ/external/E in src.organs)
if(istype(E, /obj/item/organ/external/chest))
continue
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index f317ea49036..fac498d9219 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -226,7 +226,6 @@
usr << "[t_He] has a pulse!"
msg += ""
-
if(fire_stacks > 0)
msg += "[t_He] [t_is] covered in something flammable.\n"
if(fire_stacks < 0)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 11342b903ca..eb4907e1341 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -247,7 +247,7 @@
while(limbs_affected != 0)
processing_dismember = pick(organs)
- if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin")
+ if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin")
processing_dismember.droplimb(1,pick(0,1,2),0,1)
limbs_affected -= 1
@@ -271,7 +271,7 @@
while(limbs_affected != 0)
processing_dismember = pick(organs)
- if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin")
+ if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin")
processing_dismember.droplimb(1,pick(0,2),0,1)
limbs_affected -= 1
@@ -281,7 +281,7 @@
while(limbs_affected != 0)
processing_dismember = pick(organs)
- if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin")
+ if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin")
processing_dismember.droplimb(1,pick(0,2),0,1)
limbs_affected -= 1
@@ -303,7 +303,7 @@
while(limbs_affected != 0)
processing_dismember = pick(organs)
- if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin")
+ if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin")
processing_dismember.droplimb(1,1,0,1)
limbs_affected -= 1
@@ -316,7 +316,7 @@
var/update = 0
var/weapon_message = "Explosive Blast"
for(var/obj/item/organ/external/temp in organs)
- switch(temp.name)
+ switch(temp.limb_name)
if("head")
update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2, used_weapon = weapon_message)
if("chest")
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 1391855aa10..f8aa4a64ac9 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -82,5 +82,5 @@
var/frozen = 0 //used for preventing attacks on admin-frozen people
- fire_dmi = 'icons/mob/OnFire.dmi'
- fire_sprite = "Standing"
+ var/fire_dmi = 'icons/mob/OnFire.dmi'
+ var/fire_sprite = "Standing"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 07a962fb821..5b7f9b708b1 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -74,7 +74,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
//No need to update all of these procs if the guy is dead.
if(stat != DEAD && !in_stasis)
- if(air_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath
+ if(mob_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath
breathe() //Only try to take a breath every 4 ticks, unless suffocating
else //Still give containing object the chance to interact
@@ -371,7 +371,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
breath = loc.remove_air(breath_moles)
if(!is_lung_ruptured())
- if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
+ if(!breath || breath.total_moles() < BREATH_MOLES / 5 || breath.total_moles() > BREATH_MOLES * 5)
if(prob(5))
rupture_lung()
@@ -382,8 +382,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
handle_breath(breath)
- if(species.name=="Plasmaman")
-
+ if(species.name=="Plasmaman") //this is stupid as fuck
// Check if we're wearing our biosuit and mask.
if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman))
//testing("Plasmaman [src] leakin'. coverflags=[cover_flags]")
@@ -548,6 +547,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
return
//END FIRE CODE
+
/*
proc/adjust_body_temperature(current, loc_temp, boost)
var/temperature = current
@@ -728,12 +728,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
alien = species.reagent_tag
reagents.metabolize(src,alien)
- var/total_plasmaloss = 0
- for(var/obj/item/I in src)
- if(I.contaminated)
- total_plasmaloss += vsc.plc.CONTAMINATION_LOSS
- if(!(status_flags & GODMODE)) adjustToxLoss(total_plasmaloss)
-
if(status_flags & GODMODE) return 0 //godmode
if(species.flags & REQUIRE_LIGHT)
@@ -1418,7 +1412,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
stomach_contents.Remove(M)
del(M)
continue
- if(air_master.current_cycle%3==1)
+ if(mob_master.current_cycle%3==1)
if(!(M.status_flags & GODMODE))
M.adjustBruteLoss(5)
nutrition += 10
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 887371b4f48..3621f44c8e6 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -324,10 +324,10 @@ proc/get_damage_icon_part(damage_state, body_part)
//Underwear
if(underwear && species.flags & HAS_UNDERWEAR)
- stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear), ICON_OVERLAY)
+ stand_icon.Blend(new /icon('icons/mob/human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
if(undershirt && species.flags & HAS_UNDERWEAR)
- stand_icon.Blend(new /icon('icons/mob/human.dmi', undershirt), ICON_OVERLAY)
+ stand_icon.Blend(new /icon('icons/mob/human.dmi', "undershirt[undershirt]_s"), ICON_OVERLAY)
if(update_icons)
update_icons()
@@ -460,16 +460,13 @@ proc/get_damage_icon_part(damage_state, body_part)
if(update_icons) update_icons()
/mob/living/carbon/human/update_fire()
-
remove_overlay(FIRE_LAYER)
if(on_fire)
overlays_standing[FIRE_LAYER] = image("icon"=fire_dmi, "icon_state"=fire_sprite, "layer"=-FIRE_LAYER)
else
overlays_standing[FIRE_LAYER] = null
-
apply_overlay(FIRE_LAYER)
-
/* --------------------------------------- */
//For legacy support.
/mob/living/carbon/human/regenerate_icons()
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 51162a425ff..65a5f5b14e6 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -25,7 +25,7 @@
if (stat != DEAD)
if(!istype(src,/mob/living/carbon/monkey/diona)) //still breathing
//First, resolve location and get a breath
- if(air_master.current_cycle%4==2)
+ if(mob_master.current_cycle%4==2)
//Only try to take a breath every 4 seconds, unless suffocating
breathe()
else //Still give containing object the chance to interact
@@ -266,7 +266,7 @@
if(status_flags & GODMODE)
return
- if(!breath || (breath.total_moles == 0))
+ if(!breath || (breath.total_moles() == 0))
adjustOxyLoss(7)
oxygen_alert = max(oxygen_alert, 1)
@@ -660,4 +660,4 @@
return
adjustFireLoss(6)
return
- //END FIRE CODE
+ //END FIRE CODE
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm
index 6801dc30432..cc25d319842 100644
--- a/code/modules/mob/living/carbon/species.dm
+++ b/code/modules/mob/living/carbon/species.dm
@@ -221,6 +221,7 @@
if(H.reagents)
H.reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
H.toxins_alert = max(H.toxins_alert, 1)
+
else if(O2_pp > vox_oxygen_max && name == "Vox") //Oxygen is toxic to vox.
var/ratio = (breath.oxygen/vox_oxygen_max) * 1000
H.adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index a19ee6e5207..12b35279466 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -460,6 +460,9 @@
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
+/*//////////////////////
+ START RESIST PROCS
+*///////////////////////
/mob/living/verb/resist()
set name = "Resist"
@@ -473,259 +476,327 @@
//Getting out of someone's inventory.
if(istype(src.loc,/obj/item/weapon/holder))
- var/obj/item/weapon/holder/H = src.loc //Get our item holder.
- var/mob/M = H.loc //Get our mob holder (if any).
-
- if(istype(M))
- M.unEquip(H)
- M << "[H] wriggles out of your grip!"
- src << "You wriggle out of [M]'s grip!"
- else if(istype(H.loc,/obj/item))
- src << "You struggle free of [H.loc]."
- H.loc = get_turf(H)
-
- if(istype(M))
- for(var/atom/A in M.contents)
- if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
- return
-
- M.status_flags &= ~PASSEMOTES
- return
+ resist_holder()
//Resisting control by an alien mind.
if(istype(src.loc,/mob/living/simple_animal/borer))
- var/mob/living/simple_animal/borer/B = src.loc
- var/mob/living/captive_brain/H = src
-
- H << "\red You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)."
- B.host << "\red You feel the captive mind of [src] begin to resist your control."
-
- spawn(rand(350,450)+B.host.brainloss)
-
- if(!B || !B.controlling)
- return
-
- B.host.adjustBrainLoss(rand(5,10))
- H << "\red With an immense exertion of will, you regain control of your body!"
- B.host << "\red You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you."
-
- B.detatch()
-
- verbs -= /mob/living/carbon/proc/release_control
- verbs -= /mob/living/carbon/proc/punish_host
- verbs -= /mob/living/carbon/proc/spawn_larvae
-
- return
+ resist_borer()
//resisting grabs (as if it helps anyone...)
- if ((!( L.stat ) && !( L.restrained() )))
- var/resisting = 0
- for(var/obj/O in L.requests)
- L.requests.Remove(O)
- del(O)
- resisting++
- for(var/obj/item/weapon/grab/G in usr.grabbed_by)
- resisting++
- if (G.state == 1)
- del(G)
- else
- if (G.state == 2)
- if (prob(25))
- for(var/mob/O in viewers(L, null))
- O.show_message(text("\red [] has broken free of []'s grip!", L, G.assailant), 1)
- del(G)
- else
- if (G.state == 3)
- if (prob(5))
- for(var/mob/O in viewers(usr, null))
- O.show_message(text("\red [] has broken free of []'s headlock!", L, G.assailant), 1)
- del(G)
- if(resisting)
- for(var/mob/O in viewers(usr, null))
- O.show_message(text("\red [] resists!", L), 1)
-
+ if ((!(L.stat) && !(L.restrained())))
+ resist_grab(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src'
//unbuckling yourself
if(L.buckled && (L.last_special <= world.time) )
- if(iscarbon(L))
- var/mob/living/carbon/C = L
- if( C.handcuffed )
- C.changeNext_move(CLICK_CD_BREAKOUT)
- C.last_special = world.time + CLICK_CD_BREAKOUT
- C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
- for(var/mob/O in viewers(L))
- O.show_message("\red [usr] attempts to unbuckle themself!", 1)
- spawn(0)
- if(do_after(usr, 1200))
- if(!C.buckled)
- return
- for(var/mob/O in viewers(C))
- O.show_message("\red [usr] manages to unbuckle themself!", 1)
- C << "\blue You successfully unbuckle yourself."
- C.buckled.manual_unbuckle(C)
- else
- L.buckled.manual_unbuckle(L)
+ resist_buckle(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src'
//Breaking out of a locker?
- else if( src.loc && (istype(src.loc, /obj/structure/closet)) )
- var/breakout_time = 2 //2 minutes by default
-
- var/obj/structure/closet/C = L.loc
- if(C.opened)
- return //Door's open... wait, why are you in it's contents then?
- if(istype(L.loc, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = L.loc
- if(!SC.locked && !SC.welded)
- return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist'
- else
- if(!C.welded)
- return //closed but not welded...
- // else Meh, lets just keep it at 2 minutes for now
- // breakout_time++ //Harder to get out of welded lockers than locked lockers
-
- //okay, so the closet is either welded or locked... resist!!!
- L.changeNext_move(CLICK_CD_BREAKOUT)
- L.last_special = world.time + CLICK_CD_BREAKOUT
- L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)"
- for(var/mob/O in viewers(usr.loc))
- O.show_message("\red The [L.loc] begins to shake violently!", 1)
-
-
- spawn(0)
- if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
- if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened
- return
-
- //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'...
- if(istype(L.loc, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = L.loc
- if(!SC.locked && !SC.welded)
- return
- else
- if(!C.welded)
- return
-
- //Well then break it!
- if(istype(usr.loc, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = L.loc
- SC.desc = "It appears to be broken."
- SC.icon_state = SC.icon_off
- flick(SC.icon_broken, SC)
- sleep(10)
- flick(SC.icon_broken, SC)
- sleep(10)
- SC.broken = 1
- SC.locked = 0
- SC.update_icon()
- usr << "\red You successfully break out!"
- for(var/mob/O in viewers(L.loc))
- O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1)
- if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
- var/obj/structure/bigDelivery/BD = SC.loc
- BD.attack_hand(usr)
- SC.open()
- else
- C.welded = 0
- C.update_icon()
- usr << "\red You successfully break out!"
- for(var/mob/O in viewers(L.loc))
- O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1)
- if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above
- var/obj/structure/bigDelivery/BD = C.loc
- BD.attack_hand(usr)
- C.open()
+ else if(src.loc && (istype(src.loc, /obj/structure/closet)))
+ resist_closet()
//breaking out of handcuffs
else if(iscarbon(L))
var/mob/living/carbon/CM = L
- if(CM.on_fire && CM.canmove)
- CM.fire_stacks -= 5
- CM.weakened = max(CM.weakened, 3)//We dont check for CANWEAKEN, I don't care how immune to weakening you are, if you're rolling on the ground, you're busy.
- CM.update_canmove()
- CM.spin(32,2)
- CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \
- "You stop, drop, and roll!")
- sleep(30)
- if(fire_stacks <= 0)
- CM.visible_message("[CM] has successfully extinguished themselves!", \
- "You extinguish yourself.")
- ExtinguishMob()
- return
- if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))
- CM.changeNext_move(CLICK_CD_BREAKOUT)
- CM.last_special = world.time + CLICK_CD_BREAKOUT
- if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
- usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] is trying to break the handcuffs!", CM), 1)
- spawn(0)
- if(do_after(CM, 50))
- if(!CM.handcuffed || CM.buckled)
- return
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] manages to break the handcuffs!", CM), 1)
- CM << "\red You successfully break your handcuffs."
- CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- del(CM.handcuffed)
- CM.handcuffed = null
- CM.update_inv_handcuffed()
- else
- var/obj/item/weapon/restraints/handcuffs/HC = CM.handcuffed
- var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/restraints/handcuffs type
- var/displaytime = 2 //Minutes to display in the "this will take X minutes."
- if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
- breakouttime = HC.breakouttime
- displaytime = breakouttime / 600 //Minutes
- CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message( "\red [usr] attempts to remove \the [HC]!", 1)
- spawn(0)
- if(do_after(CM, breakouttime))
- if(!CM.handcuffed || CM.buckled)
- return // time leniency for lag which also might make this whole thing pointless but the server
- for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
- O.show_message("\red [CM] manages to remove the handcuffs!", 1)
- CM << "\blue You successfully remove \the [CM.handcuffed]."
- CM.unEquip(CM.handcuffed)
- else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time))
- CM.changeNext_move(CLICK_CD_BREAKOUT)
- CM.last_special = world.time + CLICK_CD_BREAKOUT
- if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
- usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] is trying to break the legcuffs!", CM), 1)
- spawn(0)
- if(do_after(CM, 50))
- if(!CM.legcuffed || CM.buckled)
- return
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] manages to break the legcuffs!", CM), 1)
- CM << "\red You successfully break your legcuffs."
- CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- del(CM.legcuffed)
- CM.legcuffed = null
- CM.update_inv_legcuffed()
+ if(CM.on_fire && CM.canmove)
+ resist_stop_drop_roll(CM) //this passes CM because the proc requires a typecasted mob/living/carbon instead of just 'src'
+
+ if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))//this passes CM because the proc requires a typecasted mob/living/carbon instead of just 'src'
+ resist_handcuffs(CM)
+
+ else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time)) //this passes CM because the proc requires a typecasted mob/living/carbon instead of just 'src'
+ resist_legcuffs(CM)
+
+/*////////////////////
+ RESIST SUBPROCS
+*/////////////////////
+
+/* resist_holder allows small mobs that can be picked up to get out of their holder, so they aren't stuck forever.
+*/////
+/mob/living/proc/resist_holder()
+ var/obj/item/weapon/holder/H = src.loc //Get our item holder.
+ var/mob/M = H.loc //Get our mob holder (if any).
+
+ if(istype(M))
+ M.unEquip(H)
+ M << "[H] wriggles out of your grip!"
+ src << "You wriggle out of [M]'s grip!"
+ else if(istype(H.loc,/obj/item))
+ src << "You struggle free of [H.loc]."
+ H.loc = get_turf(H)
+
+ if(istype(M))
+ for(var/atom/A in M.contents)
+ if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
+ return
+
+ M.status_flags &= ~PASSEMOTES
+ return
+
+/* resist_borer allows a mob to regain control of their body after a borer has assumed control.
+*/////
+/mob/living/proc/resist_borer()
+ var/mob/living/simple_animal/borer/B = src.loc
+ var/mob/living/captive_brain/H = src
+
+ H << "\red You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)."
+ B.host << "\red You feel the captive mind of [src] begin to resist your control."
+
+ spawn(rand(350,450)+B.host.brainloss)
+
+ if(!B || !B.controlling)
+ return
+
+ B.host.adjustBrainLoss(rand(5,10))
+ H << "\red With an immense exertion of will, you regain control of your body!"
+ B.host << "\red You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you."
+
+ B.detatch()
+
+ verbs -= /mob/living/carbon/proc/release_control
+ verbs -= /mob/living/carbon/proc/punish_host
+ verbs -= /mob/living/carbon/proc/spawn_larvae
+
+ return
+
+/* resist_grab allows a mob to resist a grab from another mob when disarming is not an option/neckgrabbed.
+*/////
+/mob/living/proc/resist_grab(var/mob/living/L)
+ var/resisting = 0
+
+ for(var/obj/O in L.requests)
+ L.requests.Remove(O)
+ del(O)
+ resisting++
+
+ for(var/obj/item/weapon/grab/G in usr.grabbed_by)
+ resisting++
+ if (G.state == 1)
+ del(G)
+
+ else
+ if(G.state == 2)
+ if(prob(25))
+ for(var/mob/O in viewers(L, null))
+ O.show_message(text("\red [] has broken free of []'s grip!", L, G.assailant), 1)
+ del(G)
+
else
- var/obj/item/weapon/restraints/legcuffs/HC = CM.legcuffed
- var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
- var/displaytime = 2 //Minutes to display in the "this will take X minutes."
- if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
- breakouttime = HC.breakouttime
- displaytime = breakouttime / 600 //Minutes
- CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message( "\red [usr] attempts to remove \the [HC]!", 1)
- spawn(0)
- if(do_after(CM, breakouttime))
- if(!CM.legcuffed || CM.buckled)
- return // time leniency for lag which also might make this whole thing pointless but the server
- for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
- O.show_message("\red [CM] manages to remove the legcuffs!", 1)
- CM << "\blue You successfully remove \the [CM.legcuffed]."
- CM.unEquip(CM.legcuffed)
- CM.legcuffed = null
- CM.update_inv_legcuffed()
+ if(G.state == 3)
+ if(prob(5))
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(text("\red [] has broken free of []'s headlock!", L, G.assailant), 1)
+ del(G)
+
+ if(resisting)
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(text("\red [] resists!", L), 1)
+
+/* resist_buckle allows a mob that is bucklecuffed to break free of the chair/bed/whatever
+*/////
+/mob/living/proc/resist_buckle(var/mob/living/L)
+ if(iscarbon(L))
+ var/mob/living/carbon/C = L
+
+ if(C.handcuffed)
+ C.changeNext_move(CLICK_CD_BREAKOUT)
+ C.last_special = world.time + CLICK_CD_BREAKOUT
+
+ C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stay still)"
+ for(var/mob/O in viewers(L))
+ O.show_message("\red [usr] attempts to unbuckle themself!", 1)
+
+ spawn(0)
+ if(do_after(usr, 1200))
+ if(!C.buckled)
+ return
+ for(var/mob/O in viewers(C))
+ O.show_message("\red [usr] manages to unbuckle themself!", 1)
+ C << "\blue You successfully unbuckle yourself."
+ C.buckled.manual_unbuckle(C)
+
+ else
+ L.buckled.manual_unbuckle(L)
+
+/* resist_closet() allows a mob to break out of a welded/locked closet
+*/////
+/mob/living/proc/resist_closet()
+ var/breakout_time = 2 //2 minutes by default
+ var/mob/living/L = src
+ var/obj/structure/closet/C = L.loc
+ if(C.opened)
+ return //Door's open... wait, why are you in it's contents then?
+ if(istype(L.loc, /obj/structure/closet/secure_closet))
+ var/obj/structure/closet/secure_closet/SC = L.loc
+ if(!SC.locked && !SC.welded)
+ return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist'
+ else
+ if(!C.welded)
+ return //closed but not welded...
+ // else Meh, lets just keep it at 2 minutes for now
+ // breakout_time++ //Harder to get out of welded lockers than locked lockers
+
+ //okay, so the closet is either welded or locked... resist!!!
+ L.changeNext_move(CLICK_CD_BREAKOUT)
+ L.last_special = world.time + CLICK_CD_BREAKOUT
+ L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)"
+ for(var/mob/O in viewers(usr.loc))
+ O.show_message("\red The [L.loc] begins to shake violently!", 1)
+
+
+ spawn(0)
+ if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
+ if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened
+ return
+
+ //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'...
+ if(istype(L.loc, /obj/structure/closet/secure_closet))
+ var/obj/structure/closet/secure_closet/SC = L.loc
+ if(!SC.locked && !SC.welded)
+ return
+ else
+ if(!C.welded)
+ return
+
+ //Well then break it!
+ if(istype(usr.loc, /obj/structure/closet/secure_closet))
+ var/obj/structure/closet/secure_closet/SC = L.loc
+ SC.desc = "It appears to be broken."
+ SC.icon_state = SC.icon_off
+ flick(SC.icon_broken, SC)
+ sleep(10)
+ flick(SC.icon_broken, SC)
+ sleep(10)
+ SC.broken = 1
+ SC.locked = 0
+ SC.update_icon()
+ usr << "\red You successfully break out!"
+ for(var/mob/O in viewers(L.loc))
+ O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1)
+ if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
+ var/obj/structure/bigDelivery/BD = SC.loc
+ BD.attack_hand(usr)
+ SC.open()
+ else
+ C.welded = 0
+ C.update_icon()
+ usr << "\red You successfully break out!"
+ for(var/mob/O in viewers(L.loc))
+ O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1)
+ if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above
+ var/obj/structure/bigDelivery/BD = C.loc
+ BD.attack_hand(usr)
+ C.open()
+
+/* resist_stop_drop_roll allows a mob to stop, drop, and roll in order to put out a fire burning on them.
+*/////
+/mob/living/proc/resist_stop_drop_roll(var/mob/living/carbon/CM)
+ CM.fire_stacks -= 5
+ CM.weakened = max(CM.weakened, 3)//We dont check for CANWEAKEN, I don't care how immune to weakening you are, if you're rolling on the ground, you're busy.
+ CM.update_canmove()
+ CM.spin(32,2)
+ CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \
+ "You stop, drop, and roll!")
+ sleep(30)
+ if(fire_stacks <= 0)
+ CM.visible_message("[CM] has successfully extinguished themselves!", \
+ "You extinguish yourself.")
+ ExtinguishMob()
+ return
+
+/* resist_handcuffs allows a mob to break/remove their handcuffs after a delay
+*/////
+/mob/living/proc/resist_handcuffs(var/mob/living/carbon/CM)
+ CM.changeNext_move(CLICK_CD_BREAKOUT)
+ CM.last_special = world.time + CLICK_CD_BREAKOUT
+ var/obj/item/weapon/restraints/handcuffs/HC = CM.handcuffed
+
+ var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/restraints/handcuffs type
+ var/displaytime = 2 //Minutes to display in the "this will take X minutes."
+
+ var/hulklien = 0 //variable used to define if someone is a hulk or alien
+
+ if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
+ breakouttime = HC.breakouttime
+ displaytime = breakouttime / 600 //Minutes
+
+ if(isalienadult(CM) || (HULK in usr.mutations))
+ hulklien = 1
+ breakouttime = 50
+ displaytime = 5
+
+ CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] [hulklien ? "seconds" : "minute[displaytime==1 ? "" : "s"]"] and you need to stand still)"
+ for(var/mob/O in viewers(CM))
+ O.show_message( "\red [usr] attempts to [hulklien ? "break" : "remove"] \the [HC]!", 1)
+ spawn(0)
+ if(do_after(CM, breakouttime))
+ if(!CM.handcuffed || CM.buckled)
+ return // time leniency for lag which also might make this whole thing pointless but the server
+
+ for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
+ O.show_message("\red [CM] manages to [hulklien ? "break" : "remove"] the handcuffs!", 1)
+
+ CM << "\blue You successfully [hulklien ? "break" : "remove"] \the [CM.handcuffed]."
+
+ if(hulklien)
+ CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+ del(CM.handcuffed)
+ CM.handcuffed = null
+ CM.update_inv_handcuffed()
+ return
+
+ CM.unEquip(CM.handcuffed)
+
+/* resist_legcuffs allows a mob to break/remove their legcuffs after a delay
+*/////
+/mob/living/proc/resist_legcuffs(var/mob/living/carbon/CM)
+ var/obj/item/weapon/restraints/legcuffs/HC = CM.legcuffed
+
+ var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
+ var/displaytime = 2 //Minutes to display in the "this will take X minutes."
+
+ var/hulklien = 0 //variable used to define if someone is a hulk or alien
+
+ if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
+ breakouttime = HC.breakouttime
+ displaytime = breakouttime / 600 //Minutes
+
+ if(isalienadult(CM) || (HULK in usr.mutations))
+ hulklien = 1
+ breakouttime = 50
+ displaytime = 5
+
+ CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] [hulklien ? "seconds" : "minute[displaytime==1 ? "" : "s"]"] and you need to stand still)"
+
+ for(var/mob/O in viewers(CM))
+ O.show_message( "\red [usr] attempts to [hulklien ? "break" : "remove"] \the [HC]!", 1)
+
+ spawn(0)
+ if(do_after(CM, breakouttime))
+ if(!CM.legcuffed || CM.buckled)
+ return // time leniency for lag which also might make this whole thing pointless but the server
+ for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
+ O.show_message("\red [CM] manages to [hulklien ? "break" : "remove"] the legcuffs!", 1)
+
+ CM << "\blue You successfully [hulklien ? "break" : "remove"] \the [CM.legcuffed]."
+
+ if(!hulklien)
+ CM.unEquip(CM.legcuffed)
+
+ if(hulklien)
+ CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+ qdel(CM.legcuffed)
+
+ CM.legcuffed = null
+ CM.update_inv_legcuffed()
+
+/*//////////////////////
+ END RESIST PROCS
+*///////////////////////
+
+
+
+
/mob/living/carbon/proc/spin(spintime, speed)
spawn()
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index a6b4fdc207c..84496e1481b 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -199,29 +199,9 @@
return
-//This is called when the mob is thrown into a dense turf
-/mob/living/proc/turf_collision(var/turf/T, var/speed)
- src.take_organ_damage(speed*5)
-
-/mob/living/proc/near_wall(var/direction,var/distance=1)
- var/turf/T = get_step(get_turf(src),direction)
- var/turf/last_turf = src.loc
- var/i = 1
-
- while(i>0 && i<=distance)
- if(T.density) //Turf is a wall!
- return last_turf
- i++
- last_turf = T
- T = get_step(T,direction)
-
- return 0
-
-// End BS12 momentum-transfer code.
-
//Mobs on Fire
/mob/living/proc/IgniteMob()
- if(fire_stacks > 0)
+ if(fire_stacks > 0 && !on_fire)
on_fire = 1
src.AddLuminosity(3)
update_fire()
@@ -237,7 +217,7 @@
return
/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person
- fire_stacks = Clamp(fire_stacks + add_fire_stacks, min = -20, max = 20)
+ fire_stacks = Clamp(fire_stacks + add_fire_stacks, min = -20, max = 20)
/mob/living/proc/handle_fire()
if(fire_stacks < 0)
@@ -258,6 +238,26 @@
//Mobs on Fire end
+//This is called when the mob is thrown into a dense turf
+/mob/living/proc/turf_collision(var/turf/T, var/speed)
+ src.take_organ_damage(speed*5)
+
+/mob/living/proc/near_wall(var/direction,var/distance=1)
+ var/turf/T = get_step(get_turf(src),direction)
+ var/turf/last_turf = src.loc
+ var/i = 1
+
+ while(i>0 && i<=distance)
+ if(T.density) //Turf is a wall!
+ return last_turf
+ i++
+ last_turf = T
+ T = get_step(T,direction)
+
+ return 0
+
+// End BS12 momentum-transfer code.
+
/mob/living/proc/grabbedby(mob/living/carbon/user,var/supress_message = 0)
if(user == src || anchored)
return 0
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 7c235b0349a..1a683b9e183 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -36,9 +36,11 @@
var/cameraFollow = null
var/tod = null // Time of death
- var/update_slimes = 1
- on_fire = 0 //The "Are we on fire?" var
+
+ var/on_fire = 0 //The "Are we on fire?" var
var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20
+
+ var/update_slimes = 1
var/specialsauce = 0 //Has this person consumed enough special sauce? IF so they're a ticking time bomb of death.
var/implanting = 0 //Used for the mind-slave implant
var/silent = null //Can't talk. Value goes down every life proc.
diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm
index 9458a768633..e7baed57748 100644
--- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm
@@ -49,8 +49,7 @@
// DOORS
// Simply updates the visibility of the area when it opens/closes/destroyed.
-/obj/machinery/door/update_nearby_tiles(need_rebuild)
- . = ..(need_rebuild)
+/obj/machinery/door/proc/update_freelok_sight()
// Glass door glass = 1
// don't check then?
if(!glass && cameranet)
diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm
index 80dbd9811b4..41fc6bfcb6d 100644
--- a/code/modules/mob/living/silicon/pai/software_modules.dm
+++ b/code/modules/mob/living/silicon/pai/software_modules.dm
@@ -419,7 +419,7 @@
data["temperature"] = round(env.temperature)
data["temperatureC"] = round(env.temperature-T0C)
- var/t_moles = env.total_moles
+ var/t_moles = env.total_moles()
var/gases[0]
if(t_moles)
var/n2[0]
diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm
index 1bde793d3f6..94ca8afded2 100644
--- a/code/modules/mob/living/silicon/robot/examine.dm
+++ b/code/modules/mob/living/silicon/robot/examine.dm
@@ -50,4 +50,4 @@
msg += "\nIt is [pose]"
usr << msg
- return
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 3810dba4e34..976708e4e1d 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -366,4 +366,4 @@
if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them
IgniteMob()
-//Robots on fire
+//Robots on fire
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm
index 81df60fa1e5..f01b7abbd7c 100644
--- a/code/modules/mob/living/silicon/robot/robot_damage.dm
+++ b/code/modules/mob/living/silicon/robot/robot_damage.dm
@@ -32,11 +32,11 @@
else
heal_overall_damage(0, -amount)
-/mob/living/silicon/robot/proc/get_damaged_components(var/brute, var/burn)
+/mob/living/silicon/robot/proc/get_damaged_components(var/brute, var/burn, var/get_all)
var/list/datum/robot_component/parts = list()
for(var/V in components)
var/datum/robot_component/C = components[V]
- if(C.installed == 1) if((brute && C.brute_damage) || (burn && C.electronics_damage))
+ if(C.installed == 1 || get_all) if((brute && C.brute_damage) || (burn && C.electronics_damage))
parts += C
return parts
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 831f62c17fb..9c22893e198 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -56,7 +56,7 @@
if(11 to 15) healths.icon_state = "health4"
if(6 to 10) healths.icon_state = "health5"
if(1 to 5) healths.icon_state = "health6"
- else healths.icon_state = "health7"
+ if(0) healths.icon_state = "health7"
regenerate_icons()
/mob/living/simple_animal/corgi/Die()
diff --git a/code/modules/mob/living/simple_animal/pony.dm b/code/modules/mob/living/simple_animal/pony.dm
index edd3480cc23..85d8031f8a6 100644
--- a/code/modules/mob/living/simple_animal/pony.dm
+++ b/code/modules/mob/living/simple_animal/pony.dm
@@ -7,8 +7,8 @@
health = 50
speak_emote = list("whinnys")
emote_hear = list("excitedly says")
- response_help = "nuzzles"
- response_disarm = "flails it's hooves at"
+ response_help = "pets"
+ response_disarm = "pushes"
response_harm = "kicks"
melee_damage_lower = 5
melee_damage_upper = 15
@@ -25,37 +25,20 @@
status_flags = CANPUSH
universal_speak = 1
- Life()
- ..()
- if(stat == 2)
- new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc)
- for(var/mob/M in viewers(src, null))
- if((M.client && !( M.blinded )))
- M.show_message("\red [src] lets out a contented sigh as their form unwinds. ")
- ghostize()
- del src
- return
-
-
- attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
- if(istype(O, /obj/item/device/soulstone))
- O.transfer_soul("SHADE", src, user)
- else
- if(O.force)
- var/damage = O.force
- if (O.damtype == STAMINA)
- damage = 0
- health -= damage
- for(var/mob/M in viewers(src, null))
- if ((M.client && !( M.blinded )))
- M.show_message("\red \b [src] has been attacked with the [O] by [user]. ")
- else
- usr << "\red This weapon is ineffective, it does no damage."
- for(var/mob/M in viewers(src, null))
- if ((M.client && !( M.blinded )))
- M.show_message("\red [user] gently taps [src] with the [O]. ")
+/mob/living/simple_animal/pony/Life()
+ ..()
+ if(stat == 2)
+ new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(src.loc)
+ src.visible_message("\The [src] lets out a contented sigh as their form unwinds.")
+ src.ghostize()
+ qdel(src)
return
+/mob/living/simple_animal/pony/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
+ if(istype(O, /obj/item/device/soulstone))
+ O.transfer_soul("SHADE", src, user)
+ else
+ ..()
/mob/living/simple_animal/pony/twilight
name = "Twilight Sparkle"
@@ -145,5 +128,4 @@ mob/living/simple_animal/pony/mac
name = "Mac"
real_name = "Mac"
icon_state = "mac"
- icon_living = "mac"
-
+ icon_living = "mac"
\ No newline at end of file
diff --git a/code/modules/mob/spirit/viewpoint.dm b/code/modules/mob/spirit/viewpoint.dm
index 0cd54451361..15c4937b43d 100644
--- a/code/modules/mob/spirit/viewpoint.dm
+++ b/code/modules/mob/spirit/viewpoint.dm
@@ -113,7 +113,7 @@ var/obj/cult_viewpoint/list/cult_viewpoints = list()
/obj/cult_viewpoint/proc/get_cult_name()
if (cult_name)
return cult_name
- return "An Unknown Servent"
+ return "An Unknown Servant"
/obj/cult_viewpoint/proc/set_cult_name(var/newName)
diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm
index 843ccbf63ff..141e3d9ee5d 100644
--- a/code/modules/organs/blood.dm
+++ b/code/modules/organs/blood.dm
@@ -61,6 +61,19 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
if(blood_volume < 560 && blood_volume)
var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood
if(B) // Make sure there's some blood at all
+
+ if(src.mind) //Handles vampires "eating" blood that isn't their own.
+ if(src.mind in ticker.mode.vampires)
+ for(var/datum/reagent/blood/BL in vessel.reagent_list)
+ if(src.nutrition >= 450)
+ break //We don't want blood tranfusions making vampires fat.
+ if(BL.data["donor"] != src)
+ src.nutrition += (15 * REAGENTS_METABOLISM)
+ BL.volume -= REAGENTS_METABOLISM
+ if(BL.volume <= 0)
+ del(BL)
+ break //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires.
+
if(B.data["donor"] != src) //If it's not theirs, then we look for theirs
for(var/datum/reagent/blood/D in vessel.reagent_list)
if(D.data["donor"] == src)
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 74dfff272a4..6b0a26b2520 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -22,6 +22,13 @@ var/list/organ_cache = list()
// links chemical IDs to number of ticks for which they'll stay in the blood
germ_level = 0
+/obj/item/organ/attack_self(mob/user as mob)
+
+ // Convert it to an edible form, yum yum.
+ if(!robotic && user.a_intent == "harm")
+ bitten(user)
+ return
+
/obj/item/organ/proc/update_health()
return
@@ -256,3 +263,21 @@ var/list/organ_cache = list()
target.update_eyes()
..()
+/obj/item/organ/proc/bitten(mob/user)
+
+ if(robotic)
+ return
+
+ user << "\blue You take a bite out of \the [src]."
+
+ user.unEquip(src)
+ var/obj/item/weapon/reagent_containers/food/snacks/organ/O = new(get_turf(src))
+ O.name = name
+ O.icon_state = dead_icon ? dead_icon : icon_state
+
+ if(fingerprints) O.fingerprints = fingerprints.Copy()
+ if(fingerprintshidden) O.fingerprintshidden = fingerprintshidden.Copy()
+ if(fingerprintslast) O.fingerprintslast = fingerprintslast
+
+ user.put_in_active_hand(O)
+ del(src)
\ No newline at end of file
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 161ad5065dd..752b7c31dc5 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -6,8 +6,6 @@
w_class = 2
pressure_resistance = 2
- autoignition_temperature = 522 // Kelvin
-
/obj/item/weapon/folder/blue
desc = "A blue folder."
icon_state = "folder_blue"
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index f928cb8310c..a30412156ee 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -10,7 +10,7 @@
pressure_resistance = 10
var/amount = 30 //How much paper is in the bin.
var/list/papers = new/list() //List of papers put in the bin for reference.
-
+/*
autoignition_temperature = 519.15 // Kelvin
/obj/item/weapon/paper_bin/ignite(var/temperature)
@@ -24,7 +24,7 @@
papers=0
amount=0
update_icon()
-
+*///LINDA shit figure out later
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
var/mob/M = usr
if(M.restrained() || M.stat || !Adjacent(M))
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index a10372b8be8..c7c4205bc1c 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -310,7 +310,11 @@
pc.Blend(tiny_img,ICON_OVERLAY, 12, 19)
var/datum/picture/P = new()
- P.fields["name"] = "photo"
+ if(istype(src,/obj/item/device/camera/digital))
+ P.fields["name"] = input(user,"Name photo:","photo")
+ P.name = P.fields["name"]//So the name is displayed on the print/delete list.
+ else
+ P.fields["name"] = "photo"
P.fields["author"] = user
P.fields["icon"] = ic
P.fields["tiny"] = pc
@@ -351,6 +355,82 @@
return p
+/*****************
+* digital camera *
+******************/
+/obj/item/device/camera/digital
+ name = "digital camera"
+ desc = "A digital camera. A small screen shows there is space for 10 photos left."
+ var/list/datum/picture/saved_pictures = list()
+ pictures_left = 30
+ var/max_storage = 10
+
+/obj/item/device/camera/digital/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
+ if(!on || !pictures_left || ismob(target.loc)) return
+ captureimage(target, user, flag)
+
+ playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3)
+
+ desc = "A digital camera. A small screen shows that there are currently [saved_pictures.len] pictures stored."
+ icon_state = icon_off
+ on = 0
+ spawn(64)
+ icon_state = icon_on
+ on = 1
+
+/obj/item/device/camera/digital/captureimage(atom/target, mob/user, flag)
+ if(saved_pictures.len >= max_storage)
+ user << "Maximum photo storage capacity reached."
+ return
+ user << "Picture saved."
+ var/x_c = target.x - (size-1)/2
+ var/y_c = target.y + (size-1)/2
+ var/z_c = target.z
+ var/list/turfs = list()
+ var/mobs = ""
+ for(var/i = 1; i <= size; i++)
+ for(var/j = 1; j <= size; j++)
+ var/turf/T = locate(x_c, y_c, z_c)
+ if(can_capture_turf(T, user))
+ turfs.Add(T)
+ mobs += get_mobs(T)
+ x_c++
+ y_c--
+ x_c = x_c - size
+
+ var/datum/picture/P = createpicture(target, user, turfs, mobs, flag)
+ saved_pictures += P
+
+/obj/item/device/camera/digital/verb/print_picture()
+ set name = "Print picture"
+ set category = "Object"
+ set src in usr
+
+ if(saved_pictures.len == 0)
+ usr << "No images saved."
+ return
+ if(pictures_left == 0)
+ usr << "There is no film left to print."
+ return
+
+ var/datum/picture/P = null
+ P = input("Select image to print:",P) as null|anything in saved_pictures
+ if(P)
+ printpicture(usr,P)
+ pictures_left --
+
+/obj/item/device/camera/digital/verb/delete_picture()
+ set name = "Delete picture"
+ set category = "Object"
+ set src in usr
+
+ if(saved_pictures.len == 0)
+ usr << "No images saved"
+ return
+ var/datum/picture/P = null
+ P = input("Select image to delete:",P) as null|anything in saved_pictures
+ if(P)
+ saved_pictures -= P
/**************
*video camera *
diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm
index 2421b49568a..eaa8bbd1246 100644
--- a/code/modules/paperwork/stamps.dm
+++ b/code/modules/paperwork/stamps.dm
@@ -75,7 +75,7 @@
/obj/item/weapon/stamp/centcom
name = "Nanotrasen Representative's rubber stamp"
icon_state = "stamp-cent"
- _color = "centcom"
+ _color = "internalaffairs"
/obj/item/weapon/stamp/attack_paw(mob/user as mob)
return attack_hand(user)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 9d7166614f2..26fb14f92e8 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -579,7 +579,7 @@
// called when on fire
-/obj/machinery/light/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/machinery/light/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C
broken()
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index b59c01d9a23..9b16ca3130f 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -32,7 +32,7 @@ var/global/list/rad_collectors = list()
P.air_contents.toxins = 0
eject()
else
- P.air_contents.adjust(tx = -0.001*drainratio)
+ P.air_contents.toxins -= 0.001*drainratio
return
diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm
index 50f5d33d1e8..305c9fb6f95 100644
--- a/code/modules/projectiles/guns/projectile/pneumatic.dm
+++ b/code/modules/projectiles/guns/projectile/pneumatic.dm
@@ -128,7 +128,7 @@
if(!tank || !..()) return //Only do this on a successful shot.
- var/lost_gas_amount = tank.air_contents.total_moles*(pressure_setting/100)
+ var/lost_gas_amount = tank.air_contents.total_moles()*(pressure_setting/100)
var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount)
user.loc.assume_air(removed)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index ccd0aae93d5..8424fb54b69 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -45,6 +45,7 @@
var/weaken = 0
var/paralyze = 0
var/irradiate = 0
+ var/slur = 0
var/stutter = 0
var/eyeblur = 0
var/drowsy = 0
@@ -79,7 +80,7 @@
if(!isliving(target)) return 0
if(isanimal(target)) return 0
var/mob/living/L = target
- return L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked, stamina, jitter)
+ return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, agony, blocked, stamina, jitter)
proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not.
if(!istype(target) || !istype(user))
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index e532af0e6c0..11fb7facc5f 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -104,7 +104,7 @@
/obj/item/projectile/bullet/incendiary/shell/Move()
..()
var/turf/location = get_turf(src)
- new/obj/fire(location)
+ new/obj/effect/hotspot(location)
location.hotspot_expose(700, 50, 1)
/obj/item/projectile/bullet/incendiary/shell/dragonsbreath
diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm
index b2e80728a35..5c05909becd 100644
--- a/code/modules/reagents/Chemistry-Holder.dm
+++ b/code/modules/reagents/Chemistry-Holder.dm
@@ -334,7 +334,8 @@ datum
var/list/seen = viewers(4, get_turf(my_atom))
for(var/mob/M in seen)
- M << "\blue \icon[my_atom] [C.mix_message]"
+ if(!C.no_message)
+ M << "\blue \icon[my_atom] [C.mix_message]"
/* if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/ME = my_atom
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 5a98027367c..289c388b17b 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -278,7 +278,7 @@
energy = 100
max_energy = 100
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
- dispensable_reagents = list("ice","cream","beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead")
+ dispensable_reagents = list("ice","cream", "cider", "beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead")
hack_message = "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes."
unhack_message = "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes."
hacked_reagents = list("goldschlager","patron", "absinthe", "ethanol", "nothing")
@@ -293,11 +293,11 @@
energy = 5
max_energy = 5
amount = 5
- recharge_delay = 30
+ recharge_delay = 10
dispensable_reagents = list()
- var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen"),
- list("lithium", "sugar", "water", "copper", "mercury", "sodium"),
- list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron"))
+ var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "tungsten", "water"),
+ list("lithium", "sugar", "copper", "mercury", "sodium","iodine","bromine"),
+ list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron", "silver"))
/obj/machinery/chem_dispenser/constructable/New()
..()
@@ -323,7 +323,7 @@
time += C.rating
for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
time += round(P.maxcharge, 10000) / 10000
- recharge_delay /= time/2 //delay between recharges, double the usual time on lowest 50% less than usual on highest
+ recharge_delay = 10 / (time/2) //delay between recharges, double the usual time on lowest 33% less than usual on highest
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
for(i=1, i<=M.rating, i++)
dispensable_reagents = sortList(dispensable_reagents | special_reagents[i])
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 0ac2c811d88..6201723c6ec 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -223,7 +223,6 @@ datum
reaction_turf(var/turf/simulated/T, var/volume)
if (!istype(T)) return
- var/CT = cooling_temperature
src = null
if(volume >= 3)
if(T.wet >= 1) return
@@ -245,10 +244,10 @@ datum
for(var/mob/living/carbon/slime/M in T)
M.apply_water()
- var/hotspot = (locate(/obj/fire) in T)
+ var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
- lowertemp.temperature = max( min(lowertemp.temperature-(CT*1000),lowertemp.temperature / CT) ,0)
+ lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
qdel(hotspot)
@@ -257,13 +256,13 @@ datum
reaction_obj(var/obj/O, var/volume)
src = null
var/turf/T = get_turf(O)
- var/hotspot = (locate(/obj/fire) in T)
+ var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
- del(hotspot)
+ qdel(hotspot)
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
if(!cube.wrapped)
@@ -1135,6 +1134,7 @@ datum
M.adjustToxLoss(3*REM)
..()
return
+
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel!
if(!istype(M, /mob/living))
return
@@ -1486,9 +1486,9 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
- if(prob(50)) M.heal_organ_damage(1,0)
if(!(M.mind in ticker.mode.vampires))
M.nutrition += nutriment_factor // For hunger and fatness
+ if(prob(50)) M.heal_organ_damage(1,0)
..()
return
@@ -1767,13 +1767,13 @@ datum
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
- var/hotspot = (locate(/obj/fire) in T)
+ var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot)
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
- del(hotspot)
+ qdel(hotspot)
enzyme
name = "Denatured Enzyme"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 7910dfe3c8b..00f9a662b91 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -17,6 +17,7 @@ datum
var/required_temp = 0
var/mix_message = "The solution begins to bubble."
var/mix_sound = 'sound/effects/bubbles.ogg'
+ var/no_message = 0
proc
@@ -379,6 +380,7 @@ datum
mix_message = "The mixture gives off a sharp acidic tang."
///////Changeling Blood Test/////////////
+/*
changeling_test
name = "Changeling blood test"
id = "changelingblood"
@@ -403,6 +405,7 @@ datum
M.show_message( "The blood seems to break apart in the fuel.", 1)
holder.del_reagent("blood")
return
+*/
/////////////////////////////////////////////NEW SLIME CORE REACTIONS/////////////////////////////////////////////
@@ -641,19 +644,13 @@ datum
required_container = /obj/item/slime_extract/orange
required_other = 1
on_reaction(var/datum/reagents/holder)
- for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
+ feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
+ for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
- var/turf/location = get_turf(holder.my_atom.loc)
- for(var/turf/simulated/floor/target_tile in range(0,location))
-
- var/datum/gas_mixture/napalm = new
-
- napalm.toxins = 25
- napalm.temperature = 1400
-
- target_tile.assume_air(napalm)
- spawn (0) target_tile.hotspot_expose(700, 400)
+ var/turf/simulated/T = get_turf(holder.my_atom)
+ if(istype(T))
+ T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50)
//Yellow
slimeoverload
diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm
index b7012cb7b24..e8009abbe60 100644
--- a/code/modules/reagents/newchem/drugs.dm
+++ b/code/modules/reagents/newchem/drugs.dm
@@ -90,7 +90,7 @@ datum/reagent/crank/addiction_act_stage4(var/mob/living/M as mob)
/datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume)
var/turf/T = get_turf(holder.my_atom)
for(var/turf/turf in range(1,T))
- new /obj/fire(turf)
+ new /obj/effect/hotspot(turf)
explosion(T,0,0,2)
return
diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm
index cbc9123e686..42b259c0ea7 100644
--- a/code/modules/reagents/newchem/food.dm
+++ b/code/modules/reagents/newchem/food.dm
@@ -240,9 +240,9 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
return
/datum/chemical_reaction/cheese
- name = "weird_cheese"
- id = "weird_cheese"
- result = "weird_cheese"
+ name = "cheese"
+ id = "cheese"
+ result = "cheese"
required_reagents = list("vomit" = 1, "milk" = 1)
result_amount = 1
mix_message = "The mixture curdles up."
diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm
index 05e6f4fa64c..6012f1a4bbb 100644
--- a/code/modules/reagents/newchem/other.dm
+++ b/code/modules/reagents/newchem/other.dm
@@ -102,6 +102,7 @@ datum/reagent/acetone
result_amount = 0.5
required_temp = 480
mix_sound = null
+ no_message = 1
datum/reagent/colorful_reagent
name = "Colorful Reagent"
@@ -119,7 +120,7 @@ datum/reagent/colorful_reagent
mix_message = "The substance flashes multiple colors and emits the smell of a pocket protector."
datum/reagent/colorful_reagent/reaction_mob(var/mob/living/simple_animal/M, var/method=TOUCH, var/volume)
- if(M)
+ if(M && istype(M))
M.color = pick(random_color_list)
..()
return
diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm
index 680fd098655..910b34b9a6a 100644
--- a/code/modules/reagents/newchem/pyro.dm
+++ b/code/modules/reagents/newchem/pyro.dm
@@ -45,7 +45,7 @@
/datum/chemical_reaction/clf3/on_reaction(var/datum/reagents/holder, var/created_volume)
var/turf/T = get_turf(holder.my_atom)
for(var/turf/turf in range(1,T))
- new /obj/fire(turf)
+ new /obj/effect/hotspot(turf)
return
/datum/reagent/clf3/reaction_turf(var/turf/simulated/T, var/volume)
@@ -58,7 +58,7 @@
if(prob(volume/10))
F.make_plating()
if(istype(F, /turf/simulated/floor/))
- new /obj/fire(F)
+ new /obj/effect/hotspot(F)
if(istype(T, /turf/simulated/wall/))
var/turf/simulated/wall/W = T
if(prob(volume/10))
@@ -175,7 +175,7 @@
required_reagents = list("blackpowder" = 1)
result_amount = 1
required_temp = 474
- mix_message = "sparks start flying about."
+ no_message = 1
mix_sound = null
datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
@@ -295,7 +295,14 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
spawn(0)
if(S)
S.set_up(holder, 10, 0, location)
- S.start(created_volume >= 10 ? 3 : 2)
+ if(created_volume < 5)
+ S.start(1)
+ if(created_volume >=5 && created_volume < 10)
+ S.start(2)
+ if(created_volume >= 10 && created_volume < 15)
+ S.start(3)
+ if(created_volume >=15)
+ S.start(4)
if(holder && holder.my_atom)
holder.clear_reagents()
return
@@ -408,7 +415,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
return
var/turf/simulated/T = get_turf(holder.my_atom)
for(var/turf/simulated/turf in range(created_volume/10,T))
- new /obj/fire(turf)
+ new /obj/effect/hotspot(turf)
return
/datum/reagent/phlogiston/on_mob_life(var/mob/living/M as mob)
@@ -551,7 +558,7 @@ datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
src = null
if(!istype(T, /turf/space))
new /obj/effect/decal/cleanable/flour/foam(T) //foam mess; clears up quickly.
- var/hotspot = (locate(/obj/fire) in T)
+ var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
lowertemp.temperature = max( min(lowertemp.temperature-(CT*1000),lowertemp.temperature / CT) ,0)
@@ -563,7 +570,7 @@ datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
src = null
var/turf/T = get_turf(O)
- var/hotspot = (locate(/obj/fire) in T)
+ var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm
index c170c199cc1..b2779e42e4c 100644
--- a/code/modules/reagents/newchem/toxins.dm
+++ b/code/modules/reagents/newchem/toxins.dm
@@ -143,6 +143,7 @@ datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob)
result_amount = 1
required_temp = 674
mix_sound = null
+ no_message = 1
datum/reagent/cyanide
name = "Cyanide"
diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm
index 898d3c18e8a..cc265f9b1fe 100644
--- a/code/modules/reagents/reagent_containers/food/cans.dm
+++ b/code/modules/reagents/reagent_containers/food/cans.dm
@@ -317,97 +317,4 @@
icon_state = "sodawater"
New()
..()
- reagents.add_reagent("sodawater", 50)
-
-//Donk Co. Cola//
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/pubber
- name = "Dr. Pubber"
- desc = "The beverage of an original crowd. Tastes like an industrial tranquilizer."
- icon_state = "dr_gibb"
- New()
- ..()
- reagents.add_reagent("haloperidol", 4)
- reagents.add_reagent("morphine", 4)
- reagents.add_reagent("vhfcs", 10)
- reagents.add_reagent("cola", 12)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/robust
- name = "Robust-Eeze"
- desc = "A carbonated robustness tonic. It has quite a kick."
- icon_state = "cola"
- New()
- ..()
- reagents.add_reagent("methamphetamine", 3)
- reagents.add_reagent("vhfcs", 10)
- reagents.add_reagent("cola", 17)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/grifeo
- name = "Grife-O"
- desc = "The carbonated beverage of a space generation. Contains actual space dust!"
- icon_state = "griefo"
- New()
- ..()
- reagents.add_reagent("radium", 3)
- reagents.add_reagent("ephedrine", 6)
- reagents.add_reagent("vhfcs", 10)
- reagents.add_reagent("cola", 11)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/orangeaid
- name = "Orange-Aid"
- desc = "A vitamin tonic that promotes good eyesight and health."
- icon_state = "starkist"
- New()
- ..()
- reagents.add_reagent("orangejuice", 20)
- reagents.add_reagent("oculine", 20)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/limeaid
- name = "Lime-Aid"
- desc = "Antihol mixed with lime juice. A well-known cure for hangovers."
- icon_state = "space-up"
- New()
- ..()
- reagents.add_reagent("limejuice", 20)
- reagents.add_reagent("antihol", 20)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/runoff
- name = "Spooky Dan's Runoffa Cola"
- desc = "A spoooky cola for Halloween! Rumors that Runoff Cola contains actual industrial runoff are unsubstantiated."
- icon_state = "purple_can"
- New()
- ..()
- reagents.add_reagent("chlorine", 5)
- reagents.add_reagent("phosphorus", 5)
- reagents.add_reagent("mercury", 5)
- reagents.add_reagent("vhfcs", 10)
- reagents.add_reagent("cola", 15)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/horror
- name = "Spooky Dan's Horrortastic Cola"
- desc = "A terrifying Halloween soda. It's especially frightening if you're diabetic."
- icon_state = "glowingbeer"
- New()
- ..()
- reagents.add_reagent("ectoplasm", 10)
- reagents.add_reagent("sulfur", 5)
- reagents.add_reagent("vhfcs", 5)
- reagents.add_reagent("cola", 20)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/grones
- name = "Grones Soda"
- desc = "Bursting with 10 different flavors!"
- icon_state = "grones"
- New()
- ..()
- reagents.add_reagent("cola", 20)
- reagents.add_reagent(pick("atropine","serotrotium","lithium","mercury","charcoal","diphenhydramine","spaceacillin","hairgrownium","ephedrine","capsaicin"), 10)
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/decirprevo
- name = "Decirprevo Bottled Water"
- desc = "Bottled from our cool natural springs on Europa."
- icon_state = "waterbottle"
- New()
- ..()
- reagents.add_reagent("water", 45)
- reagents.add_reagent("iodine", 5)
\ No newline at end of file
+ reagents.add_reagent("sodawater", 50)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index 9d52b6e701e..b2e6c9d7970 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -365,211 +365,3 @@
desc = "A cup with the british flag emblazoned on it."
icon_state = "britcup"
volume = 30
-
-////Stinkeye/// Holy buns don't ever drink this -Fox
-
-/obj/item/weapon/reagent_containers/food/drinks/stinkeye
- name = "Stinkeye's Special Reserve"
- desc = "An old bottle labelled 'The Good Stuff'. This probably has enough kick to knock an elephant on its ass."
- icon_state = "whiskeybottle"
- volume = 250
- New()
- ..()
- reagents.add_reagent("beer", 30)
- reagents.add_reagent("wine", 30)
- reagents.add_reagent("cider", 30)
- reagents.add_reagent("vodka", 30)
- reagents.add_reagent("ethanol", 30)
- reagents.add_reagent("eyenewt", 30)
-
-////Discount Dan's Soup////// May God have mercy on your souls---and stomachs. -Fox
-
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup
- name = "Discount Dan's Quik-Noodles"
- desc = "A self-heating cup of noodles. There's enough sodium in these to put the Dead Sea to shame."
- icon_state = "dansoup"
- volume = 65
- var/selfheat = 0
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/attack_self(mob/user as mob) //self-heating action!
- if(selfheat)
- return
- else
- selfheat = 1
- user << "You twist the bottom of the cup. The cup emits a soft clack as the heater triggers."
- reagents.add_reagent("pyrosium", 2)
- reagents.add_reagent("oxygen", 2)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/random
- New()
- ..()
- var/list/list = typesof(/obj/item/weapon/reagent_containers/food/drinks/dansoup) - list(/obj/item/weapon/reagent_containers/food/drinks/dansoup,/obj/item/weapon/reagent_containers/food/drinks/dansoup/random)
- var/T = pick(list)
- new T(loc)
- spawn(0)
- del src
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/bbq
- name = "Devil Dan's Quik-Noodles - Brimstone BBQ Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("sulfur", 5)
- reagents.add_reagent("beff", 5)
-// reagents.add_reagent("ghostchili", 5) uncomment once ghost chili juice is added
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/macaroni
- name = "Discount Dan's Quik-Noodles - Macaroni and Imitation Processed Cheese Product Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 9)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("fake_cheese", 2)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/beef
- name = "Comrade Dan's Quik-Noodles - Beef Perestroikanoff Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("milk", 3)
- reagents.add_reagent("enzyme", 3)
- reagents.add_reagent("beff", 4)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/teriyaki
- name = "Discount Deng's Quik-Noodles - Teriyaki TVP Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("hydrogenated_soybeanoil", 1)
- reagents.add_reagent("msg", 14)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("synthflesh", 5)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/gamer
- name = "Dan's Quik-Noodles - Gamer Grubs Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("????", 10)
- reagents.add_reagent("potassium", 5)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/mushroom
- name = "Frycook Dan's Quik-Noodles - Mushroom-Swiss Burger-Bake Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("beff", 2)
- reagents.add_reagent("weird_cheese", 2)
- reagents.add_reagent("psilocybin", 6)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/ketchup
- name = "Frycook Dan's Quik-Noodles - Curly Fry Ketchup Hoedown Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("hydrogenated_soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("tomatojuice", 4)
- reagents.add_reagent("mugwort", 3)
- reagents.add_reagent("capsaicin", 3)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/sundae
- name = "Dessert Dan's Quik-Noodles - Sweet Sundae Noodle Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("vhfcs", 10)
- reagents.add_reagent("chocolate", 2)
- reagents.add_reagent("cream", 2)
- reagents.add_reagent("chocolate_milk", 6)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/tuna
- name = "Descuento Danito's Quik-Noodles - Tuna Melt Taco Fiesta Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("fake_cheese", 3)
- reagents.add_reagent("mercury", 3)
- reagents.add_reagent("capsaicin", 4)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/lomein
- name = "Discount Deng's Quik-Noodles - Sweet and Sour Lo Mein Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("sacid", 3)
- reagents.add_reagent("vhfcs", 7)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/crab
- name = "Pirate Dan's Quik-Noodles - Spicy Imitation Crab Meat Paste Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("synthflesh", 3)
- reagents.add_reagent("saltpetre", 3)
- reagents.add_reagent("capsaicin", 14)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/sausage
- name = "Morning Dan's Quik-Noodles - Mechanically Reclaimed Sausage Biscuit Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("hydrogenated_soybeanoil", 4)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("ammonia", 3)
- reagents.add_reagent("gravy", 4)
- reagents.add_reagent("coffee", 3)
-
-/obj/item/weapon/reagent_containers/food/drinks/dansoup/italian
- name = "Sconto Danilo's Quik-Noodles - Italian Strozzapreti Lunare Flavor"
- New()
- ..()
- reagents.add_reagent("chicken_soup", 10)
- reagents.add_reagent("soybeanoil", 1)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("sodiumchloride", 10)
- reagents.add_reagent("nicotine", 8)
- reagents.add_reagent("tomatojuice", 4)
- reagents.add_reagent("wine", 2)
- reagents.add_reagent("water", 2)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 3c33b2836cf..8cc0229c548 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -625,6 +625,19 @@
..()
reagents.add_reagent("nutriment", 1)
+/obj/item/weapon/reagent_containers/food/snacks/organ
+
+ name = "organ"
+ desc = "It's good for you."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "appendix"
+ filling_color = "#E00D34"
+
+ New()
+ ..()
+ reagents.add_reagent("nutriment", 4)
+ src.bitesize = 3
+
/obj/item/weapon/reagent_containers/food/snacks/appendix
//yes, this is the same as meat. I might do something different in future
name = "appendix"
@@ -3368,119 +3381,4 @@
icon_state = "ectoplasm"
New()
..()
- reagents.add_reagent("ectoplasm", 10)
-
-////Discount Dan's Burritos////// May God have mercy on your souls---and stomachs. -Fox
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito
- name = "Discount Dan's Burrito"
- desc = "Quite possibly the worst burrito in all of space."
- icon_state = "danburrito"
- bitesize = 10
- var/selfheat = 0
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/attack_self(mob/user as mob) //self-heating action!
- if(selfheat)
- return
- else
- selfheat = 1
- user << "You crack the burrito like a glow stick, activating the heater mechanism."
- reagents.add_reagent("pyrosium", 2)
- reagents.add_reagent("oxygen", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/random
- New()
- ..()
- var/list/list = typesof(/obj/item/weapon/reagent_containers/food/snacks/danburrito) - list(/obj/item/weapon/reagent_containers/food/snacks/danburrito,/obj/item/weapon/reagent_containers/food/snacks/danburrito/random)
- var/T = pick(list)
- new T(loc)
- spawn(0)
- del src
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/pizza
- name = "Sconto Danilo's Burritos - 50% Real Mozzarella Pepperoni Pizza Party Flavor"
- desc = "A self-heating pizza burrito."
- New()
- ..()
- reagents.add_reagent("soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("fake_cheese", 3)
- reagents.add_reagent("cheese", 3)
- reagents.add_reagent("pepperoni", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/pancake
- name = "Descuento Danito's Burritos - Pancake Sausage Brunch Flavor"
- desc = "A self-heating breakfast burrito with a buttermilk pancake in lieu of a tortilla. A little frightening."
- New()
- ..()
- reagents.add_reagent("hydrogenated_soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("porktonium", 4)
- reagents.add_reagent("vhfcs", 2)
- reagents.add_reagent("coffee", 4)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/beans
- name = "Descuento Danito's Burritos - Spicy Beans and Wieners Ole! Flavor"
- desc = "A self-heating convenience reinterpretation of Mexican cuisine. The exact mechanism used to heat it is probably best left to speculation."
- New()
- ..()
- reagents.add_reagent("soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("lithium", 4)
- reagents.add_reagent("capsaicin", 6)
- reagents.add_reagent("beans", 10)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/homestyle
- name = "Descuento Danito's Burritos - Homestyle Comfort Flavor"
- desc = "A self-heating burrito just like Mom used to make, if your mother was a souless, automated burrito production line."
- New()
- ..()
- reagents.add_reagent("soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("mashedpotatoes", 5)
- reagents.add_reagent("gravy", 3)
- reagents.add_reagent("diethylamine", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/texas
- name = "Spooky Dan's BOO-ritos - Texas Toast Chainsaw Massacre Flavor"
- desc = "A self-heating burrito. Isn't that concept scary enough on its own?"
- New()
- ..()
- reagents.add_reagent("soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("fake_cheese", 3)
- reagents.add_reagent("space_drugs", 3)
-// reagents.add_reagent("cblood", 4) uncomment once actual changeling blood is added
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/beff
- name = "Descuento Danito's Burritos - Beff and Bean Flavor"
- desc = "A self-heating convenience reinterpretation of Mexican cuisine. The exact mechanism used to heat it is probably best left to speculation."
- New()
- ..()
- reagents.add_reagent("hydrogenated_soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("uranium", 2)
- reagents.add_reagent("beff", 4)
- reagents.add_reagent("fake_cheese", 4)
- reagents.add_reagent("beans", 10)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/nightmare
- name = "Spooky Dan's BOO-ritos - Nightmare on Elm Meat Flavor"
- desc = "A self-heating burrito that purports to contain elm-smoked meat. Of some sort. Probably from an animal."
- New()
- ..()
- reagents.add_reagent("soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("beff", 3)
- reagents.add_reagent("synthflesh", 2)
- reagents.add_reagent("tonguedog", 9)
-
-/obj/item/weapon/reagent_containers/food/snacks/danburrito/strawberry
- name = "Descuento Danito's Burritos - Strawberrito Churro Flavor"
- desc = "There is no way anyone could possibly justify this."
- New()
- ..()
- reagents.add_reagent("soybeanoil", 3)
- reagents.add_reagent("msg", 9)
- reagents.add_reagent("vhfcs", 8)
- reagents.add_reagent("oil", 2)
\ No newline at end of file
+ reagents.add_reagent("ectoplasm", 10)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm
index e88c22556f5..a469be34254 100644
--- a/code/modules/reagents/reagent_containers/glass_containers.dm
+++ b/code/modules/reagents/reagent_containers/glass_containers.dm
@@ -1,4 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
/// (Mixing)Glass.
////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/glass
@@ -190,6 +190,7 @@
item_state = "beaker"
m_amt = 0
g_amt = 500
+ var/obj/item/device/assembly_holder/assembly = null
on_reagent_change()
update_icon()
@@ -228,6 +229,55 @@
if (!is_open_container())
var/image/lid = image(icon, src, "lid_[initial(icon_state)]")
overlays += lid
+ if(assembly)
+ overlays += "assembly"
+
+/obj/item/weapon/reagent_containers/glass/beaker/verb/remove_assembly()
+ set name = "Remove Assembly"
+ set category = "Object"
+ set src in usr
+ if(usr.stat || !usr.canmove || usr.restrained())
+ return
+ if (assembly)
+ usr << "You detach [assembly] from \the [src]"
+ usr.put_in_hands(assembly)
+ assembly = null
+ update_icon()
+ else
+ usr << "There is no assembly to remove."
+
+/obj/item/weapon/reagent_containers/glass/beaker/proc/heat_beaker()
+ if(reagents)
+ reagents.chem_temp += 30
+ reagents.handle_reactions()
+
+/obj/item/weapon/reagent_containers/glass/beaker/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+ if (istype(W,/obj/item/device/assembly_holder))
+ if (assembly)
+ usr << "The [src] already has an assembly."
+ return ..()
+ assembly = W
+ user.drop_item()
+ W.loc = src
+ overlays += "assembly"
+ else
+ ..()
+
+/obj/item/weapon/reagent_containers/glass/beaker/HasProximity(atom/movable/AM)
+ if(assembly)
+ assembly.HasProximity(AM)
+
+/obj/item/weapon/reagent_containers/glass/beaker/Crossed(atom/movable/AM)
+ if(assembly)
+ assembly.Crossed(AM)
+
+/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder as mob) //for mousetraps
+ if(assembly)
+ assembly.on_found(finder)
+
+/obj/item/weapon/reagent_containers/glass/beaker/hear_talk(mob/living/M, msg)
+ if(assembly)
+ assembly.hear_talk(M, msg)
/obj/item/weapon/reagent_containers/glass/beaker/large
name = "large beaker"
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 27472b7d732..d1506aa8dbc 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -405,6 +405,7 @@
//Actually transfer the gas
var/datum/gas_mixture/removed = env.remove(transfer_moles)
air_contents.merge(removed)
+ air_update_turf()
// if full enough, switch to ready mode
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index 2c5c73f5374..b3efb13975a 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -178,6 +178,14 @@
build_path = /obj/item/device/assembly/prox_sensor
category = list("initial", "Miscellaneous")
+/datum/design/mousetrap
+ name = "Mousetrap"
+ id = "mousetrap"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 800, "$glass" = 200)
+ build_path = /obj/item/device/assembly/mousetrap
+ category = list("initial", "Miscellaneous")
+
/datum/design/timer
name = "Timer"
id = "timer"
diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm
index 4b0dc6425e9..403e5745ca8 100644
--- a/code/modules/research/designs/misc_designs.dm
+++ b/code/modules/research/designs/misc_designs.dm
@@ -39,4 +39,14 @@
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 30, "$glass" = 10)
build_path = /obj/item/weapon/disk/tech_disk
+ category = list("Miscellaneous")
+
+/datum/design/digital_camera
+ name = "Digital Camera"
+ desc = "Produce an enhanced version of the standard issue camera."
+ id = "digitalcamera"
+ req_tech = list("programming" = 2, "materials" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 500, "$glass" = 300)
+ build_path = /obj/item/device/camera/digital
category = list("Miscellaneous")
\ No newline at end of file
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index e3daebc6b36..e999c34df17 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -117,21 +117,22 @@
removed.temperature = min((removed.temperature*heat_capacity + heating_power)/heat_capacity, 1000)
env.merge(removed)
+ air_update_turf()
/obj/machinery/r_n_d/server/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if (disabled)
return
-
+
if (shocked)
shock(user,50)
-
- if(istype(O, /obj/item/weapon/screwdriver))
+
+ if(istype(O, /obj/item/weapon/screwdriver))
default_deconstruction_screwdriver(user, "server_o", "server")
return 1
-
+
if(exchange_parts(user, O))
return 1
-
+
if (panel_open)
if(istype(O, /obj/item/weapon/crowbar))
griefProtection()
@@ -141,7 +142,7 @@
/obj/machinery/r_n_d/server/attack_hand(mob/user as mob)
if (disabled)
return
-
+
if (shocked)
shock(user,50)
return
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm
index c9cafa4e718..df7fa75c848 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm
@@ -22,5 +22,5 @@
/datum/artifact_effect/gasco2/DoEffectAura()
if(holder)
var/datum/gas_mixture/env = holder.loc.return_air()
- if(env && env.total_moles < max_pressure)
+ if(env && env.total_moles() < max_pressure)
env.carbon_dioxide += pick(0, 0, 0.1, rand())
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm
index 527c2592aa9..55e667e5264 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm
@@ -19,5 +19,5 @@
/datum/artifact_effect/gasnitro/DoEffectAura()
if(holder)
var/datum/gas_mixture/env = holder.loc.return_air()
- if(env && env.total_moles < max_pressure)
+ if(env && env.total_moles() < max_pressure)
env.nitrogen += pick(0, 0, 0.1, rand())
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm
index d0daa6951fb..e4c30bd0cbd 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm
@@ -19,5 +19,5 @@
/datum/artifact_effect/gasoxy/DoEffectAura()
if(holder)
var/datum/gas_mixture/env = holder.loc.return_air()
- if(env && env.total_moles < max_pressure)
+ if(env && env.total_moles() < max_pressure)
env.oxygen += pick(0, 0, 0.1, rand())
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm
index c375e746e28..68719264f02 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm
@@ -19,5 +19,5 @@
/datum/artifact_effect/gasplasma/DoEffectAura()
if(holder)
var/datum/gas_mixture/env = holder.loc.return_air()
- if(env && env.total_moles < max_pressure)
+ if(env && env.total_moles() < max_pressure)
env.toxins += pick(0, 0, 0.1, rand())
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm
index 5ce5256736c..76cd29069f0 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm
@@ -23,7 +23,7 @@
/datum/artifact_effect/gassleeping/DoEffectAura()
if(holder)
var/datum/gas_mixture/env = holder.loc.return_air()
- if(env && env.total_moles < max_pressure)
+ if(env && env.total_moles() < max_pressure)
var/datum/gas/sleeping_agent/trace_gas = new
env.trace_gases += trace_gas
trace_gas.moles = pick(0, 0, 0.1, rand())
diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm
index 27f4fc41602..cea70a189a6 100644
--- a/code/modules/supermatter/supermatter.dm
+++ b/code/modules/supermatter/supermatter.dm
@@ -155,84 +155,67 @@
if(grav_pulling)
supermatter_pull()
- //Ok, get the air from the turf
- var/datum/gas_mixture/removed = null
- var/datum/gas_mixture/env = null
+ //Ok, get the air from the turf
+ var/datum/gas_mixture/env = L.return_air()
- //ensure that damage doesn't increase too quickly due to super high temperatures resulting from no coolant, for example. We dont want the SM exploding before anyone can react.
- //We want the cap to scale linearly with power (and explosion_point). Let's aim for a cap of 5 at power = 900 (based on testing, equals roughly 5% per SM alert announcement).
- var/damage_inc_limit = (power/900)*(explosion_point/1000)*DAMAGE_RATE_LIMIT
+ //Remove gas from surrounding area
+ var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles())
- if(!istype(L, /turf/space))
- env = L.return_air()
- removed = env.remove(gasefficency * env.total_moles) //Remove gas from surrounding area
+ if(!removed || !removed.total_moles())
+ damage += max((power-1600)/10, 0)
+ power = min(power, 1600)
+ return 1
- if(!env || !removed || !removed.total_moles)
- damage += max(((power-(1600*POWER_FACTOR)))/10, 0) //exciting the supermatter in a vacuum means the internal energy is mostly locked inside.
- else if (grav_pulling) //If supermatter is detonating, remove all air from the zone
- env.remove(env.total_moles)
+ damage_archived = damage
+ damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 )
+ //Ok, 100% oxygen atmosphere = best reaction
+ //Maxes out at 100% oxygen pressure
+ oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0)
+
+ var/temp_factor = 50
+
+ if(oxygen > 0.8)
+ // with a perfect gas mix, make the power less based on heat
+ icon_state = "[base_icon_state]_glow"
else
- damage_archived = damage
+ // in normal mode, base the produced energy around the heat
+ temp_factor = 30
+ icon_state = base_icon_state
- damage = max( damage + min( ( (removed.temperature - 800) / 150 ), damage_inc_limit ) , 0 )
- //Ok, 100% oxygen atmosphere = best reaction
- //Maxes out at 100% oxygen pressure
- oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0)
+ power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload
- var/temp_factor = 100
+ //We've generated power, now let's transfer it to the collectors for storing/usage
+ transfer_energy()
- if(oxygen > 0.8)
- // with a perfect gas mix, make the power less based on heat
- icon_state = "[base_icon_state]_glow"
- else
- // in normal mode, base the produced energy around the heat
- temp_factor = 60
- icon_state = base_icon_state
+ var/device_energy = power * REACTION_POWER_MODIFIER
- power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload
+ //To figure out how much temperature to add each tick, consider that at one atmosphere's worth
+ //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature
+ //that the device energy is around 2140. At that stage, we don't want too much heat to be put out
+ //Since the core is effectively "cold"
- //We've generated power, now let's transfer it to the collectors for storing/usage
- transfer_energy()
+ //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock
+ //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall.
+ removed.temperature += (device_energy / THERMAL_RELEASE_MODIFIER)
- var/device_energy = power * REACTION_POWER_MODIFIER
+ removed.temperature = max(0, min(removed.temperature, 2500))
- //To figure out how much temperature to add each tick, consider that at one atmosphere's worth
- //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature
- //that the device energy is around 2140. At that stage, we don't want too much heat to be put out
- //Since the core is effectively "cold"
+ //Calculate how much gas to release
+ removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0)
- //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock
- //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall.
+ removed.oxygen += max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0)
- var/thermal_power = THERMAL_RELEASE_MODIFIER
-
- //This shouldn't be necessary. If the number of moles is low, then heat_capacity should be tiny.
- //if(removed.total_moles < 35) thermal_power += 750 //If you don't add coolant, you are going to have a bad time.
-
- removed.temperature += ((device_energy * thermal_power) / removed.heat_capacity())
-
- removed.temperature = max(0, min(removed.temperature, 10000))
-
- //Calculate how much gas to release
- removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0)
-
- removed.oxygen += max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0)
-
- removed.update_values()
-
- env.merge(removed)
+ env.merge(removed)
for(var/mob/living/carbon/human/l in view(src, min(7, round(power ** 0.25)))) // If they can see it without mesons on. Bad on them.
if(!istype(l.glasses, /obj/item/clothing/glasses/meson))
- l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) )
+ l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1, get_dist(l, src)) ) ) )
- //adjusted range so that a power of 600 (pretty high) results in 8 tiles, roughly the distance from the core to the engine monitoring room.
- //at power of 1210 this becomes 9 tiles --> increases very very slowly.
- for(var/mob/living/l in range(src, round((power / 0.146484375) ** 0.25)))
- var/rads = (power / 10) * sqrt( 1 / get_dist(l, src) )
- l.apply_effect(rads, IRRADIATE)
+ for(var/mob/living/l in range(src, round((power / 100) ** 0.25)))
+ var/rads = (power / 10) * sqrt( 1 / max(get_dist(l, src),1) )
+ l.apply_effect(irradiate=rads)
- power -= (power/500)**3 //energy losses due to radiation
+ power -= (power/500)**3
return 1
@@ -354,11 +337,4 @@
if(defer_powernet_rebuild != 2)
defer_powernet_rebuild = 0
- return
-
-
-/obj/machinery/power/supermatter/GotoAirflowDest(n) //Supermatter not pushed around by airflow
- return
-
-/obj/machinery/power/supermatter/RepelAirflowDest(n)
- return
+ return
\ No newline at end of file
diff --git a/code/setup.dm b/code/setup.dm
index 9816936ce2f..393de3e9723 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -10,6 +10,8 @@
#define CELL_VOLUME 2500 //liters in a cell
#define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC
+#define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005)
+
#define O2STANDARD 0.21
#define N2STANDARD 0.79
@@ -145,8 +147,6 @@
#define T20C 293.15 // 20degC
#define TCMB 2.7 // -270.3degC
-var/turf/space/Space_Tile = locate(/turf/space) // A space tile to reference when atmos wants to remove excess heat.
-
#define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) // Tank starts leaking
#define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) // Tank spills all contents into atmosphere
diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi
index da0f4c6271a..2b9071d25ef 100644
Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ
diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi
index cacaf71b156..cd7408a46d5 100644
Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index db617d819bf..b67e0602781 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/clothing/rings.dmi b/icons/obj/clothing/rings.dmi
new file mode 100644
index 00000000000..d378c34e04e
Binary files /dev/null and b/icons/obj/clothing/rings.dmi differ
diff --git a/icons/obj/doors/Doorfireglass.dmi b/icons/obj/doors/Doorfireglass.dmi
new file mode 100644
index 00000000000..f00e6c2857e
Binary files /dev/null and b/icons/obj/doors/Doorfireglass.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index 28d5636923e..1e9e95508ef 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi
index d60299f846d..df9b971041a 100644
Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index f526ddeee70..4636f769664 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index f43d9fe0fce..59e7f23f135 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -376,14 +376,14 @@
"ahl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/armoury)
"ahm" = (/turf/simulated/floor,/area/security/armoury)
"ahn" = (/obj/machinery/light{dir = 4},/obj/structure/rack,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/box/teargas,/obj/effect/decal/warning_stripes/red/hollow,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/armoury)
-"aho" = (/obj/machinery/door/firedoor/multi_tile,/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/security/securehallway)
-"ahp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/security/securehallway)
+"aho" = (/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/security/securehallway)
+"ahp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/security/securehallway)
"ahq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/securehallway)
"ahr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/securehallway)
"ahs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/securehallway)
"aht" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/securehallway)
-"ahu" = (/obj/machinery/door/firedoor/multi_tile,/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/securehallway)
-"ahv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/securehallway)
+"ahu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/securehallway)
+"ahv" = (/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/securehallway)
"ahw" = (/turf/simulated/floor,/area/shuttle/gamma/station)
"ahx" = (/turf/space,/area/shuttle/syndicate_elite/station)
"ahy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/security/interrogation)
@@ -569,9 +569,9 @@
"akW" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/floor/plating,/area/shuttle/siberia/station)
"akX" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/siberia/station)
"akY" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "labor_dock_north_airlock"; name = "exterior access button"; pixel_x = 3; pixel_y = -25; req_access_txt = "2"},/turf/space,/area)
-"akZ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range)
+"akZ" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range)
"ala" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/security/range)
-"alb" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range)
+"alb" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range)
"alc" = (/obj/structure/closet/secure_closet/brigdoc,/turf/simulated/floor{icon_state = "white"},/area/security/medbay)
"ald" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/security/medbay)
"ale" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/security/medbay)
@@ -654,7 +654,7 @@
"amD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle)
"amE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle)
"amF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/security/prisonershuttle)
-"amG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
+"amG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
"amH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
"amI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/security/brig)
"amJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/security/brig)
@@ -706,7 +706,7 @@
"anD" = (/turf/simulated/floor{icon_state = "red"},/area/security/prisonershuttle)
"anE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "red"},/area/security/prisonershuttle)
"anF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "red"},/area/security/prisonershuttle)
-"anG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "red"},/area/security/brig)
+"anG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "red"},/area/security/brig)
"anH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "red"},/area/security/brig)
"anI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/security/brig)
"anJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/security/brig)
@@ -740,7 +740,7 @@
"aol" = (/obj/machinery/mineral/labor_claim_console{machinedir = 1; pixel_x = 30; pixel_y = 0},/obj/machinery/mineral/input,/turf/simulated/shuttle/floor,/area/shuttle/siberia/station)
"aom" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/security/interrogationobs)
"aon" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/prisonershuttle)
-"aoo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Prisoner Processing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle)
+"aoo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prisoner Processing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle)
"aop" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/prisonershuttle)
"aoq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "BrigWest"; name = "Brig"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/prison/cell_block/B)
"aor" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "BrigWest"; name = "Brig"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/security/prison/cell_block/B)
@@ -1166,9 +1166,9 @@
"awv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "magistrate"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/magistrateoffice)
"aww" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Magistrate's Office"; req_access_txt = "74"},/turf/simulated/floor,/area/magistrateoffice)
"awx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Internal Affairs Office"; req_access_txt = "38"},/turf/simulated/floor,/area/lawoffice)
-"awy" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore)
-"awz" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/fore)
-"awA" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
+"awy" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/fore)
+"awz" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore)
+"awA" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"awB" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor,/area/maintenance/fsmaint)
"awC" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Security Maintenance APC"; pixel_y = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"awD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
@@ -1239,10 +1239,10 @@
"axQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/security/prison/cell_block/A)
"axR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"axS" = (/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Secure Door"; req_access_txt = "63"},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/brig)
-"axT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Mr. Chang's"},/turf/simulated/floor,/area/crew_quarters/mrchangs)
+"axT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mr. Chang's"},/turf/simulated/floor,/area/crew_quarters/mrchangs)
"axU" = (/turf/simulated/wall,/area/security/brig)
"axV" = (/obj/machinery/door/window/brigdoor{dir = 1; req_access_txt = "63"},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/brig)
-"axW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Barber Shop"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/civilian/barber)
+"axW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Barber Shop"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/civilian/barber)
"axX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/detectives_office)
"axY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"axZ" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck)
@@ -1274,7 +1274,7 @@
"ayz" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
"ayA" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
"ayB" = (/obj/machinery/vending/artvend,/turf/simulated/floor,/area/crew_quarters/locker)
-"ayC" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/vending/soda,/turf/simulated/floor,/area/crew_quarters/locker)
+"ayC" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/vending/cola,/turf/simulated/floor,/area/crew_quarters/locker)
"ayD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/structure/sign/chinese{pixel_y = 30},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
"ayE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
"ayF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/stool/bed/chair/sofa/right,/obj/machinery/camera{c_tag = "Boxing Ring"; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
@@ -1296,7 +1296,7 @@
"ayV" = (/turf/simulated/wall,/area/maintenance/fpmaint2)
"ayW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"ayX" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
-"ayY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
+"ayY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"ayZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aza" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"azb" = (/turf/simulated/wall,/area/maintenance/fpmaint)
@@ -1385,8 +1385,8 @@
"aAG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"aAH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/fitness)
"aAI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/crew_quarters/fitness)
-"aAJ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor,/area/crew_quarters/fitness)
-"aAK" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aAJ" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aAK" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness)
"aAL" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"aAM" = (/obj/machinery/camera{c_tag = "Holodeck"; network = list("SS13")},/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"aAN" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/crew_quarters/fitness)
@@ -1417,7 +1417,7 @@
"aBm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/clothing/gloves/boxing,/turf/simulated/floor,/area/crew_quarters/fitness)
"aBn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/fitness)
"aBo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
-"aBp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aBp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness)
"aBq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/crew_quarters/fitness)
"aBr" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/fitness)
"aBs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/crew_quarters/fitness)
@@ -1464,7 +1464,7 @@
"aCh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
"aCi" = (/obj/machinery/door/window/eastleft{name = "Boxing Ring"},/turf/simulated/floor/wood,/area/crew_quarters/fitness)
"aCj" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
-"aCk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aCk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness)
"aCl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"aCm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/fitness)
"aCn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool,/turf/simulated/floor{icon_state = "green"; dir = 4},/area/crew_quarters/fitness)
@@ -1478,7 +1478,7 @@
"aCv" = (/obj/item/stack/tile/wood,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"aCw" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
"aCx" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
-"aCy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aCy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aCz" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aCA" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_1_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_1_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aCB" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/camera/xray{c_tag = "Arrivals Escape Pods"},/turf/simulated/floor,/area/hallway/secondary/entry)
@@ -1508,7 +1508,7 @@
"aCZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aDa" = (/obj/machinery/computer/cryopod{density = 0; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Cryodorms"; c_tag_order = 999; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
"aDb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
-"aDc" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "Cryogenics"; name = "Cryodorms"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
+"aDc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "Cryogenics"; name = "Cryodorms"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep)
"aDd" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/simulated/floor,/area/crew_quarters/fitness)
"aDe" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
"aDf" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness)
@@ -1517,8 +1517,8 @@
"aDi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/crew_quarters/fitness)
-"aDl" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness)
-"aDm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aDl" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aDm" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDo" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/fitness)
"aDp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/brig)
@@ -1528,7 +1528,7 @@
"aDt" = (/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
"aDu" = (/obj/item/trash/liquidfood,/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
"aDv" = (/obj/structure/sink/kitchen{pixel_y = 25},/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
-"aDw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aDw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aDx" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"aDy" = (/turf/simulated/floor,/area/hallway/secondary/entry)
"aDz" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
@@ -1563,7 +1563,7 @@
"aEc" = (/obj/machinery/power/apc{dir = 1; name = "EVA APC"; pixel_x = 3; pixel_y = 23},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aEd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aEe" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva)
-"aEf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Softsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
+"aEf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Softsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aEg" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aEh" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
"aEi" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
@@ -1600,7 +1600,7 @@
"aEN" = (/obj/structure/table/woodentable,/obj/item/trash/plate,/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
"aEO" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/patron,/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims,/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"aEP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"aEQ" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aEQ" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aER" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aES" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry)
"aET" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry)
@@ -1670,10 +1670,10 @@
"aGf" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"aGg" = (/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"aGh" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry)
-"aGi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"aGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"aGk" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
-"aGl" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry)
+"aGi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aGk" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
+"aGl" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry)
"aGm" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2)
"aGn" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aGo" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
@@ -1695,7 +1695,7 @@
"aGE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aGF" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aGG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
-"aGH" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
+"aGH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aGI" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aGJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/fitness)
"aGK" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/mob/living/simple_animal/crab/Coffee,/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/fitness)
@@ -1803,14 +1803,14 @@
"aII" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/window/southleft{name = "Gateway Chamber"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/gateway)
"aIJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/gateway)
"aIK" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/gateway)
-"aIL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "External EVA Storage"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
+"aIL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "External EVA Storage"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aIM" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aIN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aIO" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
-"aIP" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Xeno Hardsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
+"aIP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Xeno Hardsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aIQ" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
-"aIR" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
-"aIS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
+"aIR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
+"aIS" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
"aIT" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aIU" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aIV" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
@@ -1886,11 +1886,11 @@
"aKn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aKo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/evaguide,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aKp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/weapon/tank/nitrogen,/obj/item/clothing/suit/space/eva/vox,/obj/item/clothing/mask/breath/vox,/obj/item/clothing/head/helmet/space/eva/vox,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva)
-"aKq" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
-"aKr" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
+"aKq" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
+"aKr" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aKs" = (/obj/machinery/camera{c_tag = "Dormitories South"; c_tag_order = 999; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
"aKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
-"aKu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
+"aKu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aKv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aKw" = (/obj/machinery/power/apc{dir = 4; name = "Dormitory Bathrooms APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aKx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/C)
@@ -2012,9 +2012,9 @@
"aMJ" = (/obj/structure/window/full/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
"aMK" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"aML" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry)
-"aMM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2)
-"aMN" = (/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/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/checkpoint2)
-"aMO" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Security Checkpoint"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2)
+"aMM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2)
+"aMN" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Security Checkpoint"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2)
+"aMO" = (/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/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/security/checkpoint2)
"aMP" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aMQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aMR" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
@@ -2032,15 +2032,15 @@
"aNd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway)
"aNe" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/gateway)
"aNf" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor,/area/gateway)
-"aNg" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Entertainer Suits"; req_access_txt = "0"; req_one_access_txt = "18;46"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
+"aNg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Entertainer Suits"; req_access_txt = "0"; req_one_access_txt = "18;46"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aNh" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
-"aNi" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
-"aNj" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/north)
-"aNk" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/north)
+"aNi" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/north)
+"aNj" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
+"aNk" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/north)
"aNl" = (/turf/simulated/wall/r_wall,/area/security/prison/cell_block/A)
"aNm" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
-"aNn" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
-"aNo" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
+"aNn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
+"aNo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
"aNp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aNq" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aNr" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
@@ -2088,7 +2088,7 @@
"aOh" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/escapepodbay)
"aOi" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station)
"aOj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/secondary/entry)
-"aOk" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry)
+"aOk" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry)
"aOl" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry)
"aOm" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry)
"aOn" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry)
@@ -2111,7 +2111,7 @@
"aOE" = (/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary)
"aOF" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Tool Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "bot"},/area/storage/primary)
"aOG" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor,/area/storage/primary)
-"aOH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/port)
+"aOH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/port)
"aOI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port)
"aOJ" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor,/area/gateway)
"aOK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/door_control{id = "stationawaygate"; name = "Gateway Shutters Access Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "62"},/turf/simulated/floor,/area/gateway)
@@ -2137,10 +2137,10 @@
"aPe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/wall/r_wall,/area/maintenance/fsmaint)
"aPf" = (/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/hallway/primary/central/ne)
"aPg" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central/ne)
-"aPh" = (/obj/machinery/vending/soda,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/toilet)
+"aPh" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aPi" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
"aPj" = (/turf/simulated/wall,/area/crew_quarters/bar)
-"aPk" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Bar Office"; req_access_txt = "25"},/turf/simulated/floor,/area/crew_quarters/bar)
+"aPk" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Bar Office"; req_access_txt = "25"},/turf/simulated/floor,/area/crew_quarters/bar)
"aPl" = (/turf/simulated/wall,/area/crew_quarters/mrchangs)
"aPm" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aPn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
@@ -2176,33 +2176,33 @@
"aPR" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/shuttle/arrival/station)
"aPS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aPT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry)
-"aPU" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/hallway/secondary/entry)
+"aPU" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/hallway/secondary/entry)
"aPV" = (/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/entry)
"aPW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/entry)
"aPX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/secondary/entry)
"aPY" = (/turf/simulated/wall,/area/hallway/primary/port)
"aPZ" = (/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},/turf/simulated/floor/plating,/area/storage/primary)
-"aQa" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary)
+"aQa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary)
"aQb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/storage/primary)
-"aQc" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/primary)
+"aQc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/primary)
"aQd" = (/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/disposalpipe/segment,/turf/simulated/floor/plating,/area/storage/primary)
"aQe" = (/turf/simulated/wall/r_wall,/area/hallway/primary/port)
-"aQf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/port)
-"aQg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port)
-"aQh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port)
-"aQi" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port)
-"aQj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port)
-"aQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port)
+"aQf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port)
+"aQg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/port)
+"aQh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port)
+"aQi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port)
+"aQj" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port)
+"aQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port)
"aQl" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
-"aQm" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Gateway Access"; req_access_txt = "62"},/turf/simulated/floor,/area/gateway)
-"aQn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway)
-"aQo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway)
+"aQm" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Gateway Access"; req_access_txt = "62"},/turf/simulated/floor,/area/gateway)
+"aQn" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway)
+"aQo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway)
"aQp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/civilian/barber)
"aQq" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central/nw)
"aQr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aQs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"aQt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/sign/securearea,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
-"aQu" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
+"aQu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aQv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"aQw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/sign/securearea,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"aQx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
@@ -2249,7 +2249,7 @@
"aRm" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/library)
"aRn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Chapel Crematorium"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aRo" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
-"aRp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Crematorium"; req_access_txt = "27"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
+"aRp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Crematorium"; req_access_txt = "27"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aRq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aRr" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aRs" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
@@ -2268,9 +2268,9 @@
"aRF" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aRG" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry)
"aRH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/entry)
-"aRI" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/light{dir = 1},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry)
+"aRI" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/light{dir = 1},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry)
"aRJ" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/port)
-"aRK" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port)
+"aRK" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port)
"aRL" = (/turf/simulated/floor,/area/hallway/primary/port)
"aRM" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/hallway/primary/port)
"aRN" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/port)
@@ -2278,7 +2278,7 @@
"aRP" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/hallway/primary/port)
"aRQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port)
"aRR" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/port)
-"aRS" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port)
+"aRS" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port)
"aRT" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port)
"aRU" = (/obj/machinery/camera{c_tag = "Port Hallway 2"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port)
"aRV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port)
@@ -2287,9 +2287,9 @@
"aRY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port)
"aRZ" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/port)
"aSa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port)
-"aSb" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port)
+"aSb" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port)
"aSc" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central/nw)
-"aSd" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central/nw)
+"aSd" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aSe" = (/turf/simulated/floor,/area/hallway/primary/central/nw)
"aSf" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aSg" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/nw)
@@ -2297,7 +2297,7 @@
"aSi" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall NW APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aSj" = (/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aSk" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/nw)
-"aSl" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
+"aSl" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aSm" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central/north)
"aSn" = (/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central/north)
"aSo" = (/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central/north)
@@ -2307,18 +2307,18 @@
"aSs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{desc = ""; icon_state = "L13"; name = "floor"},/area/hallway/primary/central/north)
"aSt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central/north)
"aSu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/central/north)
-"aSv" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/ne)
+"aSv" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne)
"aSw" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central/ne)
"aSx" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central/ne)
-"aSy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/wall,/area/crew_quarters/toilet)
+"aSy" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry)
"aSz" = (/obj/machinery/camera{c_tag = "Dormitories Toilets"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
-"aSA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/vending/soda,/turf/simulated/floor,/area/hallway/secondary/exit)
+"aSA" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"aSB" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/central/ne)
"aSC" = (/obj/machinery/power/apc{dir = 1; name = "Central Hall NE APC"; pixel_y = 26},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/ne)
"aSD" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/ne)
"aSE" = (/turf/simulated/floor,/area/hallway/primary/central/ne)
"aSF" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
-"aSG" = (/obj/machinery/vending/soda,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry)
+"aSG" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
"aSH" = (/obj/structure/disposalpipe/segment{dir = 4},/mob/living/carbon/monkey{tag = "icon-punpun1"; name = "Pun Pun"; icon_state = "punpun1"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aSI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aSJ" = (/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
@@ -2357,21 +2357,21 @@
"aTq" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aTr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aTs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"aTt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Escape Pod Bay"},/turf/simulated/floor,/area/escapepodbay)
-"aTu" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aTt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Escape Pod Bay"},/turf/simulated/floor,/area/escapepodbay)
+"aTu" = (/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aTv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aTw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aTx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aTy" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry)
-"aTz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aTz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aTA" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aTB" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/simulated/floor/carpet,/area/hallway/secondary/entry)
"aTC" = (/turf/simulated/floor/carpet,/area/hallway/secondary/entry)
"aTD" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aTE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/reinforced,/obj/item/stack/packageWrap,/obj/item/weapon/pen/blue{pixel_x = 0; pixel_y = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/book/manual/barman_recipes,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aTF" = (/turf/simulated/floor{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding."; dir = 4; icon_state = "plaque"; name = "Comemmorative Plaque"; nitrogen = 30; oxygen = 70; temperature = 80},/area/hallway/secondary/entry)
-"aTG" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/secondary/entry)
-"aTH" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CHW"; location = "Lockers"},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port)
+"aTG" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/secondary/entry)
+"aTH" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CHW"; location = "Lockers"},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port)
"aTI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/port)
"aTJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/port)
"aTK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port)
@@ -2380,7 +2380,7 @@
"aTN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
"aTO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/hallway/primary/port)
"aTP" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port)
-"aTQ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port)
+"aTQ" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port)
"aTR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port)
"aTS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
"aTT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor,/area/hallway/primary/port)
@@ -2391,7 +2391,7 @@
"aTY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port)
"aTZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aUa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/central/nw)
-"aUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/nw)
+"aUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/nw)
"aUc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central/north)
"aUd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L4"},/area/hallway/primary/central/north)
"aUe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central/north)
@@ -2401,7 +2401,7 @@
"aUi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{desc = ""; icon_state = "L14"},/area/hallway/primary/central/north)
"aUj" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "L16"},/area/hallway/primary/central/north)
"aUk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/north)
-"aUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/ne)
+"aUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne)
"aUm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne)
"aUn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/central/ne)
"aUo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/ne)
@@ -2424,11 +2424,11 @@
"aUF" = (/mob/living/simple_animal/cow{name = "Betsy"},/turf/simulated/floor/grass,/area/hydroponics)
"aUG" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hydroponics)
"aUH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/security/prison/cell_block/A)
-"aUI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
+"aUI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
"aUJ" = (/obj/machinery/bookbinder{pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/wood,/area/library)
"aUK" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
"aUL" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library)
-"aUM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel Office"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
+"aUM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Chapel Office"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"aUN" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aUO" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aUP" = (/obj/machinery/camera{c_tag = "Departure Lounge North"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -2444,13 +2444,13 @@
"aUZ" = (/obj/item/device/radio/beacon,/obj/machinery/camera{c_tag = "Arrivals South"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aVa" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aVb" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry)
-"aVc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"aVd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aVc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"aVd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aVe" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aVf" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/item/weapon/lighter{pixel_x = 4; pixel_y = 2},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aVg" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/hallway/secondary/entry)
"aVh" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry)
-"aVi" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port)
+"aVi" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port)
"aVj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port)
"aVk" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor,/area/hallway/primary/port)
"aVl" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port)
@@ -2460,28 +2460,28 @@
"aVp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
"aVq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port)
"aVr" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
-"aVs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port)
+"aVs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port)
"aVt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port)
"aVu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port)
"aVv" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Port Hallway"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port)
"aVw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port)
"aVx" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port)
"aVy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/port)
-"aVz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/port)
+"aVz" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/port)
"aVA" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw)
-"aVB" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw)
+"aVB" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aVC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aVD" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=QM"; location = "CHW"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aVE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aVF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aVG" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
-"aVH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
+"aVH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aVI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
"aVJ" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
"aVK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
"aVL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
"aVM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north)
-"aVN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
+"aVN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
"aVO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
"aVP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/ne)
"aVQ" = (/obj/machinery/slot_machine,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
@@ -2531,14 +2531,14 @@
"aWI" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair_beige"; dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aWJ" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry)
"aWK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/port)
-"aWL" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/crew_quarters/locker)
-"aWM" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker)
+"aWL" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/crew_quarters/locker)
+"aWM" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker)
"aWN" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port)
"aWO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2)
"aWP" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port)
"aWQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/primary/port)
"aWR" = (/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port)
-"aWS" = (/obj/machinery/vending/cola,/turf/simulated/floor,/area/crew_quarters/locker)
+"aWS" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"aWT" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port)
"aWU" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port)
"aWV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atm{pixel_x = 24},/turf/simulated/floor,/area/hallway/primary/port)
@@ -2565,11 +2565,11 @@
"aXq" = (/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aXr" = (/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aXs" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/structure/flora/kirbyplants,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"aXt" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
+"aXt" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
"aXu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"aXv" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"aXw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
-"aXx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
+"aXx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"aXy" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/hallway/primary/fore)
"aXz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/hallway/primary/fore)
"aXA" = (/obj/machinery/botany/editor,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
@@ -2605,7 +2605,7 @@
"aYe" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aYf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry)
"aYg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port)
-"aYh" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/secondary/entry)
+"aYh" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/secondary/entry)
"aYi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/entry)
"aYj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/entry)
"aYk" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/entry)
@@ -2635,7 +2635,7 @@
"aYI" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/storage/emergency2)
"aYJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2)
"aYK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/storage/tools)
-"aYL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/tools)
+"aYL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/tools)
"aYM" = (/turf/simulated/wall,/area/storage/tools)
"aYN" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/nw)
"aYO" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/hallway/primary/fore)
@@ -2687,7 +2687,7 @@
"aZI" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry)
"aZJ" = (/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/hallway/secondary/entry)
"aZK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry)
-"aZL" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/secondary/entry)
+"aZL" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/secondary/entry)
"aZM" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/secondary/entry)
"aZN" = (/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor,/area/hallway/secondary/entry)
"aZO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/hallway/secondary/entry)
@@ -2759,10 +2759,10 @@
"bbc" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"bbd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"bbe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
-"bbf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bbg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bbh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/secondary/entry)
-"bbi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/status_display{pixel_x = 32},/turf/simulated/floor,/area/hallway/secondary/entry)
+"bbf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bbg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bbh" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/secondary/entry)
+"bbi" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/status_display{pixel_x = 32},/turf/simulated/floor,/area/hallway/secondary/entry)
"bbj" = (/turf/simulated/wall,/area/security/vacantoffice)
"bbk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall,/area/mimeoffice)
"bbl" = (/turf/simulated/floor/plating,/area/maintenance/port)
@@ -2841,7 +2841,7 @@
"bcG" = (/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"bcH" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"bcI" = (/turf/space,/area/shuttle/transport1/station)
-"bcJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bcJ" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastleft{name = "Hydroponics Desk"; req_access_txt = "35"},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Kitchen Desk"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/hydroponics)
"bcK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking North"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/hallway/secondary/entry)
"bcL" = (/turf/simulated/floor/wood,/area/security/vacantoffice)
"bcM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/wood,/area/security/vacantoffice)
@@ -2864,9 +2864,9 @@
"bdd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/tools)
"bde" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/tools)
"bdf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central/nw)
-"bdg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/hallway/primary/central/nw)
-"bdh" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/quartermaster/office)
-"bdi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
+"bdg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bdh" = (/obj/machinery/vending/cart,/turf/simulated/floor,/area/quartermaster/office)
+"bdi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/hallway/primary/central/nw)
"bdj" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/bridge)
"bdk" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/bridge)
"bdl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/bridge)
@@ -2878,8 +2878,8 @@
"bdr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "browncorner"; tag = "icon-browncorner (EAST)"},/area/bridge)
"bds" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/bridge)
"bdt" = (/turf/simulated/floor{tag = "icon-browncorner (EAST)"; icon_state = "browncorner"; dir = 4},/area/bridge)
-"bdu" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
-"bdv" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central/ne)
+"bdu" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
+"bdv" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
"bdw" = (/obj/machinery/camera{c_tag = "Bridge East Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/ne)
"bdx" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/ne)
"bdy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/bar)
@@ -2915,8 +2915,8 @@
"bec" = (/obj/item/flag/nt,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
"bed" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"bee" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
-"bef" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"beg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bef" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central/ne)
+"beg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"beh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bei" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/security/vacantoffice)
"bej" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp,/turf/simulated/floor/wood,/area/security/vacantoffice)
@@ -2950,9 +2950,9 @@
"beL" = (/obj/structure/closet/toolcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/storage/tools)
"beM" = (/obj/structure/closet/toolcloset,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/storage/tools)
"beN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools)
-"beO" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/nw)
+"beO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"beP" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/bridge)
-"beQ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
+"beQ" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/nw)
"beR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge)
"beS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/bridge)
"beT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/bridge)
@@ -2970,9 +2970,9 @@
"bff" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/bridge)
"bfg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/bridge)
"bfh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/bridge)
-"bfi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
+"bfi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
"bfj" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/bridge)
-"bfk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/ne)
+"bfk" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
"bfl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne)
"bfm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne)
"bfn" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central/ne)
@@ -2996,10 +2996,10 @@
"bfF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/library)
"bfG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/library)
"bfH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/carpet,/area/library)
-"bfI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main)
+"bfI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/ne)
"bfJ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/chapel/main)
"bfK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/carpet,/area/chapel/main)
-"bfL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main)
+"bfL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main)
"bfM" = (/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"bfN" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
"bfO" = (/obj/structure/bush,/turf/simulated/floor/grass,/area/hallway/secondary/exit)
@@ -3035,29 +3035,29 @@
"bgs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"bgt" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/nw)
"bgu" = (/obj/machinery/camera{c_tag = "Bridge West Entrance"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/nw)
-"bgv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/hallway/primary/central/nw)
+"bgv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main)
"bgw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/crew_quarters/fitness)
-"bgx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
+"bgx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/hallway/primary/central/nw)
"bgy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"bgz" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"bgA" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge)
-"bgB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
+"bgB" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
"bgC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/crew_quarters/mrchangs)
"bgD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall,/area/crew_quarters/mrchangs)
"bgE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/crew_quarters/mrchangs)
"bgF" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge)
"bgG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"bgH" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
-"bgI" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
+"bgI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"bgJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/civilian/barber)
-"bgK" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/hallway/primary/central/ne)
+"bgK" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge)
"bgL" = (/obj/machinery/power/apc{dir = 2; name = "Central Hall APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/ne)
"bgM" = (/obj/machinery/light,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/ne)
"bgN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
"bgO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bgP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bgQ" = (/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar)
-"bgR" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
+"bgR" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/hallway/primary/central/ne)
"bgS" = (/obj/machinery/door_control{id = "kitchenbar"; name = "Kitchen Bar Shutters Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "28"},/obj/machinery/door_control{id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bgT" = (/obj/machinery/power/apc{dir = 2; name = "Kitchen APC"; pixel_y = -24},/obj/structure/cable,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bgU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
@@ -3066,7 +3066,7 @@
"bgX" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 5"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bgY" = (/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bgZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor,/area/hallway/primary/starboard/east)
-"bha" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Library"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/library)
+"bha" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bhb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/library)
"bhc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/carpet,/area/library)
"bhd" = (/obj/machinery/camera{c_tag = "Departure Lounge East"; dir = 8; network = list("SS13")},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; id_tag = "escape_dock"; pixel_x = 30},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -3074,8 +3074,8 @@
"bhf" = (/turf/simulated/floor{desc = "\"This is a plaque in honour of those who died in the great space lube airlock incident.\" Scratched in beneath that is a crude image of a clown and a spaceman. The spaceman is slipping. The clown is laughing."; dir = 4; icon_state = "plaque"; name = "Memorial Plaque"; nitrogen = 30; oxygen = 70; temperature = 80},/area/hallway/secondary/exit)
"bhg" = (/obj/structure/bush,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit)
"bhh" = (/turf/space,/area/xenos_station/east)
-"bhi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bhj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bhi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/library)
+"bhj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bhk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"bhl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bhm" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice)
@@ -3087,7 +3087,7 @@
"bhs" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bht" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/syndicate_elite/mothership)
"bhu" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
-"bhv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/wardrobe/white,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
+"bhv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/dresser,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker)
"bhw" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker)
"bhx" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker)
"bhy" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/crew_quarters/locker)
@@ -3099,17 +3099,17 @@
"bhE" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office)
"bhF" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office)
"bhG" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office)
-"bhH" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/nw)
-"bhI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/nw)
-"bhJ" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/nw)
-"bhK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
+"bhH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bhI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/nw)
+"bhJ" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/nw)
+"bhK" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"bhL" = (/obj/machinery/porta_turret,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"bhM" = (/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
"bhN" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
"bhO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"bhP" = (/obj/machinery/camera/motion{c_tag = "AI Upload Chamber"; network = list("SS13")},/obj/machinery/light_switch{pixel_y = 27},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
"bhQ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
-"bhR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{id_tag = "captainofficedoor"; name = "Captain's Office"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"bhR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bhS" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bhT" = (/obj/machinery/media/jukebox/bar,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bhU" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/bar)
@@ -3120,8 +3120,8 @@
"bhZ" = (/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/obj/structure/flora/kirbyplants,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar)
"bia" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/vending/dinnerware,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen)
"bib" = (/obj/machinery/icemachine,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
-"bic" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
-"bid" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
+"bic" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "captainofficedoor"; name = "Captain's Office"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"bid" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
"bie" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/screwdriver,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/botanydisk,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
"bif" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics)
"big" = (/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics)
@@ -3191,18 +3191,18 @@
"bjs" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"bjt" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Captain's Office APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bju" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/ne)
-"bjv" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
-"bjw" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/ne)
+"bjv" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen)
+"bjw" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne)
"bjx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/wall,/area/civilian/barber)
-"bjy" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar)
+"bjy" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
"bjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/civilian/barber)
"bjA" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west)
"bjB" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west)
"bjC" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 2"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west)
"bjD" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west)
"bjE" = (/turf/simulated/wall,/area/crew_quarters/fitness)
-"bjF" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/window/westright{dir = 1; name = "Hydroponics Desk"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
-"bjG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
+"bjF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar)
+"bjG" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westright{dir = 1; name = "Hydroponics Desk"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
"bjH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bjI" = (/turf/simulated/wall/r_wall,/area/crew_quarters/fitness)
"bjJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
@@ -3253,9 +3253,9 @@
"bkC" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/east)
"bkD" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Dorm"; location = "HOP2"},/turf/simulated/floor,/area/hallway/primary/central/east)
"bkE" = (/turf/simulated/floor,/area/hallway/primary/central/east)
-"bkF" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/east)
+"bkF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
"bkG" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/starboard/west)
-"bkH" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west)
+"bkH" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/east)
"bkI" = (/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bkJ" = (/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bkK" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 1"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/starboard/west)
@@ -3281,7 +3281,7 @@
"ble" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"blf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 7"; dir = 2; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"blg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/east)
-"blh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/exit)
+"blh" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bli" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/secondary/exit)
"blj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit)
"blk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -3292,7 +3292,7 @@
"blp" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "escape_dock_south_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access_txt = "13"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "escape_dock_south_sensor"; pixel_x = -8; pixel_y = -30},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"blq" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"blr" = (/turf/space,/area/shuttle/specops/station)
-"bls" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bls" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/exit)
"blt" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry)
"blu" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry)
"blv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -3336,14 +3336,14 @@
"bmh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bmi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bmj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/west)
-"bmk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west)
+"bmk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bml" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bmm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bmn" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=HOP2"; location = "Stbd"},/turf/simulated/floor,/area/hallway/primary/starboard/east)
-"bmo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/secondary/exit)
+"bmo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bmp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bmq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit)
-"bmr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bmr" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/secondary/exit)
"bms" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"bmt" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry)
"bmu" = (/turf/simulated/wall,/area/maintenance/disposal)
@@ -3397,14 +3397,14 @@
"bnq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bnr" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 3"; dir = 1; network = list("SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bns" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/starboard/west)
-"bnt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west)
+"bnt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bnu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bnv" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bnw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 6"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bnx" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -29; pixel_y = -29},/turf/simulated/floor,/area/hallway/primary/starboard/east)
"bny" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard/east)
"bnz" = (/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard/east)
-"bnA" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/secondary/exit)
+"bnA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard/west)
"bnB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit)
"bnC" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit)
"bnD" = (/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit)
@@ -3444,7 +3444,7 @@
"bol" = (/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},/turf/simulated/floor/plating,/area/quartermaster/office)
"bom" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
"bon" = (/obj/machinery/power/apc{dir = 4; name = "Central Hall West APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west)
-"boo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/reagent_containers/food/drinks/stinkeye,/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"boo" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/secondary/exit)
"bop" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"boq" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bor" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/crew_quarters/sleep)
@@ -3455,11 +3455,11 @@
"bow" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"box" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"boy" = (/obj/structure/table/woodentable,/obj/item/weapon/pinpointer,/obj/item/weapon/disk/nuclear,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"boz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw)
-"boA" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/sw)
+"boz" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/sw)
+"boA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw)
"boB" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area)
"boC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/hallway/primary/fore)
-"boD" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception)
+"boD" = (/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception)
"boE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "0"; req_one_access_txt = "6,9"},/turf/simulated/floor,/area/medical/morgue)
"boF" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"boG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/hallway/primary/starboard/east)
@@ -3493,13 +3493,13 @@
"bpi" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office)
"bpj" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office)
"bpk" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office)
-"bpl" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office)
+"bpl" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office)
"bpm" = (/obj/machinery/camera{c_tag = "Central Hallway West"; dir = 8; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west)
"bpn" = (/obj/machinery/door/window/eastright{dir = 1; name = "Bridge Delivery"; req_access_txt = "19"},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room)
"bpo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/bridge/meeting_room)
"bpp" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bpq" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/slot_machine,/turf/simulated/floor/wood,/area/bridge/meeting_room)
-"bpr" = (/obj/machinery/vending/soda,/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"bpr" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/assembly/chargebay)
"bps" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bpt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bpu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/space,/area)
@@ -3541,16 +3541,16 @@
"bqe" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue)
"bqf" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor,/area/medical/morgue)
"bqg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
-"bqh" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/assembly/chargebay)
-"bqi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id = "mechbay"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay)
+"bqh" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id = "mechbay"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay)
+"bqi" = (/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/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
"bqj" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bqk" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics Requests Console"; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bql" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bqm" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area)
-"bqn" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
+"bqn" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
"bqo" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 10; icon_state = "purple"},/area/hallway/primary/starboard/east)
"bqp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/mimeoffice)
-"bqq" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab)
+"bqq" = (/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/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab)
"bqr" = (/obj/machinery/autolathe,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bqs" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/belt/utility,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bqt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/closet/hydrant{pixel_x = -33},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
@@ -3582,7 +3582,7 @@
"bqT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
"bqU" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west)
"bqV" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room)
-"bqW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
+"bqW" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab)
"bqX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/lattice,/turf/space,/area)
"bqY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/space,/area)
"bqZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
@@ -3604,7 +3604,7 @@
"brp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"brq" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"brr" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"brs" = (/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"brs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"brt" = (/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/reception)
"bru" = (/turf/simulated/floor/airless{icon_state = "white"},/area/medical/reception)
"brv" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception)
@@ -3640,8 +3640,8 @@
"brZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bsa" = (/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bsb" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
-"bsc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bsd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bsc" = (/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bsd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bse" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/entry)
"bsf" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/hallway/secondary/entry)
"bsg" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal)
@@ -3699,7 +3699,7 @@
"btg" = (/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
"bth" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/airless{icon_state = "white"},/area/medical/reception)
"bti" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception)
-"btj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Examination Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room)
+"btj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"btk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
"btl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
"btm" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed,/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
@@ -3714,7 +3714,7 @@
"btv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/bluegrid,/area/assembly/chargebay)
"btw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay)
"btx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay)
-"bty" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
+"bty" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Examination Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room)
"btz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"btA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"btB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
@@ -3729,7 +3729,7 @@
"btK" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick/random,/obj/structure/sign/poster{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"btL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"btM" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
-"btN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"btN" = (/obj/machinery/door/firedoor{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"btO" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry)
"btP" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry)
"btQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
@@ -3751,14 +3751,14 @@
"bug" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office)
"buh" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office)
"bui" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/quartermaster/office)
-"buj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
+"buj" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"buk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"bul" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor,/area/quartermaster/office)
"bum" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/quartermaster/office)
"bun" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/office)
"buo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/quartermaster/office)
"bup" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/office)
-"buq" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/office)
+"buq" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"bur" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west)
"bus" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/west)
"but" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/west)
@@ -3825,34 +3825,34 @@
"bvC" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"bvD" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
"bvE" = (/obj/machinery/disposal/deliveryChute{dir = 1; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bvF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bvG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bvF" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/office)
+"bvG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bvH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor/plating,/area/maintenance/disposal)
"bvI" = (/turf/space,/area/supply/station)
-"bvJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bvJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bvK" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/status_display/supply_display{pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
"bvL" = (/obj/structure/closet/emcloset,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
"bvM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/storage)
"bvN" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 27},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/storage)
"bvO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/quartermaster/storage)
"bvP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/storage)
-"bvQ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/storage)
+"bvQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bvR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office)
"bvS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/office)
"bvT" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/quartermaster/office)
"bvU" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/office)
-"bvV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/office)
-"bvW" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office)
+"bvV" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/storage)
+"bvW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/office)
"bvX" = (/turf/simulated/wall,/area/hallway/primary/central/sw)
-"bvY" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw)
-"bvZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bwa" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/sw)
+"bvY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office)
+"bvZ" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/hallway/primary/central/sw)
+"bwa" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw)
"bwb" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/floor/plating,/area/maintenance/maintcentral)
-"bwc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/turf/simulated/floor,/area/crew_quarters/heads)
+"bwc" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bwd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/lattice,/turf/space,/area)
"bwe" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
"bwf" = (/obj/machinery/light{dir = 4},/obj/machinery/hologram/holopad,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
-"bwg" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = 24},/obj/structure/closet/cabinet,/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
+"bwg" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = 24},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"bwh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"bwi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"bwj" = (/obj/machinery/door/airlock{name = "Private Restroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom)
@@ -3912,21 +3912,21 @@
"bxl" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/research/station)
"bxm" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = 30; pixel_y = -5; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area)
"bxn" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bxo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bxp" = (/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{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"bxq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bxo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/turf/simulated/floor,/area/crew_quarters/heads)
+"bxp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bxq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bxr" = (/obj/machinery/mass_driver{id = "trash"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal)
"bxs" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bxt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bxu" = (/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{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"bxv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bxt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
+"bxu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
+"bxv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bxw" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
"bxx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/storage)
"bxy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
"bxz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
"bxA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
"bxB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
-"bxC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
+"bxC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bxD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office)
"bxE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"bxF" = (/obj/structure/disposalpipe/segment{name = "Sorting Office"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/quartermaster/office)
@@ -3946,7 +3946,7 @@
"bxT" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/crew_quarters/heads)
"bxU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator)
"bxV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator)
-"bxW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
+"bxW" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage)
"bxX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/turf/simulated/floor/plating,/area/engine/gravitygenerator)
"bxY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/turf/simulated/floor/plating,/area/engine/gravitygenerator)
"bxZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/space,/area)
@@ -3998,9 +3998,9 @@
"byT" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"byU" = (/turf/space,/area/xenos_station/west)
"byV" = (/turf/space,/area/shuttle/administration/station)
-"byW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"byX" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"byY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"byW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
+"byX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"byY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"byZ" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad2"},/turf/simulated/floor,/area/quartermaster/storage)
"bza" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/storage)
"bzb" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage)
@@ -4009,12 +4009,12 @@
"bze" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor,/area/quartermaster/office)
"bzf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office)
"bzg" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
-"bzh" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access_txt = "50"},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office)
+"bzh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bzi" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office)
"bzj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor,/area/quartermaster/office)
"bzk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office)
"bzl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/hallway/primary/central/sw)
-"bzm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
+"bzm" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access_txt = "50"},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office)
"bzn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/central/sw)
"bzo" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/flasher{id = "hopflash"; pixel_y = 28},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Head of Personnel's Desk"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/heads)
"bzp" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads)
@@ -4081,7 +4081,7 @@
"bAy" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/space,/area/shuttle/research/station)
"bAz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research/station)
"bAA" = (/obj/machinery/computer/shuttle_control/research{req_access = null; req_access_txt = "65"},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
-"bAB" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bAB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
"bAC" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bAD" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage)
"bAE" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/quartermaster/storage)
@@ -4092,7 +4092,7 @@
"bAJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office)
"bAK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"bAL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
-"bAM" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
+"bAM" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bAN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw)
"bAO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bAP" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central/sw)
@@ -4125,7 +4125,7 @@
"bBq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -26; range = 6},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2)
"bBr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bBs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
-"bBt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bBt" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"bBu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/junction{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
"bBv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bBw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
@@ -4148,19 +4148,19 @@
"bBN" = (/obj/structure/table,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/item/device/mmi/posibrain,/obj/item/device/robotanalyzer,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/assembly/robotics)
"bBO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bBP" = (/obj/machinery/door_control{id = "robotics2"; name = "Robotics Lab Shutters Control"; pixel_x = 24; pixel_y = -24; req_access_txt = "29"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
-"bBQ" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "robotics2"; name = "Robotics Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics)
-"bBR" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"})
-"bBS" = (/obj/effect/landmark{name = "lightsout"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/research{name = "Research Division"})
-"bBT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"})
-"bBU" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab2"; name = "Research and Development Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
+"bBQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bBR" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"})
+"bBS" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "robotics2"; name = "Robotics Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics)
+"bBT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"})
+"bBU" = (/obj/effect/landmark{name = "lightsout"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/research{name = "Research Division"})
"bBV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
-"bBW" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
+"bBW" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab2"; name = "Research and Development Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bBX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bBY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"bBZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"bCa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"bCb" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_access_txt = "13;65"; tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
-"bCc" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bCc" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bCd" = (/turf/simulated/floor/plating,/area/quartermaster/storage)
"bCe" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage)
"bCf" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage)
@@ -4169,7 +4169,7 @@
"bCi" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor,/area/quartermaster/office)
"bCj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office)
"bCk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office)
-"bCl" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/quartermaster/office)
+"bCl" = (/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bCm" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central/sw)
"bCn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"bCo" = (/obj/structure/closet/secure_closet/hop,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/heads)
@@ -4205,7 +4205,7 @@
"bCS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"bCT" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bCU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
-"bCV" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2)
+"bCV" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/quartermaster/office)
"bCW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2)
"bCX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2)
"bCY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2)
@@ -4236,12 +4236,12 @@
"bDx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bDy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
"bDz" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"})
-"bDA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
+"bDA" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2)
"bDB" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"})
-"bDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
+"bDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
"bDD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
"bDE" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Research Shuttle Maintenance"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
-"bDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research_shuttle_dock)
+"bDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bDG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock)
"bDH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
"bDI" = (/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
@@ -4250,14 +4250,14 @@
"bDL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/research/station)
"bDM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "External Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"bDN" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/research/station)
-"bDO" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bDP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bDO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research_shuttle_dock)
+"bDP" = (/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/machinery/door/firedoor{dir = 2},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"})
"bDQ" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;31"; tag_door = "cargo_bay_door"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
"bDR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/machinery/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage)
"bDS" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp{pixel_y = 10},/obj/structure/disposalpipe/segment,/obj/item/device/eftpos,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"bDT" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"bDU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office)
-"bDV" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office)
+"bDV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bDW" = (/obj/machinery/door_control{id = "alienshutters"; name = "Alien Blast Shutter Control"; pixel_x = -26; pixel_y = -2; req_access_txt = "0"},/turf/simulated/floor/plating/airless,/area/xenos_station/start)
"bDX" = (/obj/structure/closet/secure_closet/hop2,/turf/simulated/floor,/area/crew_quarters/heads)
"bDY" = (/turf/simulated/floor,/area/crew_quarters/heads)
@@ -4267,7 +4267,7 @@
"bEc" = (/obj/machinery/message_server,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/server)
"bEd" = (/obj/machinery/power/apc{dir = 1; name = "Messaging Server APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/bluegrid,/area/server)
"bEe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{icon_state = "dark"},/area/server)
-"bEf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
+"bEf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bEg" = (/turf/simulated/wall/r_wall,/area/maintenance/abandonedbar)
"bEh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/space,/area)
"bEi" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/teleporter)
@@ -4276,7 +4276,7 @@
"bEl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/teleporter)
"bEm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/teleporter)
"bEn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/teleporter)
-"bEo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/teleporter)
+"bEo" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office)
"bEp" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/sw)
"bEq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR: EMERGENCY ENTRANCE'."; name = "KEEP CLEAR: EMERGENCY ENTRANCE"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bEr" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/backpack/medic,/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/item/weapon/storage/toolbox/emergency,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay2)
@@ -4292,7 +4292,7 @@
"bEB" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Cloning"; req_access_txt = "0"; req_one_access_txt = "5;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning)
"bEC" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{req_access_txt = "9"},/turf/simulated/floor{icon_state = "white"},/area/maintenance/asmaint)
"bED" = (/obj/machinery/door/poddoor{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main)
-"bEE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
+"bEE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator)
"bEF" = (/turf/simulated/wall/r_wall,/area/chapel/main)
"bEG" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bEH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -4301,12 +4301,12 @@
"bEK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bEL" = (/obj/machinery/camera{c_tag = "Research Hallway North"; dir = 1; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bEM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
-"bEN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
+"bEN" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/teleporter)
"bEO" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"bEP" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"})
"bEQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
"bER" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
-"bES" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/medical/research_shuttle_dock)
+"bES" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bET" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research_shuttle_dock)
"bEU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bEV" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
@@ -4333,7 +4333,7 @@
"bFq" = (/obj/machinery/computer/message_monitor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/server)
"bFr" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/server)
"bFs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/server)
-"bFt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/server)
+"bFt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bFu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engine/gravitygenerator)
"bFv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/gravitygenerator)
"bFw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/engine/gravitygenerator)
@@ -4350,7 +4350,7 @@
"bFH" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2)
"bFI" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bFJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
-"bFK" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bFK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/medical/research_shuttle_dock)
"bFL" = (/obj/machinery/camera{c_tag = "Medbay Emergency Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bFM" = (/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
"bFN" = (/obj/structure/table,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -27},/obj/machinery/light,/obj/item/weapon/gun/syringe,/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay3)
@@ -4373,7 +4373,7 @@
"bGe" = (/obj/structure/closet/wardrobe/genetics_white,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics)
"bGf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/medical/genetics)
"bGg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/wall,/area/crew_quarters/toilet)
-"bGh" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"})
+"bGh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bGi" = (/obj/machinery/camera{c_tag = "Research Hallway West"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bGj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bGk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -4395,7 +4395,7 @@
"bGA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "research_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bGB" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bGC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
-"bGD" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bGD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bGE" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bGF" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage)
"bGG" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage)
@@ -4414,7 +4414,7 @@
"bGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/maintenance/fsmaint2)
"bGU" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 4; network = list("SS13")},/obj/machinery/atm{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw)
"bGV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/sw)
-"bGW" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
+"bGW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bGX" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads)
"bGY" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/crew_quarters/heads)
"bGZ" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads)
@@ -4436,7 +4436,7 @@
"bHp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay2)
"bHq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"bHr" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 11},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
-"bHs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bHs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/server)
"bHt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2)
"bHu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bHv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2)
@@ -4459,7 +4459,7 @@
"bHM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whitepurple (SOUTHEAST)"; icon_state = "whitepurple"; dir = 6},/area/medical/genetics)
"bHN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/chapel/office)
"bHO" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"})
-"bHP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"})
+"bHP" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bHQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bHR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bHS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -4481,19 +4481,19 @@
"bIi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
"bIj" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Research Shuttle Dock APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"})
"bIk" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"})
-"bIl" = (/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/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"})
+"bIl" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bIm" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "research_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bIn" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_access_txt = "13;65"; tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"})
-"bIo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIr" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bIv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bIo" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"})
+"bIp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
+"bIq" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bIr" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
+"bIs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bIt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
+"bIu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"})
+"bIv" = (/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/machinery/door/firedoor{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"})
"bIw" = (/turf/simulated/wall,/area/quartermaster/miningdock)
-"bIx" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock)
+"bIx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bIy" = (/turf/simulated/wall,/area/quartermaster/qm)
"bIz" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/quartermaster/qm)
"bIA" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor,/area/quartermaster/qm)
@@ -4501,19 +4501,19 @@
"bIC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm)
"bID" = (/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/sw)
"bIE" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads)
-"bIF" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/gravitygenerator)
+"bIF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bIG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central/sw)
"bIH" = (/obj/machinery/camera{c_tag = "Central Hallway South-East"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bII" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
-"bIJ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
+"bII" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bIJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bIK" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bIL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
-"bIM" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bIM" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bIN" = (/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bIO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bIP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bIQ" = (/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
-"bIR" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bIR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bIS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bIT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2)
"bIU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo)
@@ -4530,8 +4530,8 @@
"bJf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bJg" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bJh" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Research Outpost","RD"); pixel_x = 0; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
-"bJi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
-"bJj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage)
+"bJi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
+"bJj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bJk" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bJl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bJm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -4559,9 +4559,9 @@
"bJI" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bJJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall SW APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bJK" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bJL" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/sw)
+"bJL" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock)
"bJM" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bJN" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south)
+"bJN" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/gravitygenerator)
"bJO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south)
"bJP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south)
"bJQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall South APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south)
@@ -4577,7 +4577,7 @@
"bKa" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south)
"bKb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/south)
"bKc" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/hallway/primary/central/south)
-"bKd" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/south)
+"bKd" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bKe" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bKf" = (/obj/machinery/atm{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bKg" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/sw)
@@ -4591,12 +4591,12 @@
"bKo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Acute Treatment 1"; req_access_txt = "5"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bKp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 9},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
-"bKr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bKr" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bKs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 10},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"bKt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"bKu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"bKv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
-"bKw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bKw" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bKx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2)
"bKy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bKz" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2)
@@ -4612,9 +4612,9 @@
"bKJ" = (/turf/simulated/wall/r_wall,/area/toxins/server)
"bKK" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
"bKL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
-"bKM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
-"bKN" = (/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/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/server)
-"bKO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bKM" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bKN" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bKO" = (/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/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/server)
"bKP" = (/obj/machinery/camera{c_tag = "Research Server Room"; dir = 2; network = list("Research","SS13"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bKQ" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bKR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/area_atmos,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
@@ -4660,7 +4660,7 @@
"bLF" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/obj/machinery/light{dir = 8},/obj/structure/stool/bed,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper)
"bLG" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bLH" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
-"bLI" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
+"bLI" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bLJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bLK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"bLL" = (/turf/simulated/wall,/area/library)
@@ -4684,9 +4684,9 @@
"bMd" = (/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
"bMe" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
"bMf" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
-"bMg" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Server Exterior Door"; req_access = null; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Server Interior Door"; req_access = null; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
-"bMh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
-"bMi" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bMg" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bMh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
+"bMi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bMj" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bMk" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bMl" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
@@ -4718,9 +4718,9 @@
"bML" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bMM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bMN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bMO" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South-West"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
+"bMO" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage)
"bMP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bMQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south)
+"bMQ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/sw)
"bMR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south)
"bMS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor,/area/hallway/primary/central/south)
"bMT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/south)
@@ -4730,9 +4730,9 @@
"bMX" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south)
"bMY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central/south)
"bMZ" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 22},/turf/simulated/floor,/area/hallway/primary/central/south)
-"bNa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/south)
+"bNa" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south)
"bNb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central/sw)
-"bNc" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/sw)
+"bNc" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/south)
"bNd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw)
"bNe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/central/sw)
"bNf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw)
@@ -4758,8 +4758,8 @@
"bNz" = (/obj/machinery/computer/scan_consolenew,/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-whitepurple (EAST)"; icon_state = "whitepurple"; dir = 4},/area/medical/genetics)
"bNA" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
"bNB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 140; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server)
-"bNC" = (/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/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/server)
-"bND" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bNC" = (/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/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/server)
+"bND" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bNE" = (/obj/machinery/computer/rdservercontrol,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bNF" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bNG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/toxins/storage)
@@ -4778,9 +4778,9 @@
"bNT" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bNU" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bNV" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_shuttle"; pixel_x = 25; pixel_y = -8; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_door = "mining_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
-"bNW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
-"bNX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
-"bNY" = (/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{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bNW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bNX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bNY" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bNZ" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock)
"bOa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/quartermaster/miningdock)
"bOb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/miningdock)
@@ -4799,15 +4799,15 @@
"bOo" = (/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,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "representative"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/ntrep)
"bOp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/command{name = "NT Representative's Office"; req_access_txt = "73"},/turf/simulated/floor/wood,/area/ntrep)
"bOq" = (/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,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "representative"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/blueshield)
-"bOr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/south)
+"bOr" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Server Exterior Door"; req_access = null; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Server Interior Door"; req_access = null; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bOs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/crew_quarters/kitchen)
"bOt" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/janitor)
"bOu" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint)
-"bOv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{dir = 2; id = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor,/area/medical/paramedic)
-"bOw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor,/area/medical/paramedic)
+"bOv" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South-West"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw)
+"bOw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south)
"bOx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/fsmaint2)
-"bOy" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
-"bOz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
+"bOy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/south)
+"bOz" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/sw)
"bOA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/library)
"bOB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"bOC" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
@@ -4833,8 +4833,8 @@
"bOW" = (/mob/living/simple_animal/mouse/white,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bOX" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bOY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/starboard/east)
-"bOZ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
-"bPa" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
+"bOZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bPa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bPb" = (/obj/machinery/atmospherics/pipe/simple/insulated,/obj/machinery/camera{c_tag = "Research Toxins Mixing North"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bPc" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bPd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/library)
@@ -4844,7 +4844,7 @@
"bPh" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central/ne)
"bPi" = (/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bPj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
-"bPk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bPk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bPl" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/miningdock)
"bPm" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_dock_airlock"; pixel_x = 25; pixel_y = -5; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_airpump = "mining_dock_pump"; tag_chamber_sensor = "mining_dock_sensor"; tag_exterior_door = "mining_dock_outer"; tag_interior_door = "mining_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_dock_sensor"; pixel_x = 25; pixel_y = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/obj/item/weapon/ore/iron,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock)
"bPn" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/wall,/area/quartermaster/miningdock)
@@ -4885,7 +4885,7 @@
"bPW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "66"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/paramedic)
"bPX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/effect/landmark/start{name = "Paramedic"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
"bPY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
-"bPZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
+"bPZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/south)
"bQa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper)
"bQb" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bQc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
@@ -4953,9 +4953,9 @@
"bRm" = (/obj/machinery/photocopier,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/wood,/area/blueshield)
"bRn" = (/turf/simulated/floor/carpet,/area/ntrep)
"bRo" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/wood,/area/blueshield)
-"bRp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
-"bRq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft)
-"bRr" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
+"bRp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 2; id = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor,/area/medical/paramedic)
+"bRq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor,/area/medical/paramedic)
+"bRr" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bRs" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/janitor)
"bRt" = (/obj/structure/stool,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/start{name = "Janitor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/janitor)
"bRu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/janitor)
@@ -4968,7 +4968,7 @@
"bRB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/paramedic)
"bRC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
"bRD" = (/obj/structure/closet/secure_closet/paramedic,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
-"bRE" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute 2 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
+"bRE" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bRF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"bRG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bRH" = (/obj/machinery/camera{c_tag = "Medbay Port Corridor"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/disposal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
@@ -5001,7 +5001,7 @@
"bSi" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"; req_access_txt = "0"},/turf/simulated/floor/plating/airless,/area/toxins/test_area)
"bSj" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating/airless,/area/toxins/test_area)
"bSk" = (/obj/machinery/camera{c_tag = "Research Toxins Test Chamber North"; network = list("Toxins","Research","SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/airless,/area/toxins/test_area)
-"bSl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bSl" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bSm" = (/obj/item/weapon/ore/silver,/obj/item/weapon/ore/silver,/obj/structure/closet/crate,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock)
"bSn" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock)
"bSo" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall,/area/quartermaster/miningdock)
@@ -5079,7 +5079,7 @@
"bTI" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bTJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/shuttle/mining/station)
"bTK" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
-"bTL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bTL" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bTM" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock)
"bTN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/apmaint)
"bTO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/apmaint)
@@ -5097,9 +5097,9 @@
"bUa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bUb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/hydroponics)
"bUc" = (/turf/simulated/wall,/area/medical/sleeper)
-"bUd" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scansep"; name = "Scanning Room Separation Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
-"bUe" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
-"bUf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"bUd" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
+"bUe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bUf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic)
"bUg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/hydroponics)
"bUh" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plating,/area/hydroponics)
"bUi" = (/obj/machinery/light,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo)
@@ -5122,18 +5122,18 @@
"bUz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/carpet,/area/medical/psych)
"bUA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/carpet,/area/medical/psych)
"bUB" = (/obj/machinery/camera{c_tag = "Medbay Psych Office"; dir = 8; network = list("SS13")},/obj/machinery/power/apc{dir = 4; name = "Psychiatrist APC"; pixel_x = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/medical/psych)
-"bUC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci)
+"bUC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft)
"bUD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci)
"bUE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci)
"bUF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/toxins/telesci)
"bUG" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bUH" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bUI" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
-"bUJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing)
+"bUJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
"bUK" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing)
"bUL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing)
"bUM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing)
-"bUN" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Mixing Room"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/toxins/mixing)
+"bUN" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"bUO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/toxins/mixing)
"bUP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bUQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/window/eastright{name = "Toxins Mixing Room"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/toxins/mixing)
@@ -5158,9 +5158,9 @@
"bVj" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/space,/area/shuttle/mining/station)
"bVk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/mining/station)
"bVl" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area)
-"bVm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
-"bVn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
-"bVo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bVm" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute 2 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
+"bVn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
+"bVo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bVp" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/apmaint)
"bVq" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/apmaint)
"bVr" = (/obj/machinery/power/apc{dir = 2; name = "Cargo Maintenance APC"; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/apmaint)
@@ -5199,8 +5199,8 @@
"bVY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne)
"bVZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/cmo)
"bWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/library)
-"bWb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
-"bWc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
+"bWb" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scansep"; name = "Scanning Room Separation Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
+"bWc" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"bWd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/escapepodbay)
"bWe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/escapepodbay)
"bWf" = (/obj/structure/flora/kirbyplants,/obj/machinery/door_control{id = "psychoffice"; name = "Privacy Shutters Control"; pixel_x = -25; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/medical/psych)
@@ -5236,7 +5236,7 @@
"bWJ" = (/obj/machinery/atmospherics/valve,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bWK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bWL" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
-"bWM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "7"},/turf/simulated/floor,/area/toxins/mixing)
+"bWM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"bWN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/toxins/mixing)
"bWO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/toxins/mixing)
"bWP" = (/obj/machinery/doppler_array{dir = 4},/turf/simulated/floor,/area/toxins/mixing)
@@ -5269,7 +5269,7 @@
"bXq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor,/area/medical/sleeper)
"bXr" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/medical/sleeper)
"bXs" = (/turf/simulated/floor{dir = 4; icon_state = "blue"},/area/medical/sleeper)
-"bXt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper)
+"bXt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci)
"bXu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
"bXv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
"bXw" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/photocopier,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
@@ -5298,7 +5298,7 @@
"bXT" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
"bXU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
"bXV" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
-"bXW" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage)
+"bXW" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing)
"bXX" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bXY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bXZ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
@@ -5344,7 +5344,7 @@
"bYN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/sleeper)
"bYO" = (/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor,/area/medical/sleeper)
"bYP" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/medical/sleeper)
-"bYQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper)
+"bYQ" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Mixing Room"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/toxins/mixing)
"bYR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2)
"bYS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bYT" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
@@ -5358,7 +5358,7 @@
"bZb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bZc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bZd" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
-"bZe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bZe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bZf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bZg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bZh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
@@ -5373,7 +5373,7 @@
"bZq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
"bZr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
"bZs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/telesci)
-"bZt" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
+"bZt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bZu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bZv" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bZw" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
@@ -5396,7 +5396,7 @@
"bZN" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
"bZO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft)
"bZP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
-"bZQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westright{name = "Engineering Monitoring Station"; req_access = null; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "bot"},/area/engine/controlroom)
+"bZQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bZR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Monitoring Station"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "delivery"},/area/engine/controlroom)
"bZS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/engine/controlroom)
"bZT" = (/turf/simulated/floor,/area/engine/controlroom)
@@ -5413,7 +5413,7 @@
"cae" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"caf" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"cag" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
-"cah" = (/obj/machinery/light,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"cah" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"cai" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"caj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
"cak" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
@@ -5427,8 +5427,8 @@
"cas" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
"cat" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
"cau" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
-"cav" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Telescience"; req_access_txt = "47"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
-"caw" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
+"cav" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
+"caw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "7"},/turf/simulated/floor,/area/toxins/mixing)
"cax" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"cay" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"caz" = (/obj/machinery/camera{c_tag = "Research Hallway South"; dir = 1; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -5460,9 +5460,9 @@
"caZ" = (/obj/structure/table,/obj/item/device/analyzer,/obj/item/device/healthanalyzer,/turf/simulated/floor/plating,/area/storage/tech)
"cba" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/tech)
"cbb" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/storage/tech)
-"cbc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
-"cbd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft)
-"cbe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft)
+"cbc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper)
+"cbd" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage)
+"cbe" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper)
"cbf" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/engine/controlroom)
"cbg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/dispenser{pixel_x = -1},/turf/simulated/floor,/area/engine/controlroom)
"cbh" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/controlroom)
@@ -5520,7 +5520,7 @@
"cch" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
"cci" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft)
"ccj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft)
-"cck" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Desk"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/controlroom)
+"cck" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"ccl" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/controlroom)
"ccm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/controlroom)
"ccn" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/controlroom)
@@ -5639,12 +5639,12 @@
"cew" = (/obj/machinery/light/small{dir = 8},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/apmaint)
"cex" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/crew{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/card{pixel_x = 2; pixel_y = -2},/obj/item/weapon/circuitboard/communications{pixel_x = 5; pixel_y = -5},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/storage/tech)
"cey" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/tech)
-"cez" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access_txt = "19;23"},/turf/simulated/floor/plating,/area/storage/tech)
+"cez" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"ceA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/storage/tech)
"ceB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/storage/tech)
"ceC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/storage/tech)
"ceD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark{name = "blobstart"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plating,/area/storage/tech)
-"ceE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access_txt = "23"},/turf/simulated/floor/plating,/area/storage/tech)
+"ceE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westright{name = "Engineering Monitoring Station"; req_access = null; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "bot"},/area/engine/controlroom)
"ceF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
"ceG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft)
"ceH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft)
@@ -5681,9 +5681,9 @@
"cfm" = (/obj/structure/rack{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cfn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
"cfo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/chapel/main)
-"cfp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2; name = "hazard door south"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cfq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2; name = "hazard door south"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cfr" = (/obj/machinery/door/firedoor/border_only{dir = 2; name = "hazard door south"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cfp" = (/obj/machinery/light,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
+"cfq" = (/obj/machinery/door/firedoor{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Telescience"; req_access_txt = "47"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci)
+"cfr" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"cfs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central/nw)
"cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/primary/central/ne)
"cfu" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/hydroponics)
@@ -5708,7 +5708,7 @@
"cfN" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/stationalert{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/thermomachine,/obj/item/weapon/circuitboard/smes{pixel_x = 4},/turf/simulated/floor/plating,/area/storage/tech)
"cfO" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/storage/tech)
"cfP" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/secondary/construction{name = "\improper Engineering Training"})
-"cfQ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/controlroom)
+"cfQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft)
"cfR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/controlroom)
"cfS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/controlroom)
"cfT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/controlroom)
@@ -5738,7 +5738,7 @@
"cgr" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"cgs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cgt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central/nw)
-"cgu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
+"cgu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
"cgv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/wall/r_wall,/area/toxins/misc_lab)
"cgw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/wall/r_wall,/area/toxins/misc_lab)
"cgx" = (/turf/simulated/wall,/area/toxins/misc_lab)
@@ -5765,7 +5765,7 @@
"cgS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"cgT" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/apmaint)
"cgU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/apmaint)
-"cgV" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastleft{name = "Hydroponics Desk"; req_access_txt = "35"},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Kitchen Desk"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/hydroponics)
+"cgV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft)
"cgW" = (/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{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/bridge)
"cgX" = (/turf/simulated/wall/r_wall,/area/hallway/primary/aft)
"cgY" = (/turf/simulated/wall/r_wall,/area/engine/controlroom)
@@ -5840,7 +5840,7 @@
"cip" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor,/area/engine/controlroom)
"ciq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor,/area/engine/controlroom)
"cir" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor,/area/engine/controlroom)
-"cis" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/construction)
+"cis" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Desk"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/controlroom)
"cit" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/construction)
"ciu" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/construction)
"civ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/construction)
@@ -5910,7 +5910,7 @@
"cjH" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Test Lab South"; dir = 8; network = list("Research","SS13")},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/misc_lab)
"cjI" = (/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"cjJ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
-"cjK" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
+"cjK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cjL" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cjM" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/toxins/xenobiology)
"cjN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/toxins/xenobiology)
@@ -5951,7 +5951,7 @@
"ckw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/aft)
"ckx" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/aft)
"cky" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/construction)
-"ckz" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9; level = 1},/turf/simulated/floor,/area/engine/controlroom)
+"ckz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access_txt = "19;23"},/turf/simulated/floor/plating,/area/storage/tech)
"ckA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/construction)
"ckB" = (/turf/simulated/wall/r_wall,/area/maintenance/incinerator)
"ckC" = (/obj/machinery/iv_drip,/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
@@ -5968,7 +5968,7 @@
"ckN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"ckO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"ckP" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "testchamber_access_control"; name = "Test Chamber Access Console"; pixel_x = -26; pixel_y = 6; req_access_txt = "47"; tag_exterior_door = "testchamber_airlock_exterior"; tag_interior_door = "testchamber_airlock_interior"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/misc_lab)
-"ckQ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
+"ckQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access_txt = "23"},/turf/simulated/floor/plating,/area/storage/tech)
"ckR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor West"; network = list("SS13")},/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"ckS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/misc_lab)
"ckT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/misc_lab)
@@ -5990,7 +5990,7 @@
"clj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/mechanic_workshop)
"clk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
"cll" = (/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
-"clm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Mechanic Workshop"; req_access_txt = "70"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
+"clm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 2; name = "hazard door south"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
"cln" = (/turf/simulated/floor,/area/hallway/primary/aft)
"clo" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft)
"clp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/hallway/primary/aft)
@@ -6047,7 +6047,7 @@
"cmo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
"cmp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/mechanic_workshop)
"cmq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Mechanic"},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
-"cmr" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Mechanic's Desk"; req_access = null; req_access_txt = "70"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
+"cmr" = (/obj/machinery/door/firedoor{dir = 2; name = "hazard door south"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
"cms" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/engine/mechanic_workshop)
"cmt" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/mechanic_workshop)
"cmu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
@@ -6089,7 +6089,7 @@
"cne" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/chapel/main)
"cnf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/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_txt = "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"},/turf/simulated/floor/plating,/area/solar/starboard)
"cng" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft)
-"cnh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{icon_state = "door_locked"; locked = 1; name = "Assembly Line Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/assembly/assembly_line)
+"cnh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 2; name = "hazard door south"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
"cni" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Assembly Line Delivery"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/assembly_line)
"cnj" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/storage/tech)
"cnk" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft)
@@ -6098,7 +6098,7 @@
"cnn" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor,/area/hallway/primary/aft)
"cno" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/aft)
"cnp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/hallway/primary/aft)
-"cnq" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "32"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room)
+"cnq" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/controlroom)
"cnr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room)
"cns" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room)
"cnt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/nations{name = "Atmosia"},/turf/simulated/floor,/area/engine/break_room)
@@ -6130,7 +6130,7 @@
"cnT" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cnU" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
"cnV" = (/obj/structure/closet/firecloset,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/toxins/misc_lab)
-"cnW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Test Lab"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/misc_lab)
+"cnW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cnX" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area)
"cnY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/solar/starboard)
"cnZ" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area)
@@ -6181,7 +6181,7 @@
"coS" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
"coT" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"coU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
-"coV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -28; pixel_y = 8; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
+"coV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator)
"coW" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/starboard)
"coX" = (/turf/space,/area/xenos_station/southwest)
"coY" = (/turf/simulated/wall,/area/maintenance/incinerator)
@@ -6194,7 +6194,7 @@
"cpf" = (/obj/item/mounted/frame/apc_frame,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/assembly_line)
"cpg" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line)
"cph" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line)
-"cpi" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{icon_state = "door_locked"; locked = 1; name = "Assembly Line (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line)
+"cpi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/construction)
"cpj" = (/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cpk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft)
"cpl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/aft)
@@ -6204,7 +6204,7 @@
"cpp" = (/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/break_room)
"cpq" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor,/area/engine/break_room)
"cpr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/break_room)
-"cps" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/atmos/control)
+"cps" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Test Lab"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/misc_lab)
"cpt" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor,/area/atmos/control)
"cpu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{level = 2},/turf/simulated/floor,/area/atmos/control)
"cpv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; level = 2},/turf/simulated/floor,/area/atmos/control)
@@ -6380,12 +6380,12 @@
"csJ" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line)
"csK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft)
"csL" = (/obj/structure/sign/securearea,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
-"csM" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage)
+"csM" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9; level = 1},/turf/simulated/floor,/area/engine/controlroom)
"csN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
"csO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
"csP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
"csQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
-"csR" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage)
+"csR" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"csS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
"csT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/computer/atmos_alert,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/atmos)
"csU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/atmos)
@@ -6487,7 +6487,7 @@
"cuM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cuN" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cuO" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes{charge = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar)
-"cuP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator)
+"cuP" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Mechanic Workshop"; req_access_txt = "70"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
"cuQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cuR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
"cuS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft)
@@ -6574,7 +6574,7 @@
"cwv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/atmos)
"cww" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/atmos)
"cwx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor,/area/atmos)
-"cwy" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_atmos{name = "Distribution Loop"; req_access_txt = "24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/atmos/distribution)
+"cwy" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Mechanic's Desk"; req_access = null; req_access_txt = "70"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop)
"cwz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor,/area/atmos/distribution)
"cwA" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/atmos/distribution)
"cwB" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9; tag = "icon-intact-y (NORTHWEST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/atmos/distribution)
@@ -6725,7 +6725,7 @@
"czq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/hardsuitstorage)
"czr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/hardsuitstorage)
"czs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/hardsuitstorage)
-"czt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "11"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/hardsuitstorage)
+"czt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{icon_state = "door_locked"; locked = 1; name = "Assembly Line Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/assembly/assembly_line)
"czu" = (/obj/machinery/camera{c_tag = "Engineering Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"czv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"czw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
@@ -6783,15 +6783,15 @@
"cAw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"cAx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"cAy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
-"cAz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/maintenance/engi_shuttle)
+"cAz" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "32"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room)
"cAA" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engine/engineering)
"cAB" = (/turf/simulated/wall/r_wall,/area/engine/mechanic_workshop)
"cAC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office)
-"cAD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office)
+"cAD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_research{name = "Firing Range"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
"cAE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"cAF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"cAG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area)
-"cAH" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room)
+"cAH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -28; pixel_y = 8; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cAI" = (/turf/simulated/wall/r_wall{desc = "A specially coated wall that resists temperatures for Science"; max_temperature = 1e+009; name = "Coated Reinforced Wall"},/area/engine/mechanic_workshop)
"cAJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/engineering)
"cAK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/engineering)
@@ -6845,7 +6845,7 @@
"cBG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cBI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engineering)
-"cBJ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering)
+"cBJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{icon_state = "door_locked"; locked = 1; name = "Assembly Line (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line)
"cBK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/engineering)
"cBL" = (/obj/machinery/camera{c_tag = "Engineering East"; network = list("SS13")},/obj/machinery/computer/security/telescreen{desc = "Used for watching the singularity chamber."; dir = 8; layer = 4; name = "Singularity Engine Telescreen"; network = list("Singularity"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor,/area/engine/engineering)
"cBM" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/engine/engineering)
@@ -6854,7 +6854,7 @@
"cBP" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering)
"cBQ" = (/obj/machinery/power/smes{charge = 1e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering)
"cBR" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/engine,/area/engine/mechanic_workshop)
-"cBS" = (/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/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
+"cBS" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/atmos/control)
"cBT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/atmos)
"cBU" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor,/area/atmos)
"cBV" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 8; name = "Port to Filter"},/turf/simulated/floor,/area/atmos)
@@ -6878,7 +6878,7 @@
"cCn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab)
"cCo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/virology/lab)
"cCp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab)
-"cCq" = (/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/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab)
+"cCq" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage)
"cCr" = (/obj/machinery/clonepod{biomass = 150},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"cCs" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"cCt" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/solar/starboard)
@@ -6892,11 +6892,11 @@
"cCB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/engineering)
"cCC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engine/engineering)
"cCD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engine/engineering)
-"cCE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering)
+"cCE" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage)
"cCF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engineering)
"cCG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor,/area/engine/engineering)
"cCH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor,/area/engine/engineering)
-"cCI" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering)
+"cCI" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_atmos{name = "Distribution Loop"; req_access_txt = "24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/atmos/distribution)
"cCJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cCK" = (/obj/machinery/power/smes{charge = 1e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering)
"cCL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/engine/controlroom)
@@ -6947,7 +6947,7 @@
"cDE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/wall/r_wall,/area/engine/controlroom)
"cDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/engine/break_room)
"cDG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/engine/break_room)
-"cDH" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plating,/area/engine/engineering)
+"cDH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "11"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/hardsuitstorage)
"cDI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/atmos/control)
"cDJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/atmos/control)
"cDK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/atmos/control)
@@ -6983,7 +6983,7 @@
"cEo" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"cEp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"cEq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
-"cEr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
+"cEr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/maintenance/engi_shuttle)
"cEs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cEt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cEu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/engineering)
@@ -7022,13 +7022,13 @@
"cFb" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure)
"cFc" = (/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
"cFd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure)
-"cFe" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
+"cFe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office)
"cFf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cFg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/engine/engineering)
"cFh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cFi" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cFj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
-"cFk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering)
+"cFk" = (/obj/machinery/door/firedoor{layer = 2.6; name = "\improper Firelock South"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room)
"cFl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering)
"cFm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cFn" = (/obj/structure/particle_accelerator/end_cap,/turf/simulated/floor/plating,/area/engine/engineering)
@@ -7296,7 +7296,7 @@
"cKp" = (/obj/item/weapon/screwdriver,/obj/structure/lattice,/turf/space,/area)
"cKq" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; state = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity East"; dir = 8; network = list("Singularity","SS13")},/turf/simulated/floor/plating/airless,/area/engine/engineering)
"cKr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/hallway/primary/aft)
-"cKs" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "MiniSat Access"; req_access_txt = "75"},/turf/simulated/floor,/area/engine/engineering)
+"cKs" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering)
"cKt" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/engine/engineering)
"cKu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engine/engineering)
"cKv" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; initialize_directions = 10; level = 2},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution)
@@ -7343,12 +7343,12 @@
"cLk" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/aisat/entrance)
"cLl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
"cLm" = (/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
-"cLn" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Teleporter Room"; req_access_txt = "17;75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
+"cLn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering)
"cLo" = (/obj/machinery/bluespace_beacon,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
"cLp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/aisat/entrance)
"cLq" = (/obj/machinery/light,/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-brown (EAST)"; icon_state = "brown"; dir = 4},/area/aisat/entrance)
"cLr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
-"cLs" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{dir = 8; id = "teledoor"; name = "AI Satellite Teleport Access"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
+"cLs" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering)
"cLt" = (/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "17;75"},/obj/effect/decal/warning_stripes/east,/obj/machinery/camera{c_tag = "Mini Satellite Teleporter"; dir = 1; network = list("SS13","MiniSat")},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
"cLu" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/aisat/entrance)
"cLv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/aisat/entrance)
@@ -7378,20 +7378,20 @@
"cLT" = (/turf/space,/area/syndicate_station/south)
"cLU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area)
"cLV" = (/obj/structure/window/reinforced,/turf/space,/area)
-"cLW" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
-"cLX" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
+"cLW" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plating,/area/engine/engineering)
+"cLX" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"cLY" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area)
"cLZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat)
"cMa" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat)
"cMb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/aisat)
-"cMc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
+"cMc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/secure)
"cMd" = (/obj/machinery/light{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"cMe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"cMf" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"cMg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"cMh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light_switch{pixel_y = 27},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"cMi" = (/obj/machinery/light{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
-"cMj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
+"cMj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering)
"cMk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/aisat)
"cMl" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat)
"cMm" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/window/eastright{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat)
@@ -7418,7 +7418,7 @@
"cMH" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/machinery/porta_turret{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"cMI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/bot/cleanbot{on = 0},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/turret_protected/aisat_interior)
"cMJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light/small{dir = 8},/obj/machinery/camera/motion{c_tag = "Mini Satellite Exterior North-East"; dir = 4; network = list("SS13","MiniSat")},/turf/simulated/floor/plating,/area/aisat)
-"cMK" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai)
+"cMK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "MiniSat Access"; req_access_txt = "75"},/turf/simulated/floor,/area/engine/engineering)
"cML" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai)
"cMM" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai)
"cMN" = (/obj/machinery/camera{c_tag = "Mini Satellite AI Chamber North"; dir = 2; network = list("SS13","MiniSat")},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/turret_protected/ai)
@@ -7470,13 +7470,13 @@
"cNH" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor,/area/aisat/maintenance)
"cNI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/aisat/maintenance)
"cNJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/aisat)
-"cNK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance)
+"cNK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Teleporter Room"; req_access_txt = "17;75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
"cNL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor,/area/aisat/maintenance)
"cNM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor,/area/aisat/maintenance)
"cNN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/aisat/maintenance)
"cNO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor,/area/aisat/maintenance)
"cNP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/aisat/maintenance)
-"cNQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance)
+"cNQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 8; id = "teledoor"; name = "AI Satellite Teleport Access"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance)
"cNR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/aisat)
"cNS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/aisat)
"cNT" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/motion{c_tag = "Mini Satellite Maintenance"; dir = 4; network = list("SS13","MiniSat")},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/aisat/maintenance)
@@ -8252,7 +8252,7 @@
"dcJ" = (/obj/structure/table/woodentable,/obj/item/pizzabox,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"dcK" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"dcL" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership)
-"dcM" = (/obj/structure/closet/cabinet,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership)
+"dcM" = (/obj/structure/dresser,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership)
"dcN" = (/obj/structure/table/woodentable,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership)
"dcO" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"dcP" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
@@ -8322,7 +8322,7 @@
"deb" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; tag = "icon-gravsnow_corner (WEST)"},/area/syndicate_mothership)
"dec" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership)
"ded" = (/obj/machinery/recharge_station/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
-"dee" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
+"dee" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"def" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"deg" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"deh" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
@@ -8355,7 +8355,7 @@
"deI" = (/obj/machinery/telecomms/allinone,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"deJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"deK" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
-"deL" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgicaldrill,/obj/item/weapon/scalpel,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
+"deL" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgicaldrill,/obj/item/weapon/scalpel,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/storage/box/beakers,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"deM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_station/start)
"deN" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"deO" = (/obj/machinery/teleport/hub/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
@@ -9271,8 +9271,8 @@
"dwo" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2)
"dwp" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1)
"dwq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
-"dwr" = (/obj/machinery/vending/soda,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness)
-"dws" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/vending/soda,/turf/simulated/floor/wood,/area/bridge/meeting_room)
+"dwr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
+"dws" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"dwt" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/bridge/meeting_room)
"dwu" = (/obj/item/trash/cheesie,/turf/space,/area)
"dwv" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/derelict/ship)
@@ -9669,7 +9669,7 @@
"dDW" = (/obj/structure/lattice,/turf/space,/area/AIsattele)
"dDX" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele)
"dDY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/traitor/empty)
-"dDZ" = (/obj/machinery/vending/soda,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
+"dDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"dEa" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele)
"dEb" = (/turf/simulated/wall,/area/constructionsite/maintenance)
"dEc" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/maintenance)
@@ -9954,7 +9954,7 @@
"dJv" = (/turf/simulated/wall,/area/constructionsite/atmospherics)
"dJw" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics)
"dJx" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "d_air_in"; name = "Mixed Air Supply Control"; output_tag = "d_air_out"; pressure_setting = 2000; sensors = list("d_air_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics)
-"dJy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/constructionsite/atmospherics)
+"dJy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior)
"dJz" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "d_air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/constructionsite/atmospherics)
"dJA" = (/obj/machinery/light/small{dir = 1},/obj/machinery/air_sensor{frequency = 1443; id_tag = "d_air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/constructionsite/atmospherics)
"dJB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics)
@@ -10029,9 +10029,9 @@
"dKS" = (/obj/machinery/light/small,/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dKT" = (/obj/structure/transit_tube{icon_state = "W-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dKU" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/mineral,/area/mine/unexplored)
-"dKV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/space,/area/research_outpost/hallway)
-"dKW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
-"dKX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dKV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai)
+"dKW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance)
+"dKX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance)
"dKY" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/space,/area)
"dKZ" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/structure/lattice,/turf/space,/area)
"dLa" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1)
@@ -10039,10 +10039,10 @@
"dLc" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1)
"dLd" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/unexplored)
"dLe" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
-"dLf" = (/obj/structure/transit_tube,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/hallway)
+"dLf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/constructionsite/atmospherics)
"dLg" = (/obj/structure/transit_tube/station,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/hallway)
"dLh" = (/obj/structure/transit_tube,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway)
-"dLi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/transit_tube,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dLi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dLj" = (/obj/structure/transit_tube{icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area)
"dLk" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area)
"dLl" = (/obj/structure/transit_tube{icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area)
@@ -10081,14 +10081,14 @@
"dLS" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/minihoe,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weedkiller/triclopyr,/obj/item/weapon/reagent_containers/glass/fertilizer/ez,/turf/simulated/floor/plating,/area/research_outpost/maintstore1)
"dLT" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/research_outpost/maintstore1)
"dLU" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plating,/area/research_outpost/maintstore1)
-"dLV" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/maintstore1)
+"dLV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dLW" = (/turf/simulated/floor,/area/research_outpost/maintstore1)
"dLX" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/maintstore1)
"dLY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/camera{c_tag = "Research Outpost Auxiliary Storage"; dir = 8; network = list("Research Outpost")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/research_outpost/maintstore1)
"dLZ" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/research_outpost/hallway)
"dMa" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/carpet,/area/research_outpost/hallway)
-"dMb" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rminingdorm1"; name = "Dorm 1"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway)
-"dMc" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway)
+"dMb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/space,/area/research_outpost/hallway)
+"dMc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/transit_tube,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dMd" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/lattice,/turf/space,/area)
"dMe" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SE"},/turf/space,/area)
"dMf" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/structure/lattice,/turf/space,/area)
@@ -10104,16 +10104,16 @@
"dMp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/research_outpost/hallway)
"dMq" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway)
"dMr" = (/turf/simulated/wall/r_wall,/area/research_outpost/atmos)
-"dMs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
-"dMt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
-"dMu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
+"dMs" = (/obj/structure/transit_tube,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/hallway)
+"dMt" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/maintstore1)
+"dMu" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway)
"dMv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dMw" = (/obj/machinery/door/airlock/external,/turf/simulated/floor,/area/mine/abandoned)
"dMx" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "S-NE"},/turf/space,/area)
"dMy" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/turf/simulated/floor{icon_state = "dark"},/area/research_outpost/spectro)
"dMz" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
"dMA" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro)
-"dMB" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
+"dMB" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rminingdorm1"; name = "Dorm 1"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway)
"dMC" = (/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
"dMD" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
"dME" = (/obj/structure/table,/obj/machinery/light{dir = 1},/obj/machinery/reagentgrinder,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
@@ -10134,7 +10134,7 @@
"dMT" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/machinery/camera{c_tag = "Research Outpost Atmospherics"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dMU" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/research_outpost/atmos)
"dMV" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/atmos)
-"dMW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
+"dMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dMX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dMY" = (/turf/simulated/floor,/area/mine/abandoned)
"dMZ" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor{icon_state = "dark"},/area/research_outpost/spectro)
@@ -10151,7 +10151,7 @@
"dNk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/research_outpost/hallway)
"dNl" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway)
"dNm" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway)
-"dNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway)
+"dNn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dNo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dNp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dNq" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 5; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
@@ -10171,7 +10171,7 @@
"dNE" = (/obj/machinery/light/small{dir = 4},/obj/machinery/power/apc{dir = 4; name = "Sample Preparation APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
"dNF" = (/turf/simulated/wall/r_wall,/area/research_outpost/anomaly)
"dNG" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/research_outpost/anomaly)
-"dNH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/anomaly)
+"dNH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dNI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dNJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dNK" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/obj/structure/sign/nosmoking_1{pixel_x = -32},/turf/simulated/floor/plating,/area/research_outpost/atmos)
@@ -10190,21 +10190,21 @@
"dNX" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Sample Preparation"; dir = 1; network = list("Research Outpost")},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 3; pixel_x = 2; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample)
"dNY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample)
"dNZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample)
-"dOa" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dOa" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access_txt = "65"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
"dOb" = (/obj/machinery/power/apc{dir = 1; name = "Anomalous Materials APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly)
"dOc" = (/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dOd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dOe" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dOf" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dOg" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly)
-"dOh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
-"dOi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
+"dOh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
+"dOi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway)
"dOj" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOk" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOm" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos)
-"dOn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
-"dOo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
+"dOn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/anomaly)
+"dOo" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dOp" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area)
"dOq" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
"dOr" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
@@ -10215,9 +10215,9 @@
"dOw" = (/turf/simulated/mineral/random,/area/mine/explored)
"dOx" = (/turf/space,/area/mine/explored)
"dOy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/hallway)
-"dOz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
+"dOz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/firedoor{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dOA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/sample)
-"dOB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
+"dOB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dOC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/research_outpost/sample)
"dOD" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dOE" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
@@ -10227,7 +10227,7 @@
"dOI" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/structure/plasticflaps,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly)
"dOJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway)
"dOK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway)
-"dOL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/atmos)
+"dOL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOM" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dON" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOO" = (/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos)
@@ -10248,7 +10248,7 @@
"dPd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/alarm{dir = 2; pixel_y = 25},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dPe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dPf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway)
-"dPg" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway)
+"dPg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dPh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway)
"dPi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/sign/chemistry{desc = "A warning sign which reads 'SAMPLE PREPARATION'"; name = "\improper SAMPLE PREPARATION"; pixel_y = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway)
"dPj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly)
@@ -10261,7 +10261,7 @@
"dPq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway)
"dPr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway)
"dPs" = (/turf/simulated/wall/r_wall,/area/research_outpost/power)
-"dPt" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor,/area/research_outpost/power)
+"dPt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
"dPu" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/wall/r_wall,/area/research_outpost/power)
"dPv" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power)
"dPw" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
@@ -10270,7 +10270,7 @@
"dPz" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned)
"dPA" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dPB" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dPC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dPC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
"dPD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dPE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dPF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
@@ -10280,17 +10280,17 @@
"dPJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dPK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dPL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
-"dPM" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway)
+"dPM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dPN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway)
"dPO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway)
-"dPP" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dPP" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway)
"dPQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly)
"dPR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dPS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dPT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dPU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly)
"dPV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly)
-"dPW" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dPW" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor,/area/research_outpost/power)
"dPX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/research_outpost/hallway)
"dPY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway)
"dPZ" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/power)
@@ -10302,7 +10302,7 @@
"dQf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
"dQg" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dQh" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dQi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dQi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dQj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dQk" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dQl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10322,7 +10322,7 @@
"dQz" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway)
"dQB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway)
-"dQC" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power)
+"dQC" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dQD" = (/turf/simulated/floor/plating,/area/research_outpost/power)
"dQE" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/research_outpost/power)
"dQF" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power)
@@ -10334,22 +10334,22 @@
"dQL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dQM" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dQN" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dQO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dQO" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway)
"dQP" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dQQ" = (/obj/structure/table,/obj/item/device/camera,/obj/item/weapon/stamp/granted,/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dQR" = (/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dQS" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway)
-"dQT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
-"dQU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway)
-"dQV" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
-"dQW" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dQT" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dQU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dQV" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power)
+"dQW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dQX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Engineering"; dir = 4; network = list("Research Outpost")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dQY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway)
"dQZ" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/power/apc{dir = 8; name = "Outpost Power APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/research_outpost/power)
"dRa" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power)
"dRb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power)
"dRc" = (/obj/machinery/portable_atmospherics/scrubber,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/research_outpost/power)
-"dRd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power)
+"dRd" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dRe" = (/obj/machinery/mass_driver{dir = 4; id = "Research Outpost"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dRf" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area)
"dRg" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
@@ -10381,7 +10381,7 @@
"dRG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power)
"dRH" = (/obj/machinery/conveyor_switch{id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power)
"dRI" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/research_outpost/power)
-"dRJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power)
+"dRJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway)
"dRK" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRL" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/exploration/methlab)
"dRM" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
@@ -10391,15 +10391,15 @@
"dRQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dRR" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dRS" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry)
-"dRT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
-"dRU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
-"dRV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dRT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
+"dRU" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
+"dRV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power)
"dRW" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_hatch"; locked = 1; name = "Research Outpost Dock Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/research_outpost/entry)
-"dRX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry)
-"dRY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dRX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power)
+"dRY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dRZ" = (/obj/structure/sign/science,/turf/simulated/wall,/area/research_outpost/entry)
-"dSa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry)
-"dSb" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry)
+"dSa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dSb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dSc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dSd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dSe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
@@ -10417,7 +10417,7 @@
"dSq" = (/obj/machinery/driver_button{id = "Research Outpost"; pixel_x = 6; pixel_y = -26},/obj/machinery/conveyor{dir = 4; id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power)
"dSr" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power)
"dSs" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power)
-"dSt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
+"dSt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dSu" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway)
"dSv" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway)
"dSw" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area)
@@ -10426,7 +10426,7 @@
"dSz" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dSA" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dSB" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dSC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dSC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry)
"dSD" = (/obj/machinery/computer/shuttle_control/research{req_access_txt = "65"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry)
"dSE" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/entry)
"dSF" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_y = 30; req_one_access_txt = "13;65"; tag_door = "research_outpost_hatch"},/turf/simulated/floor,/area/research_outpost/entry)
@@ -10453,16 +10453,16 @@
"dTa" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly)
"dTb" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
"dTc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly)
-"dTd" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
-"dTe" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
-"dTf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power)
+"dTd" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry)
+"dTe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry)
+"dTf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dTg" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway)
"dTh" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway)
"dTi" = (/obj/structure/transit_tube/station,/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = 32; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/hallway)
"dTj" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
"dTk" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
"dTl" = (/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
-"dTm" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/harvesting)
+"dTm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dTn" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
"dTo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dTp" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
@@ -10472,23 +10472,23 @@
"dTt" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned)
"dTu" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dTv" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dTw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dTw" = (/obj/machinery/door/firedoor{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dTx" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry)
"dTy" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry)
-"dTz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry)
+"dTz" = (/obj/machinery/door/firedoor{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dTA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor,/area/research_outpost/entry)
"dTB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry)
"dTC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/entry)
-"dTD" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med)
+"dTD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power)
"dTE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med)
"dTF" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med)
"dTG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
"dTH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
"dTI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
-"dTJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
+"dTJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/harvesting)
"dTK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
"dTL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
-"dTM" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
+"dTM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dTO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dTP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
@@ -10501,7 +10501,7 @@
"dTW" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway)
"dTX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/research_outpost/hallway)
"dTY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway)
-"dTZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 2; network = list("Research Outpost"); pixel_x = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
+"dTZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry)
"dUa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/research_outpost/hallway)
"dUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
"dUc" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Research Outpost Exotic Particles Airlock"; dir = 2; network = list("Research Outpost")},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/harvesting)
@@ -10522,7 +10522,7 @@
"dUr" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned)
"dUs" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned)
"dUt" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/abandoned)
-"dUu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dUu" = (/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med)
"dUv" = (/obj/structure/transit_tube{icon_state = "S-NW"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/entry)
"dUw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/research_outpost/entry)
"dUx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Research Outpost Shuttle Dock"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/research_outpost/entry)
@@ -10539,7 +10539,7 @@
"dUI" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage)
"dUJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
"dUK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
-"dUL" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
+"dUL" = (/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dUM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
"dUN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway)
"dUO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM ONE'"; name = "\improper ISOLATION ROOM ONE"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway)
@@ -10550,14 +10550,14 @@
"dUT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway)
"dUU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM THREE'"; name = "\improper ISOLATION ROOM THREE"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway)
"dUV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway)
-"dUW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
+"dUW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
"dUX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dUY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/biohazard{pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway)
"dUZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/research_outpost/hallway)
-"dVa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting)
+"dVa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 2; network = list("Research Outpost"); pixel_x = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dVb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/harvesting)
"dVc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting)
-"dVd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting)
+"dVd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dVe" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting)
"dVf" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
"dVg" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
@@ -10568,7 +10568,7 @@
"dVl" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned)
"dVm" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dVn" = (/turf/simulated/mineral,/area/mine/explored)
-"dVo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dVo" = (/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway)
"dVp" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/entry)
"dVq" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bluecorner"},/area/research_outpost/entry)
"dVr" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/research_outpost/entry)
@@ -10585,7 +10585,7 @@
"dVC" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage)
"dVD" = (/obj/machinery/conveyor{dir = 9; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/research_outpost/tempstorage)
"dVE" = (/turf/simulated/wall/r_wall,/area/research_outpost/maint)
-"dVF" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maint)
+"dVF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting)
"dVG" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso1)
"dVH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso1)
"dVI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation room one"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/iso1)
@@ -10595,10 +10595,10 @@
"dVM" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso3)
"dVN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso3)
"dVO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation Room Three"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/iso3)
-"dVP" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2)
+"dVP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dVQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2)
"dVR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage)
-"dVS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage)
+"dVS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting)
"dVT" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/harvesting)
"dVU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/research_outpost/harvesting)
"dVV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting)
@@ -10610,14 +10610,14 @@
"dWb" = (/turf/simulated/wall,/area/mine/unexplored)
"dWc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area)
"dWd" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall,/area/research_outpost/entry)
-"dWe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
-"dWf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dWe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dWf" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maint)
"dWg" = (/turf/simulated/wall,/area/research_outpost/entry)
"dWh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall,/area/research_outpost/entry)
-"dWi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"dWi" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage)
"dWj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/research_outpost/entry)
"dWk" = (/turf/simulated/wall,/area/research_outpost/tempstorage)
-"dWl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
+"dWl" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2)
"dWm" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating,/area/research_outpost/maint)
"dWn" = (/obj/machinery/conveyor{dir = 5; id = "anosample"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/maint)
"dWo" = (/obj/machinery/conveyor{dir = 4; id = "anosample"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maint)
@@ -10659,11 +10659,11 @@
"dWY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/research_outpost/gearstore)
"dWZ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/research_outpost/gearstore)
"dXa" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/gearstore)
-"dXb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/tempstorage)
+"dXb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dXc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Outpost Loading Area"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor,/area/research_outpost/tempstorage)
"dXd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/power/apc{dir = 1; name = "Temporary Storage APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/research_outpost/tempstorage)
"dXe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/research_outpost/tempstorage)
-"dXf" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint)
+"dXf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dXg" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint)
"dXh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint)
"dXi" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint)
@@ -10732,7 +10732,7 @@
"dYt" = (/obj/structure/closet/excavation,/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/gearstore)
"dYu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/research_outpost/gearstore)
"dYv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore)
-"dYw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "47"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/gearstore)
+"dYw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
"dYx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore)
"dYy" = (/turf/simulated/floor,/area/research_outpost/gearstore)
"dYz" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/research_outpost/tempstorage)
@@ -10825,8 +10825,8 @@
"eai" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored)
"eaj" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/explored)
"eak" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area)
-"eal" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore)
-"eam" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore)
+"eal" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/research_outpost/entry)
+"eam" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint)
"ean" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/research_outpost/gearstore)
"eao" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_inner"; locked = 1; name = "Research Outpost External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/research_outpost/gearstore)
"eap" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/explored)
@@ -11168,7 +11168,7 @@
"egN" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored)
"egO" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored)
"egP" = (/turf/simulated/wall,/area/mine/living_quarters)
-"egQ" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/mine/maintenance)
+"egQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/tempstorage)
"egR" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored)
"egS" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored)
"egT" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters)
@@ -11177,18 +11177,18 @@
"egW" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/explored)
"egX" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters)
"egY" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/mine/living_quarters)
-"egZ" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"egZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "47"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/gearstore)
"eha" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/mine/living_quarters)
"ehb" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored)
"ehc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/mine/living_quarters)
"ehd" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/unexplored)
"ehe" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters)
"ehf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Mining Outpost Bedrooms"; dir = 4; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/living_quarters)
-"ehg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ehg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore)
"ehh" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"ehi" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/west_outpost)
-"ehj" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
-"ehk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ehj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore)
+"ehk" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/mine/maintenance)
"ehl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored)
"ehm" = (/obj/machinery/camera{c_tag = "Mining Outpost Construction Area"; network = list("Mining Outpost")},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored)
"ehn" = (/obj/machinery/mining/drill,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored)
@@ -11197,23 +11197,23 @@
"ehq" = (/obj/machinery/camera{c_tag = "Mining Outpost West Outpost Mech Recharge Station"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/mech_bay_recharge_floor{icon_state = "recharge_floor_asteroid"},/area/mine/west_outpost)
"ehr" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/west_outpost)
"ehs" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters)
-"eht" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"eht" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
"ehu" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored)
"ehv" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored)
"ehw" = (/obj/machinery/mining/brace,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored)
"ehx" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
"ehy" = (/turf/simulated/wall,/area/mine/west_outpost)
-"ehz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"ehA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"ehB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"ehz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ehA" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"ehB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ehC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"ehD" = (/obj/machinery/vending/cigarette,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"ehE" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"ehF" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters)
"ehG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/mine/living_quarters)
-"ehH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ehI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ehJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ehH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ehI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"ehJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
"ehK" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored)
"ehL" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
"ehM" = (/obj/machinery/mining/brace,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
@@ -11235,14 +11235,14 @@
"eic" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"eid" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"eie" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
-"eif" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"eif" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
"eig" = (/obj/structure/ore_box,/turf/simulated/floor,/area/mine/living_quarters)
"eih" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/living_quarters)
"eii" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor,/area/mine/living_quarters)
"eij" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/eva)
"eik" = (/turf/simulated/wall,/area/mine/eva)
-"eil" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/eva)
-"eim" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/eva)
+"eil" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"eim" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ein" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor,/area/mine/west_outpost)
"eio" = (/turf/simulated/floor,/area/mine/west_outpost)
"eip" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor,/area/mine/west_outpost)
@@ -11265,7 +11265,7 @@
"eiG" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/belt/utility,/obj/machinery/light/small{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/eva)
"eiH" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"eiI" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/mine/west_outpost)
-"eiJ" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/west_outpost)
+"eiJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"eiK" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/west_outpost)
"eiL" = (/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},/turf/simulated/floor/plating,/area/mine/west_outpost)
"eiM" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "outpost_west_pump"; tag_exterior_door = "outpost_west_outer"; frequency = 1379; id_tag = "outpost_west_airlock"; tag_interior_door = "outpost_west_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "outpost_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "outpost_west_pump"},/turf/simulated/floor,/area/mine/west_outpost)
@@ -11284,8 +11284,8 @@
"eiZ" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/mine/living_quarters)
"eja" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters)
"ejb" = (/turf/simulated/wall,/area/mine/production)
-"ejc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
-"ejd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"ejc" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"ejd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/eva)
"eje" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/camera{c_tag = "Mining Outpost EVA"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/eva)
"ejf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/eva)
"ejg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/eva)
@@ -11298,11 +11298,11 @@
"ejn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/west_outpost)
"ejo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ejp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ejq" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters)
-"ejr" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters)
-"ejs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ejt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"eju" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"ejq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/eva)
+"ejr" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/west_outpost)
+"ejs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"ejt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"eju" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters)
"ejv" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/production)
"ejw" = (/turf/simulated/floor,/area/mine/production)
"ejx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/mine/production)
@@ -11326,25 +11326,25 @@
"ejP" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost)
"ejQ" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost)
"ejR" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost)
-"ejS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"ejS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters)
"ejT" = (/obj/structure/toilet{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters)
"ejU" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters)
-"ejV" = (/obj/machinery/door/airlock{name = "Toilet"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters)
+"ejV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ejW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters)
"ejX" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/mine/living_quarters)
"ejY" = (/obj/machinery/camera{c_tag = "Mining Outpost Crew Area Hallway"; network = list("Mining Outpost")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters)
"ejZ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/living_quarters)
"eka" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/living_quarters)
"ekb" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/mine/living_quarters)
-"ekc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ekc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ekd" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters)
"eke" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/production)
-"ekf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
-"ekg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"ekf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"ekg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost)
"ekh" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production)
"eki" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/mine/production)
"ekj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production)
-"ekk" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/eva)
+"ekk" = (/obj/machinery/door/airlock{name = "Toilet"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters)
"ekl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/eva)
"ekm" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor,/area/mine/eva)
"ekn" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/mine/eva)
@@ -11354,7 +11354,7 @@
"ekr" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
"eks" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/west_outpost)
"ekt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost)
-"eku" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"eku" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"ekv" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/mine/west_outpost)
"ekw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters)
"ekx" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters)
@@ -11364,10 +11364,10 @@
"ekB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters)
"ekC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters)
"ekD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/living_quarters)
-"ekE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters)
+"ekE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"ekF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters)
"ekG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production)
-"ekH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/production)
+"ekH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"ekI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production)
"ekJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/mine/production)
"ekK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/mine/production)
@@ -11393,15 +11393,15 @@
"ele" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light,/turf/simulated/floor,/area/mine/living_quarters)
"elf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters)
"elg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/mine/living_quarters)
-"elh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"eli" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"elj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"elh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/eva)
+"eli" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"elj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters)
"elk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/living_quarters)
"ell" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/production)
"elm" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light{dir = 4},/turf/space,/area/mine/production)
-"eln" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
-"elo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
-"elp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"eln" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/production)
+"elo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"elp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"elq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production)
"elr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production)
"els" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production)
@@ -11415,13 +11415,13 @@
"elA" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost)
"elB" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost)
"elC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"elD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
+"elD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"elE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters)
-"elF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"elF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"elG" = (/turf/simulated/wall/r_wall,/area/traitor/empty)
"elH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters)
-"elI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"elJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"elI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"elJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"elK" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production)
"elL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production)
"elM" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/wall,/area/mine/production)
@@ -11481,8 +11481,8 @@
"emO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored)
"emP" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
"emQ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
-"emR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
-"emS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"emR" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
+"emS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/living_quarters)
"emT" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production)
"emU" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production)
"emV" = (/obj/structure/closet/crate,/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/mine/production)
@@ -11504,7 +11504,7 @@
"enl" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Mining Outpost Production Room"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/production)
"enm" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
"enn" = (/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/mine/production)
-"eno" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
+"eno" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"enp" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production)
"enq" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/telepad_cargo,/turf/simulated/floor,/area/mine/production)
"enr" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/mineral/output,/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/mine/production)
@@ -11673,13 +11673,13 @@
"eqy" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access)
"eqz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access)
"eqA" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/turf/simulated/floor,/area/derelict/bridge/access)
-"eqB" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/derelict/bridge/access)
+"eqB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"eqC" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area)
"eqD" = (/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
"eqE" = (/obj/item/stack/cable_coil/cut,/turf/space,/area)
"eqF" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/bridge/access)
"eqG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/derelict/bridge/access)
-"eqH" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/derelict/bridge/access)
+"eqH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"eqI" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/derelict/bridge/access)
"eqJ" = (/turf/simulated/wall/r_wall,/area/derelict/singularity_engine)
"eqK" = (/obj/structure/window/reinforced,/turf/simulated/floor,/area/derelict/bridge/access)
@@ -12098,10 +12098,10 @@
"eyH" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
"eyI" = (/obj/machinery/door/airlock/command{name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload)
"eyJ" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
-"eyK" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
+"eyK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"eyL" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
"eyM" = (/obj/structure/window/basic{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
-"eyN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload)
+"eyN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production)
"eyO" = (/obj/structure/closet/emcloset,/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"eyP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
"eyQ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
@@ -12236,11 +12236,11 @@
"eBp" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/hand_labeler,/obj/machinery/alarm{hidden = 1; pixel_y = 22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBr" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
-"eBs" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eBs" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/derelict/bridge/access)
"eBt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1479; master_tag = "traitor_station_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
-"eBw" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/traitor/hall)
+"eBw" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/derelict/bridge/access)
"eBx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/traitor/kitchen)
"eBy" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor,/area/traitor/kitchen)
"eBz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 0; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/traitor/kitchen)
@@ -12251,17 +12251,17 @@
"eBE" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
-"eBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eBH" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
"eBI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eBK" = (/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-y"; tag = "icon-pipe-y (NORTH)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
-"eBL" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/traitor/hall)
+"eBL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload)
"eBM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-y (NORTH)"; icon_state = "pipe-y"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/traitor/kitchen)
"eBN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/traitor/kitchen)
"eBO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/traitor/kitchen)
"eBP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/traitor/kitchen)
"eBQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/traitor/kitchen)
-"eBR" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/border_only{layer = 2.6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/kitchen)
+"eBR" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/traitor/hall)
"eBS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty)
"eBT" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBU" = (/obj/machinery/chem_dispenser{broken_on_spawn = 1; energy = 0; recharged = 300},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
@@ -12269,11 +12269,11 @@
"eBW" = (/obj/structure/closet/secure_closet/chemical,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBX" = (/obj/machinery/power/apc{pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
"eBY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem)
-"eBZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/door/airlock/glass,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eBZ" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eCa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eCb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eCc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
-"eCd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/traitor/hall)
+"eCd" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/traitor/hall)
"eCe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/traitor/kitchen)
"eCf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/traitor/kitchen)
"eCg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/traitor/kitchen)
@@ -12354,7 +12354,7 @@
"eDD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eDE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
-"eDG" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eDG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eDH" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"eDI" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/tox)
"eDJ" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
@@ -12407,7 +12407,7 @@
"eEE" = (/turf/simulated/floor/plating,/area/traitor/hall)
"eEF" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eEG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
-"eEH" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eEH" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/kitchen)
"eEI" = (/obj/machinery/light_switch{pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/traitor/atmos)
"eEJ" = (/obj/effect/decal/cleanable/blood/oil,/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/traitor/atmos)
"eEK" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/traitor/atmos)
@@ -12427,11 +12427,11 @@
"eEY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/traitor/atmos)
"eEZ" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/traitor/atmos)
"eFa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/traitor/hall)
-"eFb" = (/obj/machinery/door/firedoor/multi_tile/triple{dir = 3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eFb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/traitor/hall)
"eFc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eFd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eFe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
-"eFf" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eFf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
"eFg" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/traitor/atmos)
"eFh" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 3; name = "Gas filter (CO2 tank)"; on = 1},/turf/simulated/floor/plating,/area/traitor/atmos)
"eFi" = (/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
@@ -12468,7 +12468,7 @@
"eFN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eFO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
"eFP" = (/obj/structure/rack,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/traitor/inter)
-"eFQ" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
+"eFQ" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"eFR" = (/obj/structure/rack,/obj/machinery/door/window/eastright{name = "Gear Rack"},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/traitor/inter)
"eFS" = (/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/inter)
"eFT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter)
@@ -12497,9 +12497,9 @@
"eGq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"eGr" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area)
"eGs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/traitor/tox)
-"eGt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Interrogation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
-"eGu" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
-"eGv" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 3; name = "Research and Development"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/multi_tile{dir = 3; layer = 2.6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd)
+"eGt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd)
+"eGu" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
+"eGv" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 3; name = "Research and Development"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd)
"eGw" = (/obj/machinery/chem_dispenser/beer,/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eGx" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eGy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
@@ -12536,7 +12536,7 @@
"eHd" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eHe" = (/obj/structure/table,/obj/item/stack/rods,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eHf" = (/obj/structure/table,/obj/item/weapon/hatchet,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
-"eHg" = (/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
+"eHg" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox)
"eHh" = (/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"eHi" = (/obj/item/device/radio/beacon,/turf/simulated/floor,/area/mine/production)
"eHj" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/simulated/floor,/area/derelict/bridge/access)
@@ -12580,15 +12580,15 @@
"eHV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/traitor/hall)
"eHW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/hall)
"eHX" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/hall)
-"eHY" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
-"eHZ" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
-"eIa" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/multi_tile/triple{layer = 2.6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
+"eHY" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eHZ" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall)
+"eIa" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"eIb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/traitor/atmos)
"eIc" = (/turf/simulated/wall/r_wall,/area/traitor/radio)
-"eId" = (/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/multi_tile{layer = 2.6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
-"eIe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
-"eIf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/multi_tile{layer = 2.6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
-"eIg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
+"eId" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
+"eIe" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
+"eIf" = (/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
+"eIg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock{name = "Interrogation"; req_access_txt = "0"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter)
"eIh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/radio)
"eIi" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/radio)
"eIj" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/radio)
@@ -12746,7 +12746,7 @@
"eLf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/server)
"eLg" = (/turf/simulated/wall/r_wall,/area/server)
"eLh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/teleporter)
-"eLi" = (/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/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"})
+"eLi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
"eLj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/crew_quarters/heads)
"eLk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/server)
"eLl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall/r_wall,/area/engine/gravitygenerator)
@@ -12763,19 +12763,16 @@
"eLw" = (/turf/simulated/wall,/area/assembly/chargebay)
"eLx" = (/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/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/assembly/robotics)
"eLy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics)
-"eLz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
-"eLA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
-"eLB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
+"eLz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio)
+"eLA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery)
"eLC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/sw)
"eLD" = (/turf/simulated/wall,/area/engine/gravitygenerator)
"eLE" = (/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},/turf/simulated/floor/plating,/area/medical/medbay3)
-"eLF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"eLG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"eLH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"eLI" = (/turf/simulated/wall/r_wall,/area/crew_quarters/hor)
"eLJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"eLK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/crew_quarters/hor)
-"eLL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"eLM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/qm)
"eLN" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/qm)
"eLO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm)
@@ -12783,7 +12780,6 @@
"eLQ" = (/turf/simulated/wall,/area/server)
"eLR" = (/obj/structure/noticeboard,/turf/simulated/wall,/area/medical/medbay3)
"eLS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics"; req_access_txt = "9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
-"eLT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"eLU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"eLV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/maintenance/asmaint2)
"eLW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/server)
@@ -12907,7 +12903,6 @@
"eOk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
"eOl" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
"eOm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"eOn" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"eOo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/ward)
"eOp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/medical/medbay2)
"eOq" = (/turf/simulated/wall/r_wall,/area/medical/virology)
@@ -13044,7 +13039,6 @@
"eQX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/misc_lab)
"eQY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"eQZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab)
-"eRa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_research{name = "Firing Range"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
"eRc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab)
"eRd" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab)
"eRe" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor{icon_state = "dark"},/area/toxins/misc_lab)
@@ -13247,7 +13241,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaosaffafgafhaosaffafgafhaosaaaamiafiafjafkaoHaflafmafnafoafpafqafrafsagqagqaftafuafvagqagqaoxafwafxamRafyafzafAafBafCafDafEafyafyafFafGaoIafIafJafKafLamdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaosafMafhafNaosafOafhafPaosaaaamiamiamiamiamiafQafRafSafTafUafVafWafXaoJafYafZagaagbagcagdapuageagfaggaggaggaghagiagjagkaggaggaggaggaglafcagmagnagoagpapvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWaaaaaaabWabWabWabWabWabWabWaaaaaaabWabWabWabWaaaaaaaaaaaaaaaaaaaosafhaffafhaosafhaffafhaosaaaapwagsagtagtaguagvagwagxagyagzagAagBagCaoJagDagEagFagGagHagHagIagJagKagLagLagLagMagNagOagPagQagLagLagRagSapxagTagUagVagWamdapKapKapKapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosaffafhaffaosaffafhaffaosaaaapwagXagYagZaqsahaahbahcahdaheahfahgahhaoJahiahjahkahlahmahnaqtaquahoahpahqahraqtahsahtahuahvahqahraqtaqtapKamdamdamdamdamdahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosaffafhaffaosaffafhaffaosaaaapwagXagYagZaqsahaahbahcahdaheahfahgahhaoJahiahjahkahlahmahnaqtaquahoahpahqahraqtahsahtahvahuahqahraqtaqtapKamdamdamdamdamdahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosaffaffafhaosaffaffafhaosaaaapwahyahzahAapwafQahBahCaqvahDahEahFahGaoJahHahIagFahJahKahLaqtahMahNahOahPahQahRahSahTahUahVahWahXahWahYapKahwahwahwahwahwahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosafhaffahZaosafhaffaiaaosaaaapwaibaicaidapwaqyaqyaqyaqyaieaifaigaihaoJaiiaijaikailaimainaqtaioaipaiqairaisaitaiuaivahUahVaiwahXaiwaixapKahwahwahwahwahwahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaosaiyaizaiAaiBaiyaizaiAaiCarkarjarjarjarlarjarjarjarjaiDaiEaiFaiGaiHarSaiIaiJaiKaiLaiMarTaqtaiNaiOaPFaiQaisaiRaiQaivaiSahVahTahTaiTaiUarUahwahwahwahwahwahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13270,10 +13264,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahxahxahxahxahxaaaaaaaaaaaaaaaaaaacuaabasqasqasqasqasqaabasraabasqasqasqasqasqaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaQBauCauDauEauFauGauHauIauJauIauKauIauIauLauMauMauMauMauMauNauOauPauMauMauMauMauQauMauMauMauMauRauSauTauUauVauWauXauYazrauZavaavbavcavdaveaXcavgaPlavhaviavjaPuavkavlavkavmaPtaabapRaabaaaaoLaoNaohaaaaaaaoLaoNaohaaaaaaaoLaoNaohaabaabaaaaabaoiaabaaaaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFajFajFajFajFajFajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahxahxahxaaaaaaaaaaaaaaaaaaaaaatHaaaaaaaaaaabaaaaaaaaaasraaaaaaaaaaabaaaaaaaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaQBavnavoavpavqavqavravsavtavuauRauRauRavvauRauRauRauRauRavwauRauRauRauRauRauRavxauRauRauRauRavyauRavzauRavAauRauRavBazravCavDavEavFavbavGaXcavHaPlavIavJavKaXdavMavNavOauBaPtaabapRaabaaaaoLaoNaohaaaaaaaoLaoNaohaaaaaaaoLaoNaohaaaaaaaaaaabapRaabaaaaaacnZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFajFajFajFajFajFajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuaabaqLaqLaqLaqLaqLaabasraabaqLaqLaqLaqLaqLaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaQBavPavQavRavSavTaQBavUavVavWavXavYavZawaawbavVavXavXavXawcavXavXavXavXavXavXawdaweawfawfawfawgawhawiawhawjawkawhawlazraXeaXeaXeaXeaXeaXeaXcavgaPlawmaviawnaPuavkawoavkavmaPtaoQawGapQaaaaaaaoiaabaabaabaabaoiaabaabaabaabaoiaabaabaabaabeSzeSyapQaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFajFajFajFajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofawpaofaaaaaaaaaaaaaaaaaaaaaacuaabarzarAarAarAarAarBarCarDarEarEarEarEarFaaaacuaaaaaaaaaaaaaabaaaaaaaaaaaaaQBaQBaQBaQBaQBaQBaQBaXfaXfaXgawqawrawsaXhawtaXiawuawvaXiawwaXiaXjaXjaXjaXjaXjaXjawxaXjaXjawyawzawAaXyaXfaXzaXfawBaXfaXfapMannannannannannawCavgaPlawDaviawEaPuawFavNavOauBaPtapReSweSvaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoPeSxeSwapRaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofawpaofaaaaaaaaaaaaaaaaaaaaaacuaabarzarAarAarAarAarBarCarDarEarEarEarEarFaaaacuaaaaaaaaaaaaaabaaaaaaaaaaaaaQBaQBaQBaQBaQBaQBaQBaXfaXfaXgawqawrawsaXhawtaXiawuawvaXiawwaXiaXjaXjaXjaXjaXjaXjawxaXjaXjawzawyawAaXyaXfaXzaXfawBaXfaXfapMannannannannannawCavgaPlawDaviawEaPuawFavNavOauBaPtapReSweSvaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoPeSxeSwapRaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabawHawIawHaaaaaaaaaaaaaaaaaaaaaacuaabasqasqasqasqasqaabawJaabasqasqasqasqasqaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXgawKawLawMaXhawNaXiawOawPawQawRawSawTawUawVawWawXawYawZaxaaxbaxcauRauSaYOaxeaxfaxgaxgaxgaxgaxgaxhaxgaxgaxgaxgaxiaxjaxkaxlaxmaxnbaJaxpaxqavkavmaPteSBawGeSAaabaabaaaaabaxraxsaxsaxsaxsaxsaxtaabaaaaaaaaaaaaaabeSCeSDeSAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxvaxwaxxaaaaxyaxzaxAaaaaabaxBaxCaxBaaaaaaaaaaaaaaaaaaaaaacuaaaaabaabaabaabaabaaaaxDaaaaaaaaaaaaaaaaaaaabacuaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbkaxFaxGaxHaXhawNaXiaxIaxJaxKawRaxLaxMaxNaxNaxNaxNaxNawZaxNaxOauMauRauSaXfaxPbbIbbXbbXbbXbbXaxRbckbgwbgwbgwbgwbgwbgwbgDbgCaxTbgEbjxbgJaxWbjzaPtaPtbjEbjEbjEbjEbjEbjEbjEaxYaxZaxZaxZaxZaxZaxYbjIaaaaaaaaaaaaaabaabaxuaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaybaycaybayaaydayeaydayaaabaxBayfaygaaaaaaaaaaaaaaaaaaaaaacuacuacuacuaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabbkkayhayiaxHaXhawNaXiayjaykaylawRaymaxNaxNaynaxNayoayoawZaxNaxOauMauRaypaXfayqbbIayraysaytblQayuayvaywayxayyayzayAdwrdwqayDayEayFayGayHayIayJayKayLayMayNayOayPayQayRbjEaxYaxZaxZaxZaxZaxZaxYbjIaabaaaaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaybaycaybayaaydayeaydayaaabaxBayfaygaaaaaaaaaaaaaaaaaaaaaacuacuacuacuaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabbkkayhayiaxHaXhawNaXiayjaykaylawRaymaxNaxNaynaxNayoayoawZaxNaxOauMauRaypaXfayqbbIayraysaytblQayuayvaywayxayyayzayAaSGdwqayDayEayFayGayHayIayJayKayLayMayNayOayPayQayRbjEaxYaxZaxZaxZaxZaxZaxYbjIaabaaaaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySaybayTaybaySaydayUaydaySayVayWayXayYayZayZazaayVayVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazbazbazbazbazbazbazbazbazbaabbkkazcazdazebmKazfbmWazgazhaziazjawSazkaxNazlazmaznazoazpazqaxOauMauRauSaXfasgborazsaysaytblQaztayRayRayRayRayRayRayRayRayRayRazuazvazwazxazyazzazAazBazBazBazBazCazBazDazEaxZaxZaxZaxZaxZazEbjIbjIbjIaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySazFazGazHaySazIazJazKdIsaxCaxCazLazMazNazOazPazQayVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboBazSazTazUazVazWazXazYazbaabbkkazZaAaaAbbkkaAcaXiaAdaAeaAfaAgaAhaznaAiaAjaAkaAlaAmaAnaAoaApaAqavtaArboCaAsbpMaAuaysaytblQaAvayRayRaAwaAwaAwayRayRayRayRaAxaAyaAzaAAaABaACaADaAEaAFaAGaAFaAFaAHaAFaAIaAJaxZaxZaxZaxZaxZaAKaALaAMaANaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySaAOaAPaAQaySaAOaAPaAQdIsaARaASaASaxCaxCaxCaASaASawHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHCaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabaaaaaaaabbqmazSaAUaAVaAWaAXaAYaAYdICazbbkkbbkbqpbqpbqpaAZbrwbttbrwbrwbrwbwsbtDbtDbwObtDbtDbtDbtDbyhbwTaBcauRaBdaXfasgbyiaHvaysaytblQaztayRaAwaBfaBfaBgaAwayRaBhayRaBiaBjaBkaBlaBmaBnaBoaBpaBnaBqaBnaBnaBraBhaBsaANaxZaxZaxZaxZaxZaANaBtaBuaBvaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaabykbykaBwaBxaBxaBxaBxaBybykbykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13281,85 +13275,85 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaCzaCAaCzaCBaCzaCCaCzaCDaCEaCFaCFaCFaCFaCGaySaCHaxBaaaaabaabaaaaaaaaaaaaaabaaaaCIaCJaCKaabaaaaabaaaaaaaaaaaaaaaazbaCLaCMaCNaCMaCMaCMaCMaCOaCMaCMaCPaCQaCNaCRaCSaCSaCSaCSaCSaCSaCSaCTbyxbyxbyxbyxbyBbyHbyxaCUbyxbyIbyBbyxbyxbyxbyxaCVaCWaCXaCYaCZbpMaDaaDbaBeaDcaztayRaAwaDdaBfaBfaAwayRayRayRaDeaDfaDgaDhayRayRaCjaDiayRayRayRayRaDjayRaDkaDlaxZaxZaxZaxZaxZaDmaDnaDoaCoaaaaabaabbzQaDqbzQaabaabaaabykbykbykaDraCuaDsaCuaDtaDuaCuaCuaCuaDvbykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaDxaDyaDzaDAaDBaDCaDDaDEaDCaDFaDGaDCaDCaDHaySaxCayWaabaabaaaaaaaaaaaaaaaaabaDIaDJaDKaDLaDMaaaaabaaaaaaaaaaaaaaaazbaDNazbaDOaDPaDQaDQaDQaDRaDQaDQaDQaDSaDOaDTaDUaDUaDUaDUaDUaDUaDUaAYbyxaDVaDWaDXaDYaDZaEaaEbaEcaEdaEeaEfaDWaEgbyxaEhauRaEiaXfaEjbyiaEkaElaElbAQaEnaEoaEpaEqaEqaEraEsaBnaEtaEsaEsaEuaEvaEwayRayRaExaEyaEzaEAaEAaEAaEBayRaECaEDaxZaxZaxZaxZaxZaEEbjIbjIbjIaabaabaaabBlaEGbBlaaaaabbykecgaEHecgaEIaEJaEKaELaCuaCuaEMaENaCuaEObykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaEPaEQaEPaERaDyaDyaESaEPaEQaEPaETaEUaEVaEWaySaxCayVayVaEXayZayZayZayZazaayVaEYaEZaFaaFbaEYazbazbaFcaFdaFeazbazbazbaDNaFfaDOaaaaabaaaaabaaaaabaaaaabaaaaDOaDTaDUaFgaFhaFiaFjaFkaDUaAYbyxaFlaFlaFmaFnaFoaFpaFqaFpaFraFsaFtaFlaFlbyxaEhauRaFuaXfaEjbyiaHvaysaytblQaztaFvaFwaFxaFyaFzaFzaFAaFBaFzaFBaFCaFDaFEaFFaFGaFHaFIaFJaFKaFKaFKaFLbRjbjEaFMaxZaxZaxZaxZaxZaFNbjIaabaabaabaaabBVbBYaFPbCabBZaaabykaFSaFTaFUaFVaFWaFXaCuaCuaCuaFYaFZaCuaGabykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaGbayaaGcaAPaGdaGeaGfaGgaGhaGdaAPaGiaGjayaaGkaGlaySaxCaxCaxCaxCaxCaxCaxCaxCaGmaGnaEYaGoaGpaGqaEYaGraGsaCMaCMaCMaCMaCMaGtaGuaGvaDOaabaGwaGwaGwaGwaGwaGwaGwaabaDOaDTaDUaGxaGyaGzaGAaGxaDUaAYbyxbyxbyxbyxaGBaGCaDWaGDaDWaGCaGEbyxbyxbyxbyxaEhauRaGFaXfaEjbyiaAuaysaytblQaAvaGGbCtbCtbCtbCtbCtbCtbCtaGHbCtaPjaPjaPjaPjaPjaGIbjEaGJaGKaGLaGMaGNbjEbjEaFMaxZaxZaxZaxZaxZaFNbjIaaaaaaaaaaaabDKaGOaGPaGQbDKaaabykbtKaGSecgaGTaGUaGVaGWaGXaGYaGZaHabvxbykbEgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaGbayaaGcaAPaGdaGeaGfaGgaGhaGdaAPaGjaGiayaaGkaGlaySaxCaxCaxCaxCaxCaxCaxCaxCaGmaGnaEYaGoaGpaGqaEYaGraGsaCMaCMaCMaCMaCMaGtaGuaGvaDOaabaGwaGwaGwaGwaGwaGwaGwaabaDOaDTaDUaGxaGyaGzaGAaGxaDUaAYbyxbyxbyxbyxaGBaGCaDWaGDaDWaGCaGEbyxbyxbyxbyxaEhauRaGFaXfaEjbyiaAuaysaytblQaAvaGGbCtbCtbCtbCtbCtbCtbCtaGHbCtaPjaPjaPjaPjaPjaGIbjEaGJaGKaGLaGMaGNbjEbjEaFMaxZaxZaxZaxZaxZaFNbjIaaaaaaaaaaaabDKaGOaGPaGQbDKaaabykbtKaGSecgaGTaGUaGVaGWaGXaGYaGZaHabvxbykbEgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaEQaHbaHcaHcaHcaHcaHdaEQaDwaHeayaaHfaHgaHhaHhaHhaHhaHhaHhaHhaHhaxCaHiaHjaEYaHkaHlaHmaHpecVaHoaHnaHnaHnaHnaHnaHnaHnaHnaHpaaaaGwaHqaHraHsaHtaHuaGwaaaaDOaDTaDUaGxaHwaHEaHxaGxaDUaAYbyxaHyaHyaFmaHzaHAaFpaFqaFpaHAaHBaHCaFlaFlbyxaEhauRaEiaXfaHDbbIeHtaysaytblQaztaGGbCtaHFaHGaHHaHHbCtaHIaHGaHJaPjaHKaHLaHMaPjaHNbjEaHOaHPaHPaHPaHQbjEaabaHRaHSaHSaHSaHSaHSaHTaabaaaaaaaagaaabDKaHUaHVaHWbDKaaabykaHXaHYbykbykbykbykbykaHZbykbykbykbykbykbykaJvaJvaJvaJvaJvaJvaJvaJvaJvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIbaIcaIbaIbaIdaIeaIbaIbaIcaIfaIgayaaERaIhaHhaIiaIjaIkaIlaImaInaHhaxCaIoayVaEYaEYaIpaIqdKtaIraIsaItaIuaIvaIwaIxaIyaIzaIAaHpaabaGwaIBaICaIDaIEaIFaGwaabaDOaDTaDUaIGaIHaIIaIJaIKaDUaAYbyxaDVaDWaILaIMaGCaDWaINaDWaGCaIOaIPaDWaEgbyxaEhauRaIQaXfaEjborazsaysaytblQaIRaISbCtaITaHGaHGaHGaIUaIVaIWaIXaPjaIYaIZaJaaJbaJcdNcaJdaJeaJfaJeaJgbjEaaaaabaaaaabaaaaabaaaaabaaaaaaaaaaaaaaabDKaJhaJiaJjbDKbEsbykbykbykbykaJlaJmaJnaJnaJoaJnaJpaJnaJqaJraJraJsaJraJraJraJraJtaJuaJvaJvbEDbEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIfaIbaJxaJyaJzaJAaJBaJCaJDaJEaJFaJGaJHaJIaEPaERaJJaHhaJKaJLaJMaJNaJMaJOaJPaxCaJQaJRaJSaJTaJUaJVaJWaJXaJYaJZaJZaJZaKaaJZaJZaKbaKcaHpaaaaGwaKdaICaKeaIEaKfaGwaaaaDOaDTaDUaKgaKhaKiaKjaKkaDUaAYbyxaKlaKlaFmaKmaHAaFpaKnaFpaHAaKoaFtaKpaKpbyxaKqawzaKraXfaEjborbEWbEWbEWbEWaKsaKtaKuaKvaKwbEXbEXbEXbEYbEXbGgbGsbyfaKzaKAbGsaKBdNBdNcbjEbjEbjEbjEbjEbGtbGtbGtaJvaJvaJvaJvbGubGCaJvaJvaJvaJvbDKbDKaKCbGRdNCaKDaKEaKFaKGaKHaKIaKJbGSbGSbGSbGSbGTaKKaKLbHwbHwbHHbHwbHNbHwbHwbHYaKNaOeaOeaKObEFbIgbIgbIgbIgbIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIbaIcaIbaIbaIdaIeaIbaIbaIcaIfaIgayaaERaIhaHhaIiaIjaIkaIlaImaInaHhaxCaIoayVaEYaEYaIpaIqdKtaIraIsaItaIuaIvaIwaIxaIyaIzaIAaHpaabaGwaIBaICaIDaIEaIFaGwaabaDOaDTaDUaIGaIHaIIaIJaIKaDUaAYbyxaDVaDWaILaIMaGCaDWaINaDWaGCaIOaIPaDWaEgbyxaEhauRaIQaXfaEjborazsaysaytblQaISaIRbCtaITaHGaHGaHGaIUaIVaIWaIXaPjaIYaIZaJaaJbaJcdNcaJdaJeaJfaJeaJgbjEaaaaabaaaaabaaaaabaaaaabaaaaaaaaaaaaaaabDKaJhaJiaJjbDKbEsbykbykbykbykaJlaJmaJnaJnaJoaJnaJpaJnaJqaJraJraJsaJraJraJraJraJtaJuaJvaJvbEDbEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIfaIbaJxaJyaJzaJAaJBaJCaJDaJEaJFaJGaJHaJIaEPaERaJJaHhaJKaJLaJMaJNaJMaJOaJPaxCaJQaJRaJSaJTaJUaJVaJWaJXaJYaJZaJZaJZaKaaJZaJZaKbaKcaHpaaaaGwaKdaICaKeaIEaKfaGwaaaaDOaDTaDUaKgaKhaKiaKjaKkaDUaAYbyxaKlaKlaFmaKmaHAaFpaKnaFpaHAaKoaFtaKpaKpbyxaKqawyaKraXfaEjborbEWbEWbEWbEWaKsaKtaKuaKvaKwbEXbEXbEXbEYbEXbGgbGsbyfaKzaKAbGsaKBdNBdNcbjEbjEbjEbjEbjEbGtbGtbGtaJvaJvaJvaJvbGubGCaJvaJvaJvaJvbDKbDKaKCbGRdNCaKDaKEaKFaKGaKHaKIaKJbGSbGSbGSbGSbGTaKKaKLbHwbHwbHHbHwbHNbHwbHwbHYaKNaOeaOeaKObEFbIgbIgbIgbIgbIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaKQaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaKWaHhaKXaKYaKZaLaaLbaLcaHhaLdaLeaLfaLgaLhaLiaLjaHnaLkaJZaJZaJZaJZaJZaJZaJZaKbaLlaHpaabaGwaLmaLnaLoaLpaLqaGwaabaDOaDTaDUaLraLsaLtaLuaLvaDUaAYbyxbyxbyxbyxaLwaGCaDWaGDaDWaGCaLxbyxbyxbyxbyxaLyaLzaLAaXfaHDaLBaLCaLCaLCaLDaLEaADbJdaLFaLGbJdaLHdNVaLIbJdaLJbJuaLKaLLaLMaPjaLNaLOaLPaLQaLQaLOaLRaLSaLSaLSaLSaLSaLTaLUaLSaLVaLWaLXaLYaLZaMaaMaaMbaMcaMdaMdaMdaMeaJuaMfbKWbKDaMibLLaMjaMkaMlbLMbLNaMmbLNaMnaMoaMpaMqaMrbLPaMtaMuaMvaMwaMxbEFaMyaMzaMAaMBaMCaMDaMEaMFaMGaMHaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMJaJzaJzaIcaJGaKTaJzaKTaMKaKTaJzaKTaJGaKUaKVaGdaERaMLaHhaHhaMMaMNaMOaMNaHhaHhaySaySaySaMPaMQaMRaMSaHnaMTaMUaMVaJZaJZaMWaJZaMXaMYaMZaHpaaaaGwaGwaNaaNbaNaaGwaGwaaaaDOaDTaDUaNcaNdaNeaLuaNfaDUaAYbyxaDVaDWaNgaIMaGCaDWaGDaDWaGCaIOaNhbyxbyxbyxaNiaNjaNkbLQaNmbNlasnasnbNtbNqaNnaNobCtaNpaHGbCtaNqbCtaNrbCtaNsbNuaNuaNvaNwbNQaNyaNzaNAaNBbOsbNRaNDbOsbOsbOxbOsaNzaNFaNzaJsaNzaNzaNGaNHaNIaNJaNJaNKaNLaNMaNNaNJaNOaJrbOAbPdaNQaNRaNSaNTaNUaNVbLMaNWaNXbLNaNYaNZaOaaObaMrbPgaMtaMuaMvaOdaOebEFaOfaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaOiaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaOjaOkaOlaOmaOnaOoaDyaOpaOqaOraOsaOtaOuaOvaOwaOwaHnaOxaOyaOzaOAaOBaOCaODaOEaOFaOGaHpaaaaabaaaaOHaOIaOHaaaaabaaaayaaDTaDUaOJaOKaOLaOMaONaDUaAYbyxaOOaOPaFmaOQaORaFpaOSaFpaOTaOUaOVbyxaOWaOXaOYaOZaPaaPbaPcbPhaaaaaabNtbPSaPfaPgbCtaSyaSzaHGaHGaPiaHGaHGaHGbScaPjaPkaPjbSUbSYaPjaPmaPjbTcaPnaPoaPpaPqaPrbTcbTHbUbbTYbUgbTYbTYbTYbTYbUhbTYbTYbUmbTYbTYcDpcDpaPvaJubLLaPwaNRaPxaPyaPzaPAaPBbUoaPDaPEbLNbDSaPGaPHaPIaPJbPgaMtaMuaMvaPKaRtbEFaPMaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaPOaIbaJxaJGaJzaJzaPPaJzaJzaPQaJzaJGaJHaPRaPSaERaPTaPUaPVaPWaPVaPVaPVaPVaPVaPXaDyaySaPYaPYaPYaPYaHnaPZaQaaQbaHnaHnaHnaHnaPZaQcaQdaHpaQfaQgaQgaQhaQiaQjaQgaQgaQkaQeaQlaDUaQmaDUaQnaQobVfaDUaQrbyxbyxbyxbyxaQsaQtaQuaQvaQuaQwaQxbyxbyxaQyaOZaOZaOZaOZaQzaQAbVVbVYbVXbNtaQEaPfaQFaPhbCtbCtbCtbCtbCtbCtaPjaPjbScaQGaQHaQIaQJaQKaQLaQMaQNbTcaQOaQPaQQaQRaQSbTcaQTaQUaQVaQWaQVaQXbieaQYaQZaRbaRcaRdaReaRfaRgcDpaRhaMabWaaRjaRkaPxaRlaPzaPAaRmbLNaRnaRoaRpaRqaRraObaObbLNbLNaMtaMuaMvaRsaPLbEFaRuaRvaRwaRxaRyaRzaMFaMFaRAaMHaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMJaJzaJzaIcaJGaKTaJzaKTaMKaKTaJzaKTaJGaKUaKVaGdaERaMLaHhaHhaMMaMOaMNaMOaHhaHhaySaySaySaMPaMQaMRaMSaHnaMTaMUaMVaJZaJZaMWaJZaMXaMYaMZaHpaaaaGwaGwaNaaNbaNaaGwaGwaaaaDOaDTaDUaNcaNdaNeaLuaNfaDUaAYbyxaDVaDWaNgaIMaGCaDWaGDaDWaGCaIOaNhbyxbyxbyxaNjaNiaNkbLQaNmbNlasnasnbNtbNqaNoaNnbCtaNpaHGbCtaNqbCtaNrbCtaNsbNuaNuaNvaNwbNQaNyaNzaNAaNBbOsbNRaNDbOsbOsbOxbOsaNzaNFaNzaJsaNzaNzaNGaNHaNIaNJaNJaNKaNLaNMaNNaNJaNOaJrbOAbPdaNQaNRaNSaNTaNUaNVbLMaNWaNXbLNaNYaNZaOaaObaMrbPgaMtaMuaMvaOdaOebEFaOfaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaOiaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaOjaOkaOlaOmaOnaOoaDyaOpaOqaOraOsaOtaOuaOvaOwaOwaHnaOxaOyaOzaOAaOBaOCaODaOEaOFaOGaHpaaaaabaaaaOHaOIaOHaaaaabaaaayaaDTaDUaOJaOKaOLaOMaONaDUaAYbyxaOOaOPaFmaOQaORaFpaOSaFpaOTaOUaOVbyxaOWaOXaOYaOZaPaaPbaPcbPhaaaaaabNtbPSaPfaPgbCtaPhaSzaHGaHGaPiaHGaHGaHGbScaPjaPkaPjbSUbSYaPjaPmaPjbTcaPnaPoaPpaPqaPrbTcbTHbUbbTYbUgbTYbTYbTYbTYbUhbTYbTYbUmbTYbTYcDpcDpaPvaJubLLaPwaNRaPxaPyaPzaPAaPBbUoaPDaPEbLNbDSaPGaPHaPIaPJbPgaMtaMuaMvaPKaRtbEFaPMaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaPOaIbaJxaJGaJzaJzaPPaJzaJzaPQaJzaJGaJHaPRaPSaERaPTaPUaPVaPWaPVaPVaPVaPVaPVaPXaDyaySaPYaPYaPYaPYaHnaPZaQaaQbaHnaHnaHnaHnaPZaQcaQdaHpaQgaQfaQfaQhaQjaQiaQfaQfaQkaQeaQlaDUaQmaDUaQoaQnbVfaDUaQrbyxbyxbyxbyxaQsaQtaQuaQvaQuaQwaQxbyxbyxaQyaOZaOZaOZaOZaQzaQAbVVbVYbVXbNtaQEaPfaQFbCtbCtbCtbCtbCtbCtbCtaPjaPjbScaQGaQHaQIaQJaQKaQLaQMaQNbTcaQOaQPaQQaQRaQSbTcaQTaQUaQVaQWaQVaQXbieaQYaQZaRbaRcaRdaReaRfaRgcDpaRhaMabWaaRjaRkaPxaRlaPzaPAaRmbLNaRnaRoaRpaRqaRraObaObbLNbLNaMtaMuaMvaRsaPLbEFaRuaRvaRwaRxaRyaRzaMFaMFaRAaMHaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaIbaIcaIbaIbaIdaIeaIbaIbaIcaPOaRBayaaRCaPTaCyaRDaRDaREaRDaRFaySaRGaRHaDyaRIaRJaRKaRLaRMaRNaRLaROaRLaRLaRLaRPaRLaRLaRQaRRaRSaRTaRUaRVaRTaRWaRTaRTaRTaRTaRXaRYaRZaRLaRLaSaaSbaScaSdaSeaSfaSgaShaSiaSjaSkaSkaSkaSkaSkaSkaSlaSmaSnaSoaSpaSqaSraSsaStaSuaOZaOZaSvaSwaSxaSwaSxaYubjuaSBaSCaSDaSEaPjaSFaTEaSHaSIaSJaSJaSKaSLaSMaSNbTcaSOaSPaSQaSQaSRbTcaSSaSTaSUaSVaSWaSWaSXaSZdhSaSYaTaaTbaTcaTdaTebTYaPvaTfbLLaTgaThaThaTiaTjaThaTkbLNaTlaTmbLNaTnaToaObaTpbLNaTqaTraTsaMvaOeaOebEFaTtbIgbWdbWebIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTuaTvaHcaHcaHcaHcaTwaTuaCyaHeayaaTxaTyaTzaTAaTBaTCaTCaTDaySaSGaRHaTFaTGaRJaTHaTIaTJaTKaTKaYgaTLaTLaTLaTMaTNaTNaTOaTPaTQaTKaTKaTRaTSaTTaTUaTVaTVaTWaTVaTXaTSaTSaTSaTYaSbaScaSdaSeaSeaSeaSeaTZaSeaSeaSeaSeaSeaSeaUaaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaUkaUkaUlaUmaUmaUmaUnaSEaSEaSEaUoaUpaSEaPjaUqaUraSJaSJaUsaSJaUtaUuaSMaUvbTcaUwaUxaUyaUzaUAbTcaUBaUCaUDaUEaUFaUGbTYbWQaUIbWQbTYbTYbTYbUmbTYbTYaPvaJubLLaUJaNRaNRaNRaUKaNRaULbLNbLNbLNbLNbLNbLNbLNaUMbLNaMvaMvaMuaMvaUNaUOaOeaUPaUQbztaSAaUTaUUaUVaUWaUXaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaGbayaaTzaAPaGdaUYaUZaVaaVbaGdaAPaVcaVdayaaVeaPTaTzaVfaVgaTCaTCaTDaySaVhaRHaDyaTGaRJaViaVjaVkaRLaRLaVlaVmaVnaRLaVoaVpaVqaVpaVraVsaVpaVpaVtaVpaVpaVuaVvaVpaVwaVpaVxaRLaRLaRLaVyaVzaVAaVBaVCaVDaVCaVEaVFaVEaVEaVEaVEaVEaVEaVGaVHaVIaVIaVIaVIaVJaVIaVKaVLaVIaVIaVMaVNaVOaVOaVOaVOaVOaVOaVOaVPaSEaSEaPjaVQaVRaVSaVTaVTaVUaVVaUuaSMaVWbTcbTcbTcbTcbTcaVXbTcaVYaVZaWaaWbaQVaWcbTYaXAaWeaWfaWgaWhaWjaWkaWdbTYaPvaJubLLaWlaWmaNRaWnaWoaNRaWpaWpbLLaWqaWraWsaOeaWtaWuaWvaMvaMvaWwaWxaOeaWyaOeaWzaUQaURaWAaWBaUQaUQaWCaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTuaTvaHcaHcaHcaHcaTwaTuaCyaHeayaaTxaTyaTzaTAaTBaTCaTCaTDaySaSyaRHaTFaTGaRJaTHaTIaTJaTKaTKaYgaTLaTLaTLaTMaTNaTNaTOaTPaTQaTKaTKaTRaTSaTTaTUaTVaTVaTWaTVaTXaTSaTSaTSaTYaSbaScaSdaSeaSeaSeaSeaTZaSeaSeaSeaSeaSeaSeaUaaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaUkaUkaUlaUmaUmaUmaUnaSEaSEaSEaUoaUpaSEaPjaUqaUraSJaSJaUsaSJaUtaUuaSMaUvbTcaUwaUxaUyaUzaUAbTcaUBaUCaUDaUEaUFaUGbTYbWQaUIbWQbTYbTYbTYbUmbTYbTYaPvaJubLLaUJaNRaNRaNRaUKaNRaULbLNbLNbLNbLNbLNbLNbLNaUMbLNaMvaMvaMuaMvaUNaUOaOeaUPaUQbztaUSaUTaUUaUVaUWaUXaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaGbayaaTzaAPaGdaUYaUZaVaaVbaGdaAPaVdaVcayaaVeaPTaTzaVfaVgaTCaTCaTDaySaVhaRHaDyaTGaRJaViaVjaVkaRLaRLaVlaVmaVnaRLaVoaVpaVqaVpaVraVsaVpaVpaVtaVpaVpaVuaVvaVpaVwaVpaVxaRLaRLaRLaVyaVzaVAaVBaVCaVDaVCaVEaVFaVEaVEaVEaVEaVEaVEaVGaVHaVIaVIaVIaVIaVJaVIaVKaVLaVIaVIaVMaVNaVOaVOaVOaVOaVOaVOaVOaVPaSEaSEaPjaVQaVRaVSaVTaVTaVUaVVaUuaSMaVWbTcbTcbTcbTcbTcaVXbTcaVYaVZaWaaWbaQVaWcbTYaXAaWeaWfaWgaWhaWjaWkaWdbTYaPvaJubLLaWlaWmaNRaWnaWoaNRaWpaWpbLLaWqaWraWsaOeaWtaWuaWvaMvaMvaWwaWxaOeaWyaOeaWzaUQaURaWAaWBaUQaUQaWCaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaDwaTuaPSaERaDyaDyaESaPSaTuaPSaWEaWFaWGaWHaDwaWIaWIaREaWIaRFaySaWJaRHaDyaySaPYaPYaWKaYraYraYraYraYraYraWLaWMaYraYraYraYraYraYraWNberaZYaZYaWOaZYaZYaZYaWRaWPaWTaWUaWQaWVaPYaWWaWWaWXaWXaWXbXMbXNbXNbXNbXNbXNbXNbBMbXObYMbYmcbAbYmcbBcbBcbGcbDcbZcbYccwbXOccIbVYbVYbVYbVYbVYbVYccJaXkaXkaXkaPjaXlaXmaXnaXnaXnaXnaXoaKyaXpaXqaXraXsaXtaXuaXvaXwbTcbTcaXxccOcencdjcfnbTYaWiaXBaXCaXCaXCaXCaXDaRabTYaXFaJubLLaXGaNRaWnaWnaWoaWnaNRaXHbLLaXIaXJaXKaOeaMvaXLaXMaXNaXNaXOaXPaXQaXRcfoaXSaXTaXUaXVaUSaUQaUQaXWaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaXXaDyaXYaXZaYaaYbaYcaYdaYbaYeaYfaYbaYbbcOaYhaYiaYjaYkaYkaYkaYlaYkaYmaYnaySaYoaYpaYqaYraYsaYtaWSayCayBaYxaYyaYzaYAaYBaYCaYDaYrbblaYvaZYbbzaYwaYFaYEaZYaZYaZYaYMaYMaYKaYLaYMaYMaYMaYNaSeaSjcfsaaaaaaaaaaaaaaaaaaaaabXOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZbXOaaaaaaaaaaaaaaaaaaaaacftaZaaSEaZbaPjaZcaXmaXqaXqaXqaXqaXqaZdaZeaXqaXqaXqaXtaZfaZfaZgaZhaZiaZjaZkaZlaZmaZnbTYaZoaZpaZqaZraZraZqaZsaZtbTYaPvaZubLLaZvaZwaNRaWnaWoaNRaZxaZxbLLbLLaZybLLaOeaZzaWuaWxaZAaZAaZBaWxaOeaOeaOeaZCaUQaZDaZDaZEaZDaUQaZFaWDaaaaaaaaaaZGaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaXXaDyaXYaXZaYaaYbaYcaYdaYbaYeaYfaYbaYbbcOaYhaYiaYjaYkaYkaYkaYlaYkaYmaYnaySaYoaYpaYqaYraYsaYtaYxayCayBaYxaYyaYzaYAaYBaYCaYDaYrbblaYvaZYbbzaYwaYFaYEaZYaZYaZYaYMaYMaYKaYLaYMaYMaYMaYNaSeaSjcfsaaaaaaaaaaaaaaaaaaaaabXOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZbXOaaaaaaaaaaaaaaaaaaaaacftaZaaSEaZbaPjaZcaXmaXqaXqaXqaXqaXqaZdaZeaXqaXqaXqaXtaZfaZfaZgaZhaZiaZjaZkaZlaZmaZnbTYaZoaZpaZqaZraZraZqaZsaZtbTYaPvaZubLLaZvaZwaNRaWnaWoaNRaZxaZxbLLbLLaZybLLaOeaZzaWuaWxaZAaZAaZBaWxaOeaOeaOeaZCaUQaZDaZDaZEaZDaUQaZFaWDaaaaaaaaaaZGaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaZHaZIaZHaZHaZHaZHaZHaZHaZIaZHaZHaZJaDyaZKaZLbCZaDyaZMaDyaZNaZOaZPaZQaZRaySaYpaYpaZSaYraZTaYxaYxaYxaYxaYxaYyaZUaYxaYxaYxbFjaYrbblaYGaZYaYIaYHaYJaYJbabbbyaZVaYMbadbaebafbagbahbaiaYNaSeaSjcfsaaaaaaaaaaaabXObXObXObXObajbakbalbambanbaobapbaqbarbasbatbXObXObXObXOaaaaaaaaaaaacftaZaaSEaSEbauaXqbavbawbaxaXqbaybazaJabaAbaBbaCaXqaXtdqXaZfbaDbaEaZfbaFbaGbaHbaIaZfcfubaKbaLaZqaZraZraZqbaMbaNbTYaPvbaObLLaXGaNRaWnaWnaWoaWnaNRaNRbaPbaQaNRbaRaOebaSbaTbaUaZAaZAbaVbaUbaWaOebaXbaYaUQbaZbaZbbabaZaUQaXWbbbbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayabbfbbgbbgbbgbbgbbgbbgbbgaGjayaaySbbhbbibbjbbjbbjbbjbbjbbjcfvbbjbbjbbjaySaYpbblbbmaYrbbnaYxaYxbbobbpbbqbbrbboaYxaYxaYxbbsaYrbblaYvaZYaZXaZWaZZaZZbacbaaaZVaYMbbAbbBbbCbbDbbEbbFbbGbbHaSjcfwcgtaQqbXObXObXObbJbbKbbLbbMbbNbbNbbObbPbbNbbQbbNbbRbbSbbTbbUbbVbbWbXObXObXOaQqccIcgIaZaaSEaSEaPjbbYbavbaBbaxaXqbbZbcaaXqbcbbccbaCaXqaXtaZfaZfbcdbcebcfbcgbchbcibcjaZfcgVbaKbclaZqaZraZrbcmbcnbaNbTYaPvbcobLLbcpbcqbcraWnaWobcsaNRaNRbctaNRbcubcvaOebcwbcxbcyaZAaZAbczbcybcAaOebcBbaYaUQaUQaUQaUSaUQaUQbcCbcDbcEbcFbcGbcHaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIaabbcJaGeaDAbcKbbjbcLbcMbcNbcRbcPbcQbhlbcSbbjbcTbcUbcVbcWaYrbcXaYxaYxbbobbqbcYbbtbboaYxaYxbdabdbaYrbblaYvaZYaZYbbuaZYaZYaZYaZYaZYaYMbdcbbDbddbbDbdebbFaYNbdfaSjaSkaSkbdgcgWbdibXObdjbalbdkbbNbbNaMIbdlbdpbdnbdpbdoeTDbdqbdmbdrbdsbdtbXObducgWbdvbdwbdxaZaaSEaSEbauaXqbdyaXqaXqaXqbdzbdAaXqbcbbdBbaCaXqaXtaZfaZfbdCbdDbdEbdFbdGbdHbcjbdIbTYbdJbclaZqaZraZraZqbcnbdKbTYbdLchpbLLchqbLLbLLbdMaWobdNbdOaNRbdPbdQaRlbdRcfobdSbdTbdUbdVbdVbdWbdXbdYcfobdZbeaaUQbebaUQaUSaUQaUQbecbedbbcbbdbbdbeeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbefbegbehaERaZKbbjbcLbeibejbcLbekbelbembenbbjbeobepbeqberaYrbesbetbeubevbewbexbeybezbezbezbeAbeBaYrbblbcUbeDbeEbeFbblbblbeGberbbvaYMbeIbeJbeKbeLbeMbeNaYNbdfaSeaSeaSebeObePbeQbeRbeSbeTbbNbeUbeVbeWbeXbeYbeZbfabfbbfcbfdbfebeSbffbfgbfhbfibfjbfkbflbfmbfnaSEbfoaPjaXqbfpbfqbaCaXqbfrbfsaXqbftbfubaCaXqaXtaZfaZfaZfaZgaZfbfvaZfbdHbcjbfwbTYbfxbclaZqaZraZraZqbcnbfybTYbfzbfAbOYbfBbfCbfDbfEbfFbfGbfGbfGbfGbfGbfGbfHbfIbfJaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaUQaUQaUSaUQaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbfPbfQbfRbfSaZKbbjbfTbcLbfUbfUbfUbfVbcLbfWbbjbfXbfYbeqbfZbfZbfZbfZbgabfZbgbaYxbgcbgdbgebgebgfbggaYrbghbgibgjbgkbglbgmbgmbbwdIjbgobgpbgpbgpbgpbgpbgqaYMaYNbgrbgsbgtbgubgvchrbgxchsbgybeZbgzbgAcNxcNxcNxcNxbgBcNxdiMdiOdiNbgFbgzbgGbgHbXObgIchtbgKbgLbgMbgNaSEaSEbauaXqbgOaXqaXqaXqaLLaXqaXqbgPbgPbgQbgQbgRaZfaZfbgSbgTaZfaZfaZfbgUbgVbgWbTYbaNbclaZqaZqaZqaZqbcnaXEbTYbgXbgYbgYbgZbgYbhaaWnaWnaWnaWnbhbaWnaWnaWnbhcbfLaZAaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaZDaZDaZEaZDaUQbhdaWDbhebhfbhgaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbhibhjbehbhkaWHbjQbcLbhmbfUbfUbfUbfVbhmbcLbbjbhnbhobeqbfZbhpbhqbhrbhsbfZbbxbhubhvaYrbhwbhxbhybhzaYrbblbhAbhBbhBbhCbhBbhBbhBbhBbhDbhEbhEbhEbhFbhEbhGbiWbhHbhIbhJchuchuchuchuchuchucjcbhKcjccNxcNxbhLbhMbhNbhObhPbhQbhLdiPcNxcjVbhRcjVcjVcjVcjVcjVcjVcjVbgNaSEaSEaPjbhSbhTbprbhUaXqbhVaXqbhWbhXbhYbgQbhZbTcbiabibbTcbTcbicbidbidbidbTcbTcbTYcgrbifbigbigbigbigbifbihbTYbiibgYbgYbgZbijbLLbikbilbimbinbiobipbiqbirbisaOebitaMvbiuaZAaZAbiuaMvbivaOebiwbaYaUQbaZbaZbbabaZaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbixaDwbiybizbiAbbjbeibeibeibcLbiBbiCbiDbiEbbjbiFbiGbeqbfZdHcbfZbiHbiIbfZbiJbiKbiLaYrbhwbhxbhybiMaYrbblbhAbhBbiNbiObiPbiQbiRbhBbiSbiTbiUbiVbiWbiWbiWbiWbiXbiYbiZchubVzbjbbjcbjdbjebjfbjgbjhcNxbjibhNbjjbjkbjlbjkbjjbhNbjmcNxbjnbjobjpbjqbjrbjsbjtboocjVbjvbjwbjwcmhaPjaPjaPjaPjbjybaubjycmSaPjbSYaPjaPjbTcbTcbTcbTcbjAbjBbjBbjBbjBbjCbjDbTYcncbjFcncbjGbjGcncbjFcncbTYbiibgYbgYbjHbijbLLbLLbLLbLLbLLchqbLLbLLbLLbLLaOecndcnQcnecnecnecnecoLaOeaOebjJbjKaUQaUQaUQaUSaUQaUQbecbbbbjLbbdbbdbjMaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbehaySaySaySaySaySaySbjObjPbbjbbjbbjbbjbbjbbjccWbbjbbjbbjbjRbjRbjSbfZbjTbjUbiHbjVbfZbjWbjXbjWaYrbhwbhxbhybjYaYrbblbhAbhBbjZbkabkbbiQbkbbhBbiSbkcbkdbkebkfbkgbkhbiWbkibkjbiZcoMbklbkmbknbkobkobknbkpbkqcNxbkrbhNbhNbksbktbjkbjjbhNbkudiNbkvbkwbkxbkybkzbkAbkxbkBcjVbkCbkDbkEbkFbkGbkHbkIbkJbkJbkJbkJbkJbkJbkKbkLbkMbkNbkJbkObkJbkJbkJbkJbkJbkJbkJbkJbkPbkQbkRbkRbkRbkRbkRbkRbkSbkHbkTbkUbkUbkVbkWbkXbkWbkYbkWbkZblablbbkWblcbldbleblfblgblgblgblgblgblgblgblhblibljbljbljbljblkbljbllblmblnbloblpbcGblqaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaaaabblsaGebltblublvblwblwblwblwblwblxblyblzblAblBblCbjSbfZbfZbfZblDbiIbfZaYraYraYraYrbhwblEblFblGaYrblHblIbhBblJblKbiQbkbblLbhBbiSblMbkdbkebkeblNblObiWblPbkjbiZcoNblRblSblTblUblVblWbkpblXcNxblYbksbhNblZbmablZbhNbksbmbdiPbmcbkxbkxbkybmdbkAbkxbmecjVbmfbkEbkEbkFbkGbkHbkJbkJbkJbkJbkJbkJbkJbmgbkJbkJbkJbkJbkJbkJbmhbmibmibmibmibmibmibmibmibmibmibmibmibmibmibmjbmkbmlblgblgbmmbgYbgYbgYbgYbgYbgZbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbmnbgYbmobmpaUQaUQaUQaUQaUQaUQaUQbmqbedbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbefbegbmrbmsbmtbmubmubmubmvbmubmueIGbmweNcberberberbXHbfZbhpbmxbmybjVbfZbmzbmAbmzaYraYraYraYrbmBaYrbmCbhAbhBbmDbmEbkbbmFbmGbhBbiSbiWbmHbkebkebkebmIbiWbmJbkjbiZcoObmLblSblTbmMbmNblWbkpbmOcNxbmPbmQbhNbmRbmSbmTbjjbmUbmVdiQbmXbmYbmZbnabnbbncbkxbndcjVbnebnfbkEbkFbkGbkHbkJbngbkJbkJbkJbkJbnhbnibnibnibnibnjbkJbkJbkJbkJbnkbkJbngbnlbkJbnmbnnbnobkJbnpbnqbnqbnrbnsbntbnubgYbgYbgYbgYbgYbgYbgYbnvbnwbnxbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbnybnzbnzbnAbnBbnCbnDbnEbnEbnEbnEbnFbnGbnHaabaaaaaaaabaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbnIbnJbnKbnLbnMbmubnNbnObnPbnPbnQeJnbnSbnTbnUbnUbnVbnWbfZbfZbfZbiHbnXdHcberberberberbnYbblbblbnZbgmboabobbocbodboebofbogbohbhBboibiWbojbkebkebkebokbolbombkjbonchudwtbopbknbknbknbknbkpboqcNxdiRdiScNxcNxcNxcNxcNxcNxcNxdiPcjVbosbotboubovbowboxboycjVbozboAboAcpTcpTcpTcpTcpTcpTcpTcqxcqxcrkcqBboDboDcqBcrkcqxcqxcrtcrtcrtcrtcrtcrtcswcswboEcswcswcswcswcswctpboFcvyboGbgYbgYboHboHcxOcxOcxOcxOcxOboIbnzbnzbnybnzbgYbnzbnzbnzbnzboJcxQcxQcxQcxQboKcxYcxYcxYcxYcxYcxYcxYcxYcxYaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbhibhjbmrbmsboLbmuboMbmuboNboObmueIGeIGaZSboPboQboQboRbfZbhpboSbiHboTdHcboUboVboWboXboYboZboZbpaboZbpbbpcbhBbpdbpecaMbpfbpgbocbphbiWbpibkebkebpjbpkbplbombkjbpmchubpnbpobppbpqdwsbpsbptchuchubpuczkbpvbpwbpxbpwbpyczkaaaczEcjVbpzbpAbpBbpCbowbkxbpDcjVbpEbpFbpGcpTbpKbpIbwpbpJbpLcAgbpNbpObpPbpQbpRbpRbpQbpSbpTbpUcrtbpVbpWbpXbpYcrtbpZbqabqbbqcbqdbqebqebqfctpbqgcBocAMbqhcAMbqibqicxObqjbqkbqlcxOcBSbqncBScxObqobnzboJcxQcCqbqqcCqcxQbqrbqscxQbqtbqubqvcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaabqwaTzbqxbizbqybmubqzbmubqAbqBbqCbqDbmubqEbqFbqGbqHboRbfZbfZbfZbfZbfZbfZbqIbqJbqKbqLbqMbhBbhBbhBbhBbhBbhBbhBbqNbhBbhBbhBbqObhBbqPbqQbqRbkebkebkebqSbolbqTbkjbqUchubqVbpocjccjccjcchubqWchubqXbqYcDXbqZbrabrbbrcbrdcDYbrebrfcjVbrgbkxbrhbribowbrjbkxcjVbrkbrlbrmcpTbKXbrobrpbrqbrrbrsbrtbpRbpRbpRbpRbpRbpRbpRbrubrvcDZbrxbrybrzbrAcrtbrBbrCbrDbrEbrFbrGbrCbqfctpbrHcBobrIbrJbrKbrLbrLcEFbrMbrNbrObrPbrQbrRbrScxOcFEbrTcGWcxQbrUbGybrWbrXbrXbrYcxQbrZbsabsbcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbhjbbgbbgbbgbscbbgbsddDZbsebsfbmubsgbshbsibsjbskbslbsmbcWbblbblbblbsnbnUbnUbnUbnUbnUbnUbsobspbspbsqbsrbhBbssbstbsubsvbswbsxbsybszbhBbsBbsCbsDbphbolbqRbkebkebsEbiWbiWbsFbsGbsHcGXbsIbsJbsKbsLcIWbsMbsNcJFbsObsPcDYbsQbsRbsQbsRbsScDYbrebsTdjnbsUbsVbsWbsXbsYbsZbtadjnbtbbpFbpFcpTchFbtdbtebtfbSXcpTbrtbpRbpRbpRbpRbpRbpRbpRbthbtibtjbtkbtlbrxbtmcrtbtnbtobtpbrEbqfbrGbtqbtrctpbtseKcbtubtvbtvbtwbtxbtybtzbtAbtAbtAbtBbtAbtCeKdbtEbtFbtGeKebtHbtIbtJbtJbtJcifcxQbtLbsabtMcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtNbtObtPbtQbtRbtSbtSbtTbtUaDybmubtVbtWbsjbtXbmubmubmuberbtYbtZbuabubbuabuabuabubbuaberberbhBbhBbhBbucbhBbudbudbudbudbudbudbsybuebufbugbuhbuibujbukbulbumbunbuobupbuqburbusbutbuubuvbuvbuwbuxeKfbuybuzeKgbuAbuBczkbuCbrcbuDbrabuEczkaaabuFeKheKibuGeKheKheKheKhbuHcjVbuIbpFbuJeKjbRKbuLbuMbuNbRJcpTbuPbuQbuRbuSbuTbuUbuVbuWbrubuXcrtbUjbtlbuZbvacrtbvbbvcbrDbrEbqfbrGbrCbqfctpbrHcBobvdbvebvfbvgbvheKkbvibvjbvkbvlbvmbvnbvocxObvpbvqbvrcxQbvsbvtbvubrXbvvbRLcxQbtLbsaciNcDsaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtNbvybvzbvAaDxaDxbvBbvCaDxbvDbmubvEbvFbvGbvHbmuaaaaaaaaaaabaabbvIbvIbvIbvIbvIbvIbvIaaaaaabvJbvKbvLbvMbvNbudbudbudbudbudbudbvObvPbvQbvRbvSbvTbvUbvVbiWbiWbvWbiWbiWbiWbvYbvZbwaeKlbwbeKmeKmeKneKmeKobwceKpbwdbuBczkbwebpwbpwbpwbwfczkaaabuFeKhbwgbwhbwibwjbwkeKqbwleKrbwmbpFbwncpTbpKbwociLbwqbuYeKsbwtbwubwvbwwbwxbwybwzbwAbwBbwCeKtbwDbtlbwEbwFcrtbwGbwHbwIbwJbwKbwLbwMbqfctpbwNeKubwPbwQbwQbwRbwSeKvbwUbwVbwWbwXbwYbwZbxacxObxbbvqbxccxQbxdbxebxfbrXbrXbNMcxQbrZbsabxhcDsaaaaaaaaaaaaaabbxibxjbxkbxjbxkbxjbxlaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxmaDwbxnbxnbxobbgbxpaGbayabxqbxpbmubxrbxsbxtbxubmuaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaabxvbxwbudbxxbxybxybxybxybxybxzbxAbxybxBbxCbxDbxEbxFbxGbxHbiWbxIbkebxJbxKbxLbxMbxNbxOeKleKleKpbxPbxQbxRbxSbxTeKpbpubuBczkbxUbxVbxWbxXbxYczkaaabxZeKhbyabybbyceKwbydeKwbyeeKxciPbpFbygcpTeKzeKyeKAbyjeKCeKBbylbymbynbyobypbypbyqbyrbysbytcrtbwDbyubyvcrtcrtcsweKDeKFeKEcswctpctpctpeKGbyycBobyzbvebvfbyAbwQeKHbyCbyDbyDbyEbrObyFbyGeKJeKIbrTeKKcxQbyJbyKbrXbyLbyMbNLcxQbtLbyOcDscDsaaaaaaaaaaaaaabbyPbyQbyRbySbySbyTbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbyWbyXbyYbFbbyZbzabzbbzbbzbbyZbudbsybuebudbudbufbzcbzdbzebzfbzgbzhbzibkebkebzjbzkbxMbxNbzlbzmbznbzobzpbzqbzrbzsciQeKpbzubzvcDXbzwbzxbzybzzbzAcDYbrebzBeKhbzCbzDbzEeKwbzFeKwbzGeKxbzHbpFbzIcpTbzJbzKbzLbzMbzNeKLbzObzPeKMeKMeKNbzReKMeKMbzSbzTeKPeKObzUbzVbzWbzXbzYbzZbAabAbbAceKQbAdbAebAfbAgcBobAhbAibAjbAkbAlcEFbAmbyDbyDbAnbAobyFbApcxObAqbAqbArcxQbAsbAtbAubAvbrXbyNcxQbtLbAxcDsaaaaaaaaaaaaaaaaabbAybAzbyRbySbyRbAAbxkaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbABbACbABbADeHueHveHueHueHueHubAEbsybuebAFbhBbhBbAGbkebuhbzfbAHbAIbAJbAKbAKbALbAMbANbAObAPeKRbARbASbATbAUbAVbAWbAXeKpbwdbuBczkbAYbAZbBabBbbBcczkaaabxZeKSeKTeKSeKSeKSeKSeKSbBdeKSbBebpFbzIcpTbCFbBgbBgbBhbBieKBbBjbBkeKUbBmbBnbBobBpeKUbBqbBrbBsbBtbBubBvbBwbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBHbBIbBIbBJbBKbBLcEFciTbrObrObBNbBObyFbBPbBQbBRbBSbBTeKVbBUeKXeKWbBWeKYcxQcxQbBXeKIeKIeKZeLaeLaeLaeLbeKIbyPbySbyRbySbySbCbbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbCcbCdbCcbCebudbzabzbbzbbzbbudbudbsybuebCfbCgbhBbChbkebuhbzfbCibCjbCkbkeblNbkebClbxMbpFbCmeLcbARbCnbCobCpbCqbCrbCseLdeLfeLeeLgeLgbCubCvbCwczkczkaaabxZeKSbCxbCybCzbCAbCBbCCbCDeLhbCEbpFbzIeKsbBfbCGbCHbCIbCJeKBbCKbCLbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCWbCXbCYciWbDabDbbDcbDdbDeeKQbDfbDgbDhbDicAMbDjbDkbDlbDmbDmcEFbDnbDobDpcEFbDqbyFbDrcEFbDsbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDGbDHbDIbDJeLibDLbxjbxkbDMbxkbxjbDNaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbDObyXbDPbDQbudbzabudbudbudbudbudbsybuebCfbDRbhBbFnbkebDTbDUbkebDVbkdbkebkebdhbxLbxMbpFbCmeLcbAReKpbDXbDYbDZbEabEbeLjbEcbEdbEeeLkcDYbEfeLlcDYbrebrebEheKSbEibEjbEkbElbEmbEmbEnbEobEpbpFbEqcpTeKBbEreLneLmbEteKBbCKbEueLobEvbEwbExbEyeLobCKbEzbEAeLpeLpeLpeLqeLpeLreLrbEBeLseLueLteLtbECeLueLueLteLteLweLveLweLwcEFcEFcEFcEFcEFeLxbEEeLycEFbEGbEHbEIbEJbEJbEKbELbEMbENbEObEPbEQbERbESbETbETbEUbDwbEVeKIeLzeLBeLAbEZeKIbFaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbCcbCdbCcbFbbFcbFdbudbudbudbFcbudbsybuebCfbFebhBbFfbkebuhbzfbkebolbFgbkebkebFhbzkbxMbpFbFieLCbFkeKpbFlbFmeHrbFobFpeLjbFqbFrbFsbFtbFubFvbFweLDaaaaaaaaaeKSbFxbFybFzbFzbFAbFBbFCeKSbFDbFEbzIbFFbFGbFHbFIbFJbFKbFLbFMbCLeLEbFNbFObFPbFQeLEbCKbEzbFRbFSbFTbFUbFVbKHeLrbFXbFYbFZeLubGabGbbGcbKIbGebGfeLFbDBbGhbEJbEJbGibGjbEJbGkbGlbGmbGnbGobEJbGpbGqbGreLHeLGeLJeLIeLKeLIeLIeLIbBXeKIeKIeKZeLbeKIbGvbGwbGxbrVbGzbGAbGBeLLaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbGDbGEbGDbGFbGGbGHbGHbGHbGHbGHbGIbGJbGKbCfbGLbhBbGMbGNbGObGPbGQeLNeLMeLPeLObIybIybGUbpFbGVbGWbAReKpbGXbGYbGZbDYbHaeLjbHbbHcbHdeLQbHebzybHfeLDaaaaaaaaaeKSbHgbHhbHibHjbFAbFBbFCeKSbHkbHlbHmbHnbHobHpbHqbHrbHsbHtbHubHveLoeLoeLRbHxeLoeLobCKbEzbHybHzbHAbHBbHCbHDeLrbHEbHFbHGeLSbHIbHJbHKbHKbHLbHMeLTbHObHPbDwbDwbHQbDwbHRbDwbHSbDwbHTbHUbHUbHVbHWbHXeLUbJobJhbIbbIcbIdbIeeLIbIfeLVaaaaaaaaaeKIbIhbIibIjbIkbIlbImbIneKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbIobIpbIqbhBbhBbIrbyXbyXbyXbIsbhBbhBbItbIubIvbhBbIwbIwbIwbIxbIwbIybIzbIAbIBbICbIybxMbpFbIDbvXbvXeKpeKpeKpeKpeKpbIEeLjeLgeLeeLXeLWeLYbIFeLDeLDczkczkczkeKSeKTeKSeKSeKSeKSeKSeKSeKSbIGbpFbIHeLZbUcbIIbIJbUcbUccjIbIKbILbIMbINbIObIPbIQbIRbFMbISbITbIUbIVbIWbIXbIYbIZbJabJbbJceMabJebJfbJgbGcbHZeLteLtbKJbKJbKJbKJbJibKJbKJbKJeMbbJjeMceMcbJkbJlbJmbJneLUbIabJpbJqbJrbJsbJteLIbIfeMdaaaaaaaaaeKIbJvbJweKIeLieKIeKIeLieKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJxaabaaaaaaaaaaaabIwbJybJzbJAbJBbIybJCbJDbJEbJFbIybxMbpFbJGbJHbJIbJJbJKbJLbJMbJNbJObJPbJQbJRbJSbJTbJUbJVbJWbJXbJYbJZbKabKbbKcbKdbKeboAbKfbpFbKgbKhbKibpFbKjbUcbKkbKlbKmbKnbKobCKbKpbKqbKrbKsbKtbKubKvbKwbKxbKybKzeLpbKAbHBbKBbKCeMebKEbKFbKGeLubGdbGcbGcbGcbFWeLtbKJbKKbKLbKMbKNbKObKPbKQbKJbKRbKSbKTeMceMcbKUbJmbKVeMfbAwbKYbKZbLabLbbLceLIbLdcDsaaaaaaaaaeKIeKIeKIeKIaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIwbLebLfbLgbLhbLibLjbLkbLlbLmbIybxMbLnbLobpFbpFbzIbLpboAbKebKdbLqbLrbLqbLsbLtbLtbLubLvbLwbLtbLtbLxbLtbLybLtbKdbKeboAbLzbLAbLBbLCbLDbLEbpFbUcbLFbKlbLGbLHbLIbCKbLJbLKeMheMgeMibLOeMkeMjbCKbLRbLSeLpbLTbLUbLUbLVeMlbLWbLXbLYeLubLZbMabGcbMbbMceLtbKJbMdbMebMfbMgbMhbMibMjbKJbMkbKSbMlbMleMcbMmbMnbMobMpbMqbMrbMsbMtbMubMveLIbIfcDsbMwaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaabMxbMybMzbMybMAaaaaaaaaabIwbIwbMBbMCbLgbMDbMEbMFbJEbMGbMHbIybxMbMIbMJbMKbMLbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMVbMWbMXbMXbMXbMXbMXbMXbMYbMZbNabNbbNcbNdbMLbNebNfbNgbNhbNibUcbNjbKlbKmbNkbLIbCKbLJbLKeMmbNmbNnbNobNpeMnbCSbNrbNseLpeLpeMoeMpeLpeMleLreMreMqeLubNvbNwbNxbNybNzeLtbKJbNAbNBbKMbNCbNDbNEbNFbKJbNGbKSbMlbMleMcbNHbNIbNJeMsbNKbtcbtgbNNbNObNPeLIbIfeMteMueMteMweMveMweMweMwaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbNTbNUbNVbNSbNWbNXbNYbIwbNZbOabObbOcbOdbOebOfbOgbOgbOhbIybOibOjbOkbXibXibOlbOmbOnbXicblcblbOobOpbOqcblcblbOrbKdbKdeMxeMyeMyeMyeMzbOteMyeMyeMAbOueMBeMBbOveMBbOweMCeMBeMDbOybOzbUceMEbOBbLJbOCeMFbODbOEbOFbOGeMFbCKbLRbOHeMGbOIbOJbOKbOLbOMbONeMHbOObOPbOQbORbOSbOTbOUeLtbKJbKJbKJbKJbKJbKJbKJbKJbKJbOVbOWbOXbOXeMccjKbOZbPaeLIeLIeLIeLIeLIeLIeLIeLIbIfeMtbPbbPceMIbPebPebPfeMwaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeMKeMJeMJeMLeMMeMMbQZbQZbQZbQZeMNaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPibPjbPibMzbPkbPlbPmbPnbPobPpbPqbPrbPsbIybPtbPubPvbPwbIybOjbOjbPxbXibPybPzbPAbPBbPCcblbPDbPEbPFbPGbPHcblbPIbPJbPKeMybPLbPMbPNbPObPPbPQbPReMObPTeMPbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbQebQfbQgbLKbQhbQibQjbQkbQlbQmbCSbQnbQobQpbQqbOKbQrbQrbQsbQteLubQubQvbQwbQxbQybQzbQAeLtbQBbQCbQDbQEbQDbQDbQFeMReMQbQGbQHbQIbQJeMcbQKbQLbJneKIbsabQMbQNbQObQObQNbQObQPeMtbQQbQReMIbPebQSbQTeMwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeMSbQVbQWbQVeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbPibPibPibRabRbbMCbRcbRdbRebMCbPqbRfbRgbIybIybIybIybIybIybRhbOjbRicbXbRmbRkbRkbRkbRocbldrybRnbRnbRnduveMTbRpbRqbRreMUbRsbRtbRubRvbRwbRxeMyeMAbRyeMBbRzbRAbRBbRCbRDeMBbLFbKmbLGbLHbREbRFbRGbRHeMVbRIbwrbvwbuKeMFbRMbRNbROeMWbRPbRQbRRbRSbRTbRUeLueLueLueLueLueMXeMZeMYeLtbRVbQDbQDbRWbQDbRXbRYeNbeNabRZbKSbSabSaeMcbJlbSbbJneKIeMtbcZeMteMteMteMteMteMteMtbSdbSeeMwbSfbSgbSheMwaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSibQVbQVbSjbQZbQZbQXbQXbSkbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPjbPjbPjbMzbSlbSmbSnbSobSpbMCbSqbSrbSsbStbSubSubSubSvbOjbOjbOjbPxbXibRlbRkbSwbRkbSxcblbSybRnbSzbRnbSAcblbSBbSCbSDeMybSEbSFbSGbSHbSIbSJeNdbSKbSLeNebSMbSNbSObSPbSQeMBbNjbKmbKmbSRbREbRFbSSbSTeNfbQibSVbSWbxgeNgbSZbTabTbeNhbTdbTebTfbTfbQrbTgeMGbThbTibTjbTkbTlbTmbTneNbbRVbTobQDbQDbQDbTpbTqeNbeNabTrbKSbSabSaeMcbTsbTtbJneKIbTubTvbTweMtbTxbTybTzbTAbTBbTCbTDeMwbTEbTFbTGeMweMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaeNibQZbSibQZbQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaabNSbTIbTJbTKbNSbTLbNXbNYbIwbIwbTMbTMbTMbIwbIwbOjbTNbTNbTObTPbOjbTQbTRbXibRlbRkbRkbRkbTScblbSybRnbRnbTTbTUeNjbTVbTWbTXeMyeMyeMyeMyeMyeNkeMyeMybTZbUaeMBeMBeNleMBeMCeMBeMBbUcbUdbUdbUcbUcbUebUfeNmeNnbUibuObUkbUleNoeNpbUnbTbeNqbUpbUqbUrbUsbUtbUueMGbUvbUwbUxbUybUzbUAbUBeNrbUCeNrbUDbUEbUFeNreNseNreNrbUGbUHbSabSaeMcbUIbSbbJnbUJbUKbULbUMbUNbUObUPbUPbUQbURbUSbUTbUUbUVbUWbUXbUYbUZbVabVbeNtbVcbVdbVeeNuaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaeMMbQZbVgbVhbVhbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVibMybVjbMybVkbVlaabaaaaaabIwbVmbVnbVobIwaaabOjbVpbVqbVrbVsbSubVtbVvbXibVwbVxbVybRkcjPccZcjQbVAbVBbVCbVDcblbVEbVFbVGbVHbVIbVIbVIbVIbVJbVKbVLbVMbVMbVNbVNbVObVPbVQeMAbUcbVRbVSbVTbVUeNvbRFbVWeNmeNxeNweNybVZeMkeNzeNAbWbbWceNBeNBeNCeNBeNBeNBeNDeMGbWfbWgbWhbWibWjbWkbWleNrbWmbWnbWobWpbWqbWnbWrbWsbWnbWtbWubKTeMceMcbWvbWwbWxacFbWybWzbWAeNEbWBbWCbWDbWEbWFbWGbWHbWIbWJbWKbWJbWLbWKbWKbWKbWMbWNbWObWPeNFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbQZbWRbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbWSbOjbOjbOjbWTbOjbOjbWUbXibWVbWWbWXbWYbWZcdgbXabXbbXcbXdbXeccZbXfbXgbXhccacepcepcepcepcfyceqcfCeNGbXjeNGeejbYLbXlbXmbXnbXobXpbXqbXrbXsbXtbXubXvbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXFbXFbXGckRbXIbXJbXKeNHeNHbXLeNHeNJeNIeNLeNKeNrbXPbXQbXRbXSbXRbXTbXUbXVbWneMcbXWeMceMcbXXbXYbSbbvqeKIeMtbXZeMteMtbYabYbbYcbYdbYebWKbYfbYgbYhbWDbYhbWDbYibWDbWDeMtbYjbYkbYleNMaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXbYobQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbYpbYqbYrbOjbYsbXibYtbYubYvbRlbYwcfUbYxbSybYybYzbYAcfUbYBbYCckUcgYcgYbYEbYFbYGbYHbYIciobYJbDgbYKeMAbZXbDgbDgeNOeNNbYNbYObYPbXsbYQbYRbYSbYTbYUbYVbYWbYXbYYbYVbYVbYZbZabZabZabZbbZabZcbZabZdbZebZfbZgbZhbZibZjbZkbZleNrbZmbZnbZobZpbZobZqbZrbXRbZsbZtbZubvqbZvbvqbXYbSbbvqeKIbZwbZxbZyeMteMteMteMteMtbZzbWDbZAbZBbYibWDbZCbWDbSdbWDbZDeMtbZEbZFbZGeMtaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbZHbZHbZHbZHbZHbZHbZIbQXbZJbZHbYobQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbZKbZLbZMbOjbYscjjcjjcjjcjjcjjcjjcblcblcblcblcblcblcblbZNbZObZPbZQbZRbZSbZTbZTbZUbZVciobDgbDgbZWedybXkbDgbDgbDgbZYbZZcaabXqcabeNPcacbZacadcaecafbLJcaecagbXFbXFbXFbXFbXFbXFcaebXFbXFbXFbLJcahcaicajcakcalcamcancaoeNrcapcaqbXRcarbXRcascatcaucavcawcaxcaybvqcazbXYbSbcaAeKIbyOcaBcaCcaDcDsbsabsaeMtcaEcaFcaGcaHcaIcaJcaKcaLckVcaNcaOeMtcaPcaQcaRcaSaacaacaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaacaTbQVbQVbQVbQVbQVbQVbQVcaUcgpbQXbQXbQXbQXcaVbQYbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbWSbWSbWSbOjbYsbWSaaaaaaaaaaaacjpcaWcaXcaYcaZcbacbbcikcbccbdcbecbfcbgcbhcbicbicbjcbkckycjWcjWcjWcjWckAcjWbDgbDgbUccbmcbncbocbpcbqcbrcalcbscbtcbucbvcbwcbxcbybXFbXFcbzeNQeNRcbCeNReNQeKQeNSeNTeNTeNUcbEeNVeNpcbFeNWeNrcbHcbIcbJcbKcbLcbMcbNeNreNreKIeNXeKIeKIeKIcbOcbPcbQeKIbsacaBcbRcbScDscDscDseMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbVhbVhbVhbVhbVhbVhcbTbQXbVgbVhcbUbQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbVaaaaabaabckBckBckBckBckBckBeHyckBbOjbWUclvaaaclCcnjcmFcobccbcccccdcceccfccgeNYcchcciccjcckcclccmccnccoccpccqckyccrccsccsccscctcjWbDgbDgeNZeNZeNZeNZeOaeNZccuccuccveNZeNZeObeNZeOdeOcccxccyccxeOecczccAccBcqAbrebreeOfccCccDccEeOgccFccGbVQeNreNreOheNrccHeNreOjeOieBmccKccLccMckWccNeOleOkeOneOmeOlbsacaBccPbsaccQeBAccSccTbsabsabsabsabsabsabsabsaccUccVeLVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXcbUbQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayabbgbbfbbfbbfbbfbbfbbfbbfaGiayaaySbbhbbibbjbbjbbjbbjbbjbbjcfvbbjbbjbbjaySaYpbblbbmaYrbbnaYxaYxbbobbpbbqbbrbboaYxaYxaYxbbsaYrbblaYvaZYaZXaZWaZZaZZbacbaaaZVaYMbbAbbBbbCbbDbbEbbFbbGbbHaSjcfwcgtaQqbXObXObXObbJbbKbbLbbMbbNbbNbbObbPbbNbbQbbNbbRbbSbbTbbUbbVbbWbXObXObXOaQqccIcgIaZaaSEaSEaPjbbYbavbaBbaxaXqbbZbcaaXqbcbbccbaCaXqaXtaZfaZfbcdbcebcfbcgbchbcibcjaZfbcJbaKbclaZqaZraZrbcmbcnbaNbTYaPvbcobLLbcpbcqbcraWnaWobcsaNRaNRbctaNRbcubcvaOebcwbcxbcyaZAaZAbczbcybcAaOebcBbaYaUQaUQaUQaUSaUQaUQbcCbcDbcEbcFbcGbcHaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIaabbdgaGeaDAbcKbbjbcLbcMbcNbcRbcPbcQbhlbcSbbjbcTbcUbcVbcWaYrbcXaYxaYxbbobbqbcYbbtbboaYxaYxbdabdbaYrbblaYvaZYaZYbbuaZYaZYaZYaZYaZYaYMbdcbbDbddbbDbdebbFaYNbdfaSjaSkaSkbdicgWbdubXObdjbalbdkbbNbbNaMIbdlbdpbdnbdpbdoeTDbdqbdmbdrbdsbdtbXObdvcgWbefbdwbdxaZaaSEaSEbauaXqbdyaXqaXqaXqbdzbdAaXqbcbbdBbaCaXqaXtaZfaZfbdCbdDbdEbdFbdGbdHbcjbdIbTYbdJbclaZqaZraZraZqbcnbdKbTYbdLchpbLLchqbLLbLLbdMaWobdNbdOaNRbdPbdQaRlbdRcfobdSbdTbdUbdVbdVbdWbdXbdYcfobdZbeaaUQbebaUQaUSaUQaUQbecbedbbcbbdbbdbeeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbeObegbehaERaZKbbjbcLbeibejbcLbekbelbembenbbjbeobepbeqberaYrbesbetbeubevbewbexbeybezbezbezbeAbeBaYrbblbcUbeDbeEbeFbblbblbeGberbbvaYMbeIbeJbeKbeLbeMbeNaYNbdfaSeaSeaSebeQbePbfibeRbeSbeTbbNbeUbeVbeWbeXbeYbeZbfabfbbfcbfdbfebeSbffbfgbfhbfkbfjbfIbflbfmbfnaSEbfoaPjaXqbfpbfqbaCaXqbfrbfsaXqbftbfubaCaXqaXtaZfaZfaZfaZgaZfbfvaZfbdHbcjbfwbTYbfxbclaZqaZraZraZqbcnbfybTYbfzbfAbOYbfBbfCbfDbfEbfFbfGbfGbfGbfGbfGbfGbfHbfLbfJaZAaZAaZAaZAaZAaZAbfKbgvbfMbaYaUQaUQaUQaUSaUQaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbfPbfQbfRbfSaZKbbjbfTbcLbfUbfUbfUbfVbcLbfWbbjbfXbfYbeqbfZbfZbfZbfZbgabfZbgbaYxbgcbgdbgebgebgfbggaYrbghbgibgjbgkbglbgmbgmbbwdIjbgobgpbgpbgpbgpbgpbgqaYMaYNbgrbgsbgtbgubgxchrbgBchsbgybeZbgzbgAcNxcNxcNxcNxbgIcNxdiMdiOdiNbgFbgzbgGbgHbXObgKchtbgRbgLbgMbgNaSEaSEbauaXqbgOaXqaXqaXqaLLaXqaXqbgPbgPbgQbgQbhaaZfaZfbgSbgTaZfaZfaZfbgUbgVbgWbTYbaNbclaZqaZqaZqaZqbcnaXEbTYbgXbgYbgYbgZbgYbhiaWnaWnaWnaWnbhbaWnaWnaWnbhcbgvaZAaZAaZAaZAaZAaZAaZAbfKbgvbfMbaYaUQaZDaZDaZEaZDaUQbhdaWDbhebhfbhgaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbhHbhjbehbhkaWHbjQbcLbhmbfUbfUbfUbfVbhmbcLbbjbhnbhobeqbfZbhpbhqbhrbhsbfZbbxbhubhvaYrbhwbhxbhybhzaYrbblbhAbhBbhBbhCbhBbhBbhBbhBbhDbhEbhEbhEbhFbhEbhGbiWbhJbhIbhKchuchuchuchuchuchucjcbhRcjccNxcNxbhLbhMbhNbhObhPbhQbhLdiPcNxcjVbiccjVcjVcjVcjVcjVcjVcjVbgNaSEaSEaPjbhSbhTaXqbhUaXqbhVaXqbhWbhXbhYbgQbhZbTcbiabibbTcbTcbidbjvbjvbjvbTcbTcbTYcgrbifbigbigbigbigbifbihbTYbiibgYbgYbgZbijbLLbikbilbimbinbiobipbiqbirbisaOebitaMvbiuaZAaZAbiuaMvbivaOebiwbaYaUQbaZbaZbbabaZaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbixaDwbiybizbiAbbjbeibeibeibcLbiBbiCbiDbiEbbjbiFbiGbeqbfZdHcbfZbiHbiIbfZbiJbiKbiLaYrbhwbhxbhybiMaYrbblbhAbhBbiNbiObiPbiQbiRbhBbiSbiTbiUbiVbiWbiWbiWbiWbiXbiYbiZchubVzbjbbjcbjdbjebjfbjgbjhcNxbjibhNbjjbjkbjlbjkbjjbhNbjmcNxbjnbjobjpbjqbjrbjsbjtaSAcjVbjybjwbjwcmhaPjaPjaPjaPjbjFbaubjFcmSaPjbSYaPjaPjbTcbTcbTcbTcbjAbjBbjBbjBbjBbjCbjDbTYcncbjGcncbkFbkFcncbjGcncbTYbiibgYbgYbjHbijbLLbLLbLLbLLbLLchqbLLbLLbLLbLLaOecndcnQcnecnecnecnecoLaOeaOebjJbjKaUQaUQaUQaUSaUQaUQbecbbbbjLbbdbbdbjMaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbehaySaySaySaySaySaySbjObjPbbjbbjbbjbbjbbjbbjccWbbjbbjbbjbjRbjRbjSbfZbjTbjUbiHbjVbfZbjWbjXbjWaYrbhwbhxbhybjYaYrbblbhAbhBbjZbkabkbbiQbkbbhBbiSbkcbkdbkebkfbkgbkhbiWbkibkjbiZcoMbklbkmbknbkobkobknbkpbkqcNxbkrbhNbhNbksbktbjkbjjbhNbkudiNbkvbkwbkxbkybkzbkAbkxbkBcjVbkCbkDbkEbkHbkGblhbkIbkJbkJbkJbkJbkJbkJbkKbkLbkMbkNbkJbkObkJbkJbkJbkJbkJbkJbkJbkJbkPbkQbkRbkRbkRbkRbkRbkRbkSblhbkTbkUbkUbkVbkWbkXbkWbkYbkWbkZblablbbkWblcbldbleblfblgblgblgblgblgblgblgblsblibljbljbljbljblkbljbllblmblnbloblpbcGblqaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaaaabbmkaGebltblublvblwblwblwblwblwblxblyblzblAblBblCbjSbfZbfZbfZblDbiIbfZaYraYraYraYrbhwblEblFblGaYrblHblIbhBblJblKbiQbkbblLbhBbiSblMbkdbkebkeblNblObiWblPbkjbiZcoNblRblSblTblUblVblWbkpblXcNxblYbksbhNblZbmablZbhNbksbmbdiPbmcbkxbkxbkybmdbkAbkxbmecjVbmfbkEbkEbkHbkGblhbkJbkJbkJbkJbkJbkJbkJbmgbkJbkJbkJbkJbkJbkJbmhbmibmibmibmibmibmibmibmibmibmibmibmibmibmibmjbmobmlblgblgbmmbgYbgYbgYbgYbgYbgZbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbmnbgYbmrbmpaUQaUQaUQaUQaUQaUQaUQbmqbedbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbeObegbntbmsbmtbmubmubmubmvbmubmueIGbmweNcberberberbXHbfZbhpbmxbmybjVbfZbmzbmAbmzaYraYraYraYrbmBaYrbmCbhAbhBbmDbmEbkbbmFbmGbhBbiSbiWbmHbkebkebkebmIbiWbmJbkjbiZcoObmLblSblTbmMbmNblWbkpbmOcNxbmPbmQbhNbmRbmSbmTbjjbmUbmVdiQbmXbmYbmZbnabnbbncbkxbndcjVbnebnfbkEbkHbkGblhbkJbngbkJbkJbkJbkJbnhbnibnibnibnibnjbkJbkJbkJbkJbnkbkJbngbnlbkJbnmbnnbnobkJbnpbnqbnqbnrbnsbnAbnubgYbgYbgYbgYbgYbgYbgYbnvbnwbnxbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbnybnzbnzboobnBbnCbnDbnEbnEbnEbnEbnFbnGbnHaabaaaaaaaabaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbnIbnJbnKbnLbnMbmubnNbnObnPbnPbnQeJnbnSbnTbnUbnUbnVbnWbfZbfZbfZbiHbnXdHcberberberberbnYbblbblbnZbgmboabobbocbodboebofbogbohbhBboibiWbojbkebkebkebokbolbombkjbonchudwtbopbknbknbknbknbkpboqcNxdiRdiScNxcNxcNxcNxcNxcNxcNxdiPcjVbosbotboubovbowboxboycjVboAbozbozcpTcpTcpTcpTcpTcpTcpTcqxcqxcrkcqBboDboDcqBcrkcqxcqxcrtcrtcrtcrtcrtcrtcswcswboEcswcswcswcswcswctpboFcvyboGbgYbgYboHboHcxOcxOcxOcxOcxOboIbnzbnzbnybnzbgYbnzbnzbnzbnzboJcxQcxQcxQcxQboKcxYcxYcxYcxYcxYcxYcxYcxYcxYaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbhHbhjbntbmsboLbmuboMbmuboNboObmueIGeIGaZSboPboQboQboRbfZbhpboSbiHboTdHcboUboVboWboXboYboZboZbpaboZbpbbpcbhBbpdbpecaMbpfbpgbocbphbiWbpibkebkebpjbpkbplbombkjbpmchubpnbpobppbpqaWSbpsbptchuchubpuczkbpvbpwbpxbpwbpyczkaaaczEcjVbpzbpAbpBbpCbowbkxbpDcjVbpEbpFbpGcpTbpKbpIbwpbpJbpLcAgbpNbpObpPbpQbpRbpRbpQbpSbpTbpUcrtbpVbpWbpXbpYcrtbpZbqabqbbqcbqdbqebqebqfctpbqgcBocAMbprcAMbqhbqhcxObqjbqkbqlcxObqibqnbqicxObqobnzboJcxQbqqbqWbqqcxQbqrbqscxQbqtbqubqvcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaabqwaTzbqxbizbqybmubqzbmubqAbqBbqCbqDbmubqEbqFbqGbqHboRbfZbfZbfZbfZbfZbfZbqIbqJbqKbqLbqMbhBbhBbhBbhBbhBbhBbhBbqNbhBbhBbhBbqObhBbqPbqQbqRbkebkebkebqSbolbqTbkjbqUchubqVbpocjccjccjcchubrschubqXbqYcDXbqZbrabrbbrcbrdcDYbrebrfcjVbrgbkxbrhbribowbrjbkxcjVbrkbrlbrmcpTbKXbrobrpbrqbrrbscbrtbpRbpRbpRbpRbpRbpRbpRbrubrvcDZbrxbrybrzbrAcrtbrBbrCbrDbrEbrFbrGbrCbqfctpbrHcBobrIbrJbrKbrLbrLcEFbrMbrNbrObrPbrQbrRbrScxOcFEbrTcGWcxQbrUbGybrWbrXbrXbrYcxQbrZbsabsbcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbhjbbfbbfbbfbsdbbfbtjaERbsebsfbmubsgbshbsibsjbskbslbsmbcWbblbblbblbsnbnUbnUbnUbnUbnUbnUbsobspbspbsqbsrbhBbssbstbsubsvbswbsxbsybszbhBbsBbsCbsDbphbolbqRbkebkebsEbiWbiWbsFbsGbsHcGXbsIbsJbsKbsLcIWbsMbsNcJFbsObsPcDYbsQbsRbsQbsRbsScDYbrebsTdjnbsUbsVbsWbsXbsYbsZbtadjnbtbbpFbpFcpTchFbtdbtebtfbSXcpTbrtbpRbpRbpRbpRbpRbpRbpRbthbtibtybtkbtlbrxbtmcrtbtnbtobtpbrEbqfbrGbtqbtrctpbtseKcbtubtvbtvbtwbtxbtNbtzbtAbtAbtAbtBbtAbtCeKdbtEbtFbtGeKebtHbtIbtJbtJbtJcifcxQbtLbsabtMcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabujbtObtPbtQbtRbtSbtSbtTbtUaDybmubtVbtWbsjbtXbmubmubmuberbtYbtZbuabubbuabuabuabubbuaberberbhBbhBbhBbucbhBbudbudbudbudbudbudbsybuebufbugbuhbuibuqbukbulbumbunbuobupbvFburbusbutbuubuvbuvbuwbuxeKfbuybuzeKgbuAbuBczkbuCbrcbuDbrabuEczkaaabuFeKheKibuGeKheKheKheKhbuHcjVbuIbpFbuJeKjbRKbuLbuMbuNbRJcpTbuPbuQbuRbuSbuTbuUbuVbuWbrubuXcrtbUjbtlbuZbvacrtbvbbvcbrDbrEbqfbrGbrCbqfctpbrHcBobvdbvebvfbvgbvheKkbvibvjbvkbvlbvmbvnbvocxObvpbvqbvrcxQbvsbvtbvubrXbvvbRLcxQbtLbsaciNcDsaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabujbvybvzbvAaDxaDxbvBbvCaDxbvDbmubvEbvGbvJbvHbmuaaaaaaaaaaabaabbvIbvIbvIbvIbvIbvIbvIaaaaaabvQbvKbvLbvMbvNbudbudbudbudbudbudbvObvPbvVbvRbvSbvTbvUbvWbiWbiWbvYbiWbiWbiWbwabvZbwceKlbwbeKmeKmeKneKmeKobxoeKpbwdbuBczkbwebpwbpwbpwbwfczkaaabuFeKhbwgbwhbwibwjbwkeKqbwleKrbwmbpFbwncpTbpKbwociLbwqbuYeKsbwtbwubwvbwwbwxbwybwzbwAbwBbwCeKtbwDbtlbwEbwFcrtbwGbwHbwIbwJbwKbwLbwMbqfctpbwNeKubwPbwQbwQbwRbwSeKvbwUbwVbwWbwXbwYbwZbxacxObxbbvqbxccxQbxdbxebxfbrXbrXbNMcxQbrZbsabxhcDsaaaaaaaaaaaaaabbxibxjbxkbxjbxkbxjbxlaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxmaDwbxnbxnbxpbbfbxqaGbayabxtbxqbmubxrbxsbxvbxubmuaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaabxCbxwbudbxxbxybxybxybxybxybxzbxAbxybxBbxWbxDbxEbxFbxGbxHbiWbxIbkebxJbxKbxLbxMbxNbxOeKleKleKpbxPbxQbxRbxSbxTeKpbpubuBczkbxUbxVbyWbxXbxYczkaaabxZeKhbyabybbyceKwbydeKwbyeeKxciPbpFbygcpTeKzeKyeKAbyjeKCeKBbylbymbynbyobypbypbyqbyrbysbytcrtbwDbyubyvcrtcrtcsweKDeKFeKEcswctpctpctpeKGbyycBobyzbvebvfbyAbwQeKHbyCbyDbyDbyEbrObyFbyGeKJeKIbrTeKKcxQbyJbyKbrXbyLbyMbNLcxQbtLbyOcDscDsaaaaaaaaaaaaaabbyPbyQbyRbySbySbyTbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbyXbzhbyYbFbbyZbzabzbbzbbzbbyZbudbsybuebudbudbufbzcbzdbzebzfbzgbzmbzibkebkebzjbzkbxMbxNbzlbABbznbzobzpbzqbzrbzsciQeKpbzubzvcDXbzwbzxbzybzzbzAcDYbrebzBeKhbzCbzDbzEeKwbzFeKwbzGeKxbzHbpFbzIcpTbzJbzKbzLbzMbzNeKLbzObzPeKMeKMeKNbzReKMeKMbzSbzTeKPeKObzUbzVbzWbzXbzYbzZbAabAbbAceKQbAdbAebAfbAgcBobAhbAibAjbAkbAlcEFbAmbyDbyDbAnbAobyFbApcxObAqbAqbArcxQbAsbAtbAubAvbrXbyNcxQbtLbAxcDsaaaaaaaaaaaaaaaaabbAybAzbyRbySbyRbAAbxkaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbAMbACbAMbADeHueHveHueHueHueHubAEbsybuebAFbhBbhBbAGbkebuhbzfbAHbAIbAJbAKbAKbALbBtbANbAObAPeKRbARbASbATbAUbAVbAWbAXeKpbwdbuBczkbAYbAZbBabBbbBcczkaaabxZeKSeKTeKSeKSeKSeKSeKSbBdeKSbBebpFbzIcpTbCFbBgbBgbBhbBieKBbBjbBkeKUbBmbBnbBobBpeKUbBqbBrbBsbBQbBubBvbBwbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBHbBIbBIbBJbBKbBLcEFciTbrObrObBNbBObyFbBPbBSbBRbBUbBTeKVbBWeKXeKWbCceKYcxQcxQbBXeKIeKIeKZeLaeLaeLaeLbeKIbyPbySbyRbySbySbCbbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbClbCdbClbCebudbzabzbbzbbzbbudbudbsybuebCfbCgbhBbChbkebuhbzfbCibCjbCkbkeblNbkebCVbxMbpFbCmeLcbARbCnbCobCpbCqbCrbCseLdeLfeLeeLgeLgbCubCvbCwczkczkaaabxZeKSbCxbCybCzbCAbCBbCCbCDeLhbCEbpFbzIeKsbBfbCGbCHbCIbCJeKBbCKbCLbCMbCNbCObCPbCQbCRbCSbCTbCUbDAbCWbCXbCYciWbDabDbbDcbDdbDeeKQbDfbDgbDhbDicAMbDjbDkbDlbDmbDmcEFbDnbDobDpcEFbDqbyFbDrcEFbDsbDtbDubDvbDwbDxbDybDzbDCbDBbDFbDDbDEbDObDGbDGbDHbDIbDJbDPbDLbxjbxkbDMbxkbxjbDNaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbDVbzhbEfbDQbudbzabudbudbudbudbudbsybuebCfbDRbhBbFnbkebDTbDUbkebEobkdbkebkebdhbxLbxMbpFbCmeLcbAReKpbDXbDYbDZbEabEbeLjbEcbEdbEeeLkcDYbEEeLlcDYbrebrebEheKSbEibEjbEkbElbEmbEmbEnbENbEpbpFbEqcpTeKBbEreLneLmbEteKBbCKbEueLobEvbEwbExbEyeLobCKbEzbEAeLpeLpeLpeLqeLpeLreLrbEBeLseLueLteLtbECeLueLueLteLteLweLveLweLwcEFcEFcEFcEFcEFeLxbESeLycEFbEGbEHbEIbEJbEJbEKbELbEMbFtbEObEPbEQbERbFKbETbETbEUbDwbEVeKIbGhbGWbGDbEZeKIbFaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbClbCdbClbFbbFcbFdbudbudbudbFcbudbsybuebCfbFebhBbFfbkebuhbzfbkebolbFgbkebkebFhbzkbxMbpFbFieLCbFkeKpbFlbFmeHrbFobFpeLjbFqbFrbFsbHsbFubFvbFweLDaaaaaaaaaeKSbFxbFybFzbFzbFAbFBbFCeKSbFDbFEbzIbFFbFGbFHbFIbFJbHPbFLbFMbCLeLEbFNbFObFPbFQeLEbCKbEzbFRbFSbFTbFUbFVbKHeLrbFXbFYbFZeLubGabGbbGcbKIbGebGfbIlbDBbIobEJbEJbGibGjbEJbGkbGlbGmbGnbGobEJbGpbGqbGreLHeLGeLJeLIeLKeLIeLIeLIbBXeKIeKIeKZeLbeKIbGvbGwbGxbrVbGzbGAbGBbIpaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbIqbGEbIqbGFbGGbGHbGHbGHbGHbGHbGIbGJbGKbCfbGLbhBbGMbGNbGObGPbGQeLNeLMeLPeLObIybIybGUbpFbGVbIrbAReKpbGXbGYbGZbDYbHaeLjbHbbHcbHdeLQbHebzybHfeLDaaaaaaaaaeKSbHgbHhbHibHjbFAbFBbFCeKSbHkbHlbHmbHnbHobHpbHqbHrbIsbHtbHubHveLoeLoeLRbHxeLoeLobCKbEzbHybHzbHAbHBbHCbHDeLrbHEbHFbHGeLSbHIbHJbHKbHKbHLbHMbItbHObIubDwbDwbHQbDwbHRbDwbHSbDwbHTbHUbHUbHVbHWbHXeLUbJobJhbIbbIcbIdbIeeLIbIfeLVaaaaaaaaaeKIbIhbIibIjbIkbIvbImbIneKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbIxbIIbIFbhBbhBbIJbzhbzhbzhbIMbhBbhBbIRbJjbJibhBbIwbIwbIwbJLbIwbIybIzbIAbIBbICbIybxMbpFbIDbvXbvXeKpeKpeKpeKpeKpbIEeLjeLgeLeeLXeLWeLYbJNeLDeLDczkczkczkeKSeKTeKSeKSeKSeKSeKSeKSeKSbIGbpFbIHeLZbUcbKdbKrbUcbUccjIbIKbILbKwbINbIObIPbIQbLIbFMbISbITbIUbIVbIWbIXbIYbIZbJabJbbJceMabJebJfbJgbGcbHZeLteLtbKJbKJbKJbKJbMgbKJbKJbKJeMbbMOeMceMcbJkbJlbJmbJneLUbIabJpbJqbJrbJsbJteLIbIfeMdaaaaaaaaaeKIbJvbJweKIbDPeKIeKIbDPeKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJxaabaaaaaaaaaaaabIwbJybJzbJAbJBbIybJCbJDbJEbJFbIybxMbpFbJGbJHbJIbJJbJKbMQbJMbNabJObJPbJQbJRbJSbJTbJUbJVbJWbJXbJYbJZbKabKbbKcbNcbKebozbKfbpFbKgbKhbKibpFbKjbUcbKkbKlbKmbKnbKobCKbKpbKqbNWbKsbKtbKubKvbNXbKxbKybKzeLpbKAbHBbKBbKCeMebKEbKFbKGeLubGdbGcbGcbGcbFWeLtbKJbKKbKLbMhbNCbNDbKPbKQbKJbKRbKSbKTeMceMcbKUbJmbKVeMfbAwbKYbKZbLabLbbLceLIbLdcDsaaaaaaaaaeKIeKIeKIeKIaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIwbLebLfbLgbLhbLibLjbLkbLlbLmbIybxMbLnbLobpFbpFbzIbLpbozbKebNcbLqbLrbLqbLsbLtbLtbLubLvbLwbLtbLtbLxbLtbLybLtbNcbKebozbLzbLAbLBbLCbLDbLEbpFbUcbLFbKlbLGbLHbNYbCKbLJbLKeMheMgeMibLOeMkeMjbCKbLRbLSeLpbLTbLUbLUbLVeMlbLWbLXbLYeLubLZbMabGcbMbbMceLtbKJbMdbMebMfbOrbKNbKMbMjbKJbMkbKSbMlbMleMcbMmbMnbMobMpbMqbMrbMsbMtbMubMveLIbIfcDsbMwaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaabMxbMybMzbMybMAaaaaaaaaabIwbIwbMBbMCbLgbMDbMEbMFbJEbMGbMHbIybxMbMIbMJbMKbMLbMMbMNbOvbMPbOwbMRbMSbMTbMUbMVbMVbMWbMXbMXbMXbMXbMXbMXbMYbMZbOybNbbOzbNdbMLbNebNfbNgbNhbNibUcbNjbKlbKmbNkbNYbCKbLJbLKeMmbNmbNnbNobNpeMnbCSbNrbNseLpeLpeMoeMpeLpeMleLreMreMqeLubNvbNwbNxbNybNzeLtbKJbNAbNBbMhbKObMibNEbNFbKJbNGbKSbMlbMleMcbNHbNIbNJeMsbNKbtcbtgbNNbNObNPeLIbIfeMteMueMteMweMveMweMweMwaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbNTbNUbNVbNSbOZbPkbPabIwbNZbOabObbOcbOdbOebOfbOgbOgbOhbIybOibOjbOkbXibXibOlbOmbOnbXicblcblbOobOpbOqcblcblbPZbNcbNceMxeMyeMyeMyeMzbOteMyeMyeMAbOueMBeMBbRpeMBbRqeMCeMBeMDbRrbREbUceMEbOBbLJbOCeMFbODbOEbOFbOGeMFbCKbLRbOHeMGbOIbOJbOKbOLbOMbONeMHbOObOPbOQbORbOSbOTbOUeLtbKJbKJbKJbKJbKJbKJbKJbKJbKJbOVbOWbOXbOXeMcbSlbUdbTLeLIeLIeLIeLIeLIeLIeLIeLIbIfeMtbPbbPceMIbPebPebPfeMwaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeMKeMJeMJeMLeMMeMMbQZbQZbQZbQZeMNaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPibPjbPibMzbUebPlbPmbPnbPobPpbPqbPrbPsbIybPtbPubPvbPwbIybOjbOjbPxbXibPybPzbPAbPBbPCcblbPDbPEbPFbPGbPHcblbPIbPJbPKeMybPLbPMbPNbPObPPbPQbPReMObPTeMPbPUbPVbPWbPXbPYbUfbQabQbbQcbQdbQebQfbQgbLKbQhbQibQjbQkbQlbQmbCSbQnbQobQpbQqbOKbQrbQrbQsbQteLubQubQvbQwbQxbQybQzbQAeLtbQBbQCbQDbQEbQDbQDbQFeMReMQbQGbQHbQIbQJeMcbQKbQLbJneKIbsabQMbQNbQObQObQNbQObQPeMtbQQbQReMIbPebQSbQTeMwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeMSbQVbQWbQVeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbPibPibPibRabRbbMCbRcbRdbRebMCbPqbRfbRgbIybIybIybIybIybIybRhbOjbRicbXbRmbRkbRkbRkbRocbldrybRnbRnbRnduveMTbUJbUCbUNeMUbRsbRtbRubRvbRwbRxeMyeMAbRyeMBbRzbRAbRBbRCbRDeMBbLFbKmbLGbLHbVmbRFbRGbRHeMVbRIbwrbvwbuKeMFbRMbRNbROeMWbRPbRQbRRbRSbRTbRUeLueLueLueLueLueMXeMZeMYeLtbRVbQDbQDbRWbQDbRXbRYeNbeNabRZbKSbSabSaeMcbJlbSbbJneKIeMtbcZeMteMteMteMteMteMteMtbSdbSeeMwbSfbSgbSheMwaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSibQVbQVbSjbQZbQZbQXbQXbSkbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPjbPjbPjbMzbVnbSmbSnbSobSpbMCbSqbSrbSsbStbSubSubSubSvbOjbOjbOjbPxbXibRlbRkbSwbRkbSxcblbSybRnbSzbRnbSAcblbSBbSCbSDeMybSEbSFbSGbSHbSIbSJeNdbSKbSLeNebSMbSNbSObSPbSQeMBbNjbKmbKmbSRbVmbRFbSSbSTeNfbQibSVbSWbxgeNgbSZbTabTbeNhbTdbTebTfbTfbQrbTgeMGbThbTibTjbTkbTlbTmbTneNbbRVbTobQDbQDbQDbTpbTqeNbeNabTrbKSbSabSaeMcbTsbTtbJneKIbTubTvbTweMtbTxbTybTzbTAbTBbTCbTDeMwbTEbTFbTGeMweMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaeNibQZbSibQZbQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaabNSbTIbTJbTKbNSbVobPkbPabIwbIwbTMbTMbTMbIwbIwbOjbTNbTNbTObTPbOjbTQbTRbXibRlbRkbRkbRkbTScblbSybRnbRnbTTbTUeNjbTVbTWbTXeMyeMyeMyeMyeMyeNkeMyeMybTZbUaeMBeMBeNleMBeMCeMBeMBbUcbWbbWbbUcbUcbWcbWMeNmeNnbUibuObUkbUleNoeNpbUnbTbeNqbUpbUqbUrbUsbUtbUueMGbUvbUwbUxbUybUzbUAbUBeNrbXteNrbUDbUEbUFeNreNseNreNrbUGbUHbSabSaeMcbUIbSbbJnbXWbUKbULbUMbYQbUObUPbUPbUQbURbUSbUTbUUbUVbUWbUXbUYbUZbVabVbeNtbVcbVdbVeeNuaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaeMMbQZbVgbVhbVhbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVibMybVjbMybVkbVlaabaaaaaabIwbZtbZebZQbIwaaabOjbVpbVqbVrbVsbSubVtbVvbXibVwbVxbVybRkcjPccZcjQbVAbVBbVCbVDcblbVEbVFbVGbVHbVIbVIbVIbVIbVJbVKbVLbVMbVMbVNbVNbVObVPbVQeMAbUcbVRbVSbVTbVUeNvbRFbVWeNmeNxeNweNybVZeMkeNzeNAcahcaveNBeNBeNCeNBeNBeNBeNDeMGbWfbWgbWhbWibWjbWkbWleNrbWmbWnbWobWpbWqbWnbWrbWsbWnbWtbWubKTeMceMcbWvbWwbWxacFbWybWzbWAeNEbWBbWCbWDbWEbWFbWGbWHbWIbWJbWKbWJbWLbWKbWKbWKcawbWNbWObWPeNFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbQZbWRbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbWSbOjbOjbOjbWTbOjbOjbWUbXibWVbWWbWXbWYbWZcdgbXabXbbXcbXdbXeccZbXfbXgbXhccacepcepcepcepcfyceqcfCeNGbXjeNGeejbYLbXlbXmbXnbXobXpbXqbXrbXscbcbXubXvbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXFbXFbXGckRbXIbXJbXKeNHeNHbXLeNHeNJeNIeNLeNKeNrbXPbXQbXRbXSbXRbXTbXUbXVbWneMccbdeMceMcbXXbXYbSbbvqeKIeMtbXZeMteMtbYabYbbYcbYdbYebWKbYfbYgbYhbWDbYhbWDbYibWDbWDeMtbYjbYkbYleNMaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXbYobQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbYpbYqbYrbOjbYsbXibYtbYubYvbRlbYwcfUbYxbSybYybYzbYAcfUbYBbYCckUcgYcgYbYEbYFbYGbYHbYIciobYJbDgbYKeMAbZXbDgbDgeNOeNNbYNbYObYPbXscbebYRbYSbYTbYUbYVbYWbYXbYYbYVbYVbYZbZabZabZabZbbZabZcbZabZdcckbZfbZgbZhbZibZjbZkbZleNrbZmbZnbZobZpbZobZqbZrbXRbZscezbZubvqbZvbvqbXYbSbbvqeKIbZwbZxbZyeMteMteMteMteMtbZzbWDbZAbZBbYibWDbZCbWDbSdbWDbZDeMtbZEbZFbZGeMtaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbZHbZHbZHbZHbZHbZHbZIbQXbZJbZHbYobQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbZKbZLbZMbOjbYscjjcjjcjjcjjcjjcjjcblcblcblcblcblcblcblbZNbZObZPceEbZRbZSbZTbZTbZUbZVciobDgbDgbZWedybXkbDgbDgbDgbZYbZZcaabXqcabeNPcacbZacadcaecafbLJcaecagbXFbXFbXFbXFbXFbXFcaebXFbXFbXFbLJcfpcaicajcakcalcamcancaoeNrcapcaqbXRcarbXRcascatcaucfqcfrcaxcaybvqcazbXYbSbcaAeKIbyOcaBcaCcaDcDsbsabsaeMtcaEcaFcaGcaHcaIcaJcaKcaLckVcaNcaOeMtcaPcaQcaRcaSaacaacaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaacaTbQVbQVbQVbQVbQVbQVbQVcaUcgpbQXbQXbQXbQXcaVbQYbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbWSbWSbWSbOjbYsbWSaaaaaaaaaaaacjpcaWcaXcaYcaZcbacbbcikcgucfQcgVcbfcbgcbhcbicbicbjcbkckycjWcjWcjWcjWckAcjWbDgbDgbUccbmcbncbocbpcbqcbrcalcbscbtcbucbvcbwcbxcbybXFbXFcbzeNQeNRcbCeNReNQeKQeNSeNTeNTeNUcbEeNVeNpcbFeNWeNrcbHcbIcbJcbKcbLcbMcbNeNreNreKIeNXeKIeKIeKIcbOcbPcbQeKIbsacaBcbRcbScDscDscDseMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbVhbVhbVhbVhbVhbVhcbTbQXbVgbVhcbUbQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbVaaaaabaabckBckBckBckBckBckBeHyckBbOjbWUclvaaaclCcnjcmFcobccbcccccdcceccfccgeNYcchcciccjciscclccmccnccoccpccqckyccrccsccsccscctcjWbDgbDgeNZeNZeNZeNZeOaeNZccuccuccveNZeNZeObeNZeOdeOcccxccyccxeOecczccAccBcqAbrebreeOfccCccDccEeOgccFccGbVQeNreNreOheNrccHeNreOjeOieBmccKccLccMckWccNeOleOkcjKeOmeOlbsacaBccPbsaccQeBAccSccTbsabsabsabsabsabsabsabsaccUccVeLVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXcbUbQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccXccYccYccYcovcfAcdacdbcdccddcdeeHFcdfbWUcqkaaacqXcdhcdicrccdkccccdlcdmcdncdocikcdpbYCbTWcbfcdqbZTcdrbZTcdscdtcducdvcdwcdwcdwcdxcjWbDgbDgeNZcdycdzcdAcdBcdCcdDcdDcdEcdFcdGcdHcdIcdJeOocdKbXJbXJeOpcdLcdMcdNeOqaaaaaaeOgcdOcdPcdQeOfcdRcdScdTcdUcdUcdVbBDcdWcdXcdYcdZcdXcdXcdXceacdXcdXcebceccedceecefcegcehceibQOcejciIbQObQObQObQOcekcelbQObQObQObQOcembsaeOraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZbQZbWRbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceocricricricricrjcercescetceuceucevcoYcewbYscqkaaacqXcexceycezceAceBceCceDceAceAceEceFceGceHcCLcCLceIceJbZTceKceLceMcdwcdwcdwcdwceNcjWbDgbDgeNZceOcePceQceRceSceTceTceUceVceWceXceYceZeNZcfabXFcfbeKQcfccdMcfdeOqaaaaaaeOgcfecffcfgeOgbDhcfhcficficficficficficfjcfkcflcfmePiePicgscgzePicgycfpcfqcfrcgxcgqcgvcgwcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqbsacfxbsaeMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeNibQZbQZbZHbZHbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRcfzcsocfBcsocfEcfDcgQcfFcfFcfGcoYcgTbWUcqkaaacqXcfIcfJctfcfKccccfLcfMcfNcfOcikcdpbYCbYDcfPcgYcfQeOCcfRcfScfTcukcfVcdwcdwcfWcfXcjWbDgcfYeNZcfZcgacgbcgccgccgccgdcgecgccgccgfcgbcggeODcghbXFcgieKQcgjcdMcgkeOqaaaaaaeOgcglcgmcgneOgcgobDgcfYeOEeOEeOEeOEeOEcgBcgDeOGeOEeOEaaaaaaaaaaaaeOleOJcgueOKcgqchHchDchEbrnchGcgqchAchBchCcgEcgxcgCbpHcgKcgqcgFcgGcgHeOLcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgAcgLbQZbSibQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaacrRcgMcgNcgOcgPcetchYcetcgRcetcgScuPcgUcigcvjaaacxIcnjcyCcobcgZccccccchachbchceOMchdchechfchgcgYchhchichjchkchlckychmcdwcdwcdwchncjWbDgbDgeONeONeOOchoeOPeOReOQeONeOSeOUeOTchveOVeOOeOWcfabXFcfbeKQchwcdMcdNeOqaaaaaaeOgchxchychzeOgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachMchLchOchNeOweOAeOIeOIeQIeQHeQMeQJdsbeQPeOxeOybpHeOucrzeOXeOXchSeOYeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZchTchUchVbQZbQZbQXbQXchWbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRchXcsochZcsociacibcidciccgQckXcoYcjfbWUbWSaaaaaaaaaaaacjpcihciibgnbgncikcilcikcimbYCbTWcineOZcipciqcircircirciscitcdwciucdwcivcjWbDgbDgeONciwcixciycizciAciBeONciAciBcizciCciDciEeOWcghciFcgieKQckYcdMciGeOqeOEeOEeOgeOgeOgeOgeOgciHbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIcoTchKchJcnWcuIcwWcvGcyYcuJchCdKCdsbdsbcrAcsDbpHctrcrzeOXciZcjacjbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePacjdcjebSjeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceocricricricricrjcercescetceuceucevcoYcewbYscqkaaacqXcexceyckzceAceBceCceDceAceAckQceFceGceHcCLcCLceIceJbZTceKceLceMcdwcdwcdwcdwceNcjWbDgbDgeNZceOcePceQceRceSceTceTceUceVceWceXceYceZeNZcfabXFcfbeKQcfccdMcfdeOqaaaaaaeOgcfecffcfgeOgbDhcfhcficficficficficficfjcfkcflcfmePiePicgscgzePicgyclmcnhcmrcgxcgqcgvcgwcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqbsacfxbsaeMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeNibQZbQZbZHbZHbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRcfzcsocfBcsocfEcfDcgQcfFcfFcfGcoYcgTbWUcqkaaacqXcfIcfJctfcfKccccfLcfMcfNcfOcikcdpbYCbYDcfPcgYcnqeOCcfRcfScfTcukcfVcdwcdwcfWcfXcjWbDgcfYeNZcfZcgacgbcgccgccgccgdcgecgccgccgfcgbcggeODcghbXFcgieKQcgjcdMcgkeOqaaaaaaeOgcglcgmcgneOgcgobDgcfYeOEeOEeOEeOEeOEcgBcgDeOGeOEeOEaaaaaaaaaaaaeOleOJcnWeOKcgqchHchDchEbrnchGcgqchAchBchCcgEcgxcgCbpHcgKcgqcgFcgGcgHeOLcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgAcgLbQZbSibQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaacrRcgMcgNcgOcgPcetchYcetcgRcetcgScoVcgUcigcvjaaacxIcnjcyCcobcgZccccccchachbchceOMchdchechfchgcgYchhchichjchkchlckychmcdwcdwcdwchncjWbDgbDgeONeONeOOchoeOPeOReOQeONeOSeOUeOTchveOVeOOeOWcfabXFcfbeKQchwcdMcdNeOqaaaaaaeOgchxchychzeOgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachMchLchOchNeOweOAeOIeOIeQIeQHeQMeQJdsbeQPeOxeOybpHeOucrzeOXeOXchSeOYeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZchTchUchVbQZbQZbQXbQXchWbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRchXcsochZcsociacibcidciccgQckXcoYcjfbWUbWSaaaaaaaaaaaacjpcihciibgnbgncikcilcikcimbYCbTWcineOZcipciqcircircircpicitcdwciucdwcivcjWbDgbDgeONciwcixciycizciAciBeONciAciBcizciCciDciEeOWcghciFcgieKQckYcdMciGeOqeOEeOEeOgeOgeOgeOgeOgciHbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIcoTchKchJcpscuIcwWcvGcyYcuJchCdKCdsbdsbcrAcsDbpHctrcrzeOXciZcjacjbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePacjdcjebSjeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOabAcABcABcABcABcABcABcABcABcAIcAIcAIcAIcAIckBcoYcoYcoYcoYcoYcoYcjgeHwcgXcgXcgXcgXcgXcjpcikcikcikcikcikcikcikcjhbYCbTWcjiePbcjkcjlcjmcjncjocAXcjqcjrcjscjtcjucjWbDgbDgeONcjvcjwciycizcizcjxeONcjycizcizciCciycjzeOWeKQeKQeKQePccjAcdMcjBeOqcjCbDgbDgbDgbDgcjDbDgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachQcjGeQYchPciUeRgeRkeRjeRneRmcgEdsbdsbdsbeReeRfbpHbpHcrzeOXcjScjTcjUeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePdeMJeMJeMLeMMeMMbQZbQZbQZbQZeMNaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXcjYcjZckackackbckgckhckiclgclhckeckfckjckjckjckkcklckmckncknckockpckqckrcksckrckrckrckqckrckrcktckuckvckwbYCbTWckxePeckzcCccgYcDEcCLcDGcDFcDJcDIcDLcDKcDNbDgbDgeONckCckDckEckFckGckHeONckIckGckJckKckEckLeOWbDgbDgbDgckMchwcdMchwckNbDgbDgbDgbDgbDgbDgbDgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePfeOlckQeOmePfeQSeRdeRceQZeQXeQVeQWeQVeQTeQQcgxbpHbpHeQReOXckZclaclbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXclccldclecldclfcqfcmscmtcllclkcllclmclnclnclnclnbYCbTXbTXbTXclncloclnclnclnclnclnclnclnclnclnclnclpclqclrclscltcluePgclwclxcGIclyclzclAclBcHKclDclEclFcHLcficlGePhcjLclIclJclKcizclLeONclHcizclKclMciyclNeOWclOePiePiePjclPclQclReOqePkeOHeOHePleOEeOEeOEeOFeOHeOGeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlclWclXclYeOleRWeRIeRHeRKeRJeRNeRMeRVeRTeRYcgxbpHbpHcrzeOXePmcmgePoePnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcmicldcmjcmkcmlcmmcmpclicljcmncmocmqcmrcmucmvcmwcmwcmxccacmyccacmucmzcmucmucmucmucmucmucmucmucmucmucmAclncmBcmCcmDcmEcHPcmGcmHcmIcmJcmKcmLcmMcmNcmOcmPcmQcDIbXlcmRePpcmTcizciycizcizcmUePqcmVcizcizciCciycmWeOWcmXeOEaaaePreOqcmYeOqeOqaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcmZcnacnbeOleRveRreRqeRpeRoeRueRtbpHeRsbpHciOeRyeRDeRxeOXePvcnfePvaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOabAcABcABcABcABcABcABeSEeSNeSNeSMclleSOcABcgXcngcolcolcnhcolcnicolcolcIdcIecolcolcIfcIgcIecolcolcolcolcnkcnlcnmcnncnocnpcnqcnrcnscnrcnrcntcnrcnucnvcnwcnxcnycDNbDgcmXePwcnzcnAcnBcnCcnDcnEeONcnFcnDcnGciCcnHcnIeOWcmXeOEaaaePrcnJcnKcnLeOqaaaaaaaaaaaacnMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlcnNcnOcnPePxcnReRlcnTePycnUeRSeRReOleRieSVeSUeSWeRweRweSSeSfeSTeSZeRaeSXeSYeTaeOXePAcnYePAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacuacuakqakqacuakqakqakqakUakqakqaabakUcnZaaaaabaabdyqdyqdyqcABbVucIqeSFeSGeSHeSIeSJeSKcoacIucoccodcoecofcogcohcoicojcokcolcojcomconcoocoocopcolcoqcorcoscotbTWcoucIBcowcoxcoycozcoycoAcoBcoCcoDcoEcoFcDNcDNcmXePweOWeOWcoGeOWeOWePBePDePCePCePCcoHePCePEePCcoIeOEaaaePrcoJcnKcoKeOqePGePFePFePHeOqeOqePJePIePIePKePIePIePKePLaaaaaaeOlcoPcoQcoPcoRcoScoTcoUePyePMcoVePMeOleRzeRBeRAeRAeRCeRweSgeSfeSebpHciOeSheSQeSRcgqaaacoWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaaacnZaaaaaaaaaaabaabdyqcABcABcABcABcABcABcABcABcKncoacIQcoZcpacpbcpccpccpccpccpdcpecpfcoocpgcoocoocphcoocpicpjcpkcplcotbTWcpmePNcpncoxcpocppcpqcoxcprcpscptcpucpvcpwcpxcpycpzcpAcpAcpBcpCcpDcpEcpFbXlbXlbXlcpGbDgbDgbVPbDgeOEaaaePrcpHcnKcpIePOcpJcpKcpLcpMcpNcpOcpPcpNcpOcpQcpNcpRcpSePPaaaaaaeOlcoPcoPcoPePQcpUcnScpVcpWcpXcpYciSeOleRLeRAeRAeRAeROeRweRweRwckPcjHcgqcgxcjFcgxcgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXcjYcjZckackackbckgckhckiclgclhckeckfckjckjckjckkcklckmckncknckockpckqckrcksckrckrckrckqckrckrcktckuckvckwbYCbTWckxePecsMcCccgYcDEcCLcDGcDFcDJcDIcDLcDKcDNbDgbDgeONckCckDckEckFckGckHeONckIckGckJckKckEckLeOWbDgbDgbDgckMchwcdMchwckNbDgbDgbDgbDgbDgbDgbDgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePfeOlcsReOmePfeQSeRdeRceQZeQXeQVeQWeQVeQTeQQcgxbpHbpHeQReOXckZclaclbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXclccldclecldclfcqfcmscmtcllclkcllcuPclnclnclnclnbYCbTXbTXbTXclncloclnclnclnclnclnclnclnclnclnclnclpclqclrclscltcluePgclwclxcGIclyclzclAclBcHKclDclEclFcHLcficlGePhcjLclIclJclKcizclLeONclHcizclKclMciyclNeOWclOePiePiePjclPclQclReOqePkeOHeOHePleOEeOEeOEeOFeOHeOGeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlclWclXclYeOleRWeRIeRHeRKeRJeRNeRMeRVeRTeRYcgxbpHbpHcrzeOXePmcmgePoePnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcmicldcmjcmkcmlcmmcmpclicljcmncmocmqcwycmucmvcmwcmwcmxccacmyccacmucmzcmucmucmucmucmucmucmucmucmucmucmAclncmBcmCcmDcmEcHPcmGcmHcmIcmJcmKcmLcmMcmNcmOcmPcmQcDIbXlcmRePpcmTcizciycizcizcmUePqcmVcizcizciCciycmWeOWcmXeOEaaaePreOqcmYeOqeOqaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcmZcnacnbeOleRveRreRqeRpeRoeRueRtbpHeRsbpHciOeRyeRDeRxeOXePvcnfePvaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOabAcABcABcABcABcABcABeSEeSNeSNeSMclleSOcABcgXcngcolcolcztcolcnicolcolcIdcIecolcolcIfcIgcIecolcolcolcolcnkcnlcnmcnncnocnpcAzcnrcnscnrcnrcntcnrcnucnvcnwcnxcnycDNbDgcmXePwcnzcnAcnBcnCcnDcnEeONcnFcnDcnGciCcnHcnIeOWcmXeOEaaaePrcnJcnKcnLeOqaaaaaaaaaaaacnMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlcnNcnOcnPePxcnReRlcnTePycnUeRSeRReOleRieSVeSUeSWeRweRweSSeSfeSTeSZcADeSXeSYeTaeOXePAcnYePAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacuacuakqakqacuakqakqakqakUakqakqaabakUcnZaaaaabaabdyqdyqdyqcABbVucIqeSFeSGeSHeSIeSJeSKcoacIucoccodcoecofcogcohcoicojcokcolcojcomconcoocoocopcolcoqcorcoscotbTWcoucIBcowcoxcoycozcoycoAcoBcoCcoDcoEcoFcDNcDNcmXePweOWeOWcoGeOWeOWePBePDePCePCePCcoHePCePEePCcoIeOEaaaePrcoJcnKcoKeOqePGePFePFePHeOqeOqePJePIePIePKePIePIePKePLaaaaaaeOlcoPcoQcoPcoRcoScoTcoUePyePMcAHePMeOleRzeRBeRAeRAeRCeRweSgeSfeSebpHciOeSheSQeSRcgqaaacoWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaaacnZaaaaaaaaaaabaabdyqcABcABcABcABcABcABcABcABcKncoacIQcoZcpacpbcpccpccpccpccpdcpecpfcoocpgcoocoocphcoocBJcpjcpkcplcotbTWcpmePNcpncoxcpocppcpqcoxcprcBScptcpucpvcpwcpxcpycpzcpAcpAcpBcpCcpDcpEcpFbXlbXlbXlcpGbDgbDgbVPbDgeOEaaaePrcpHcnKcpIePOcpJcpKcpLcpMcpNcpOcpPcpNcpOcpQcpNcpRcpSePPaaaaaaeOlcoPcoPcoPePQcpUcnScpVcpWcpXcpYciSeOleRLeRAeRAeRAeROeRweRweRwckPcjHcgqcgxcjFcgxcgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaacuaaacqccqdcqeaaacqccqdcqeaaacqccqdcqeaabckdaabaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaackccoacIQcqgcoocphcqhcoocoocoocqicoocqgcqgcoocoocoocoocqjcIScpjcqlclncqmbTWePNePNcqncoxcqocqpcqqcoxcqrcHKcqscqtcqucqvcITbVQbDgcqwbVQcqwbDgbDgbDgcmXclSeOEeOFeOHeOHeOHeOGeOEeOEaaaePRcqycqzcqAePScqCchwchwcqDcqEcqFcqGcqEcqFcqGcqEcqFcqGePPaaaaabeOlePyePyePyePycqHcoTcqIcqJcqKcqLcqNeOleSbeRAeSceRAeSdcjEciYciXciVciKcgqciRciRciJcgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuaaacqccqQcqeaaacqccqQcqeaaacqccqQcqeaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabcIOcoacIUcqgcqRcoocqScqTcqUcqUcpgcoocqgcqVcoocoocoocoocqWcIVcqYcqZbSCcracrbePTcrdcrecoxcqocrfcrgcoxcrhcHKcDNcIXcDIcIZcIYcJfcJacJucJjcJCcJacJacJacJDcJaeOEaaaaaaaaaaaaaaaaaaaabaaaePrcrlcnKcrmePUcrnchwchwcqDcrocrpcrqcrrcrpcrqcrrcrpcrsePPaabaabeOlcnNcnOcnPePVcrucnScrvcrwcrxcrycjJeOleRAeRAeSieSkeREeRweRweRwcnVcnVcgqclZcmfcqacgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaagaaaaaaaaaakqaabcqccqQcqeaaacqccqQcqeaabcqccqQcqeaabaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaabaaaaaacJEcoacolcrCcoocrDcrEcrFcrGcrHcrGcrIcrGcrJcrKcojcrLcqgcqgcIScrMcrNcrOcrPcrQePWcrScrTcrUcrVcrWcrXcrYcrZcJXcwucwucxycvbcvccwtcsgcshcsicsjcskcslcsmcsncKaaabaaaaaaaaaaaaaaaaaaaabaabePRcspcsqcsrcsscstchwchwchwcsuchwchwchwchwchwchwchwcsvePXaaaaaaeOlcoPcoPcoPcsxcoScoTcsycszcsAcuHeRPeOleOleOleOleOleRweRwcgqcgqckTckScgqcgqcgqcgqcgqaaacqbaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaaaaaacKncsGcolclTcsIcsIcsJcolcolcolcolcolcolcolcolcolcolcolcolcolcbWcsKcbWcKrcbWcgXcsLcsMcsNcsOcsPcsQcsRcsScJXcAPcGKcHucsUcsVcsWcsXcsYcsZctactbctcctdctecKvaabctgctgctgctgctgaaaaaaaabePrcthcnKctictjctkctlchwchwctmchwchwchwchwchwctnchwctoePZaaaaaaeOlcoPcoPcoPePVctqcnScsBctscttcjRctvctwctxctycDneOlaabaabaaaaabaabaabaabaaaaaaaaaaaaaaacqbaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaaaaaacKncsGcolclTcsIcsIcsJcolcolcolcolcolcolcolcolcolcolcolcolcolcbWcsKcbWcKrcbWcgXcsLcCqcsNcsOcsPcsQcCEcsScJXcAPcGKcHucsUcsVcsWcsXcsYcsZctactbctcctdctecKvaabctgctgctgctgctgaaaaaaaabePrcthcnKctictjctkctlchwchwctmchwchwchwchwchwctnchwctoePZaaaaaaeOlcoPcoPcoPePVctqcnScsBctscttcjRctvctwctxctycDneOlaabaabaaaaabaabaabaabaaaaaaaaaaaaaaacqbaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuacuakqaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaabaaaaaaaaaaaaaaaaaaaaaaaaaabcKzcKwcKwcKwcKwcKneOzcoaeOvctHctIctIctJeImctKctLctLctLctLctMctNctOctNctNctPctPctNctQeIoeIneIpeIpctRctSctTctUctVctWctWctXeIqcAOcyDczFcubcsVcxzcsXcudcuecufcugcuhcuicujeIrculcumcuncuocupctgaaaaaacuqeQaeQbcureQceQbcuscutcuucuvcuycuwcuxcuycuzcuAcuBcuCcuDePPaaaaaaeOlePyePyePyePycuEcoTcsycuFcuGcuHcsCcjOcjNcvCcjMePzcnXaabaabaabaaaaaaaaaaaaaaaaaaaaaaaacqbaabaaaaaaaaaaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuaaaaabaaaaabaabcuLaabaabaabcuLaabaaaaabcuLaabaaaaaaaaaaaaaaaaaaaaaaaaeIteIseIucuMcuNcuOeIvcuQcuRcuSeOveOvcuTcuUcolcolcuVcHqcHqcHqcHqeIweIyeIxeIyeIyeIyeIpeIpeIzeIAcuWcuXcuYctWcuZctTctWctWctWctWcvacJXcIDcIEcHucubcsVcubcvdcudcuecvecvfcvgcvhcvieIBaabcvkcvlcupcvmctgaaaaaaaaaeQacvncvocvpeQbcvqcvrcvscvtcvucqGcqFcvucvvcvwcvxcqGcqFePPaaaaaaeOlcnNcnOcnPeQdcrucnScvzcvAcvBcvCcvDckOeRQeRUcvHeOlaabaabaagaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaabaaaaaaaaaaabaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaakqaabcvIcvJcvJcvKcvLcvMcvMcvMcvLcvMcvMcvMcvLcvMcvMcvNcvJcvJcvJcvJcvJcvOcvPcvQcvRcvScvTcvUcvVcvWbYrcoacvXeOvcolcolcolcvYcuVcHqcvZcwacwbcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqctTcwrctWctWctWcwscJXcHScHScubcwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFeIrcwGcumcwHcupcupctgaaaaaaaabeQacwIcvocwJeQbcwKcwLctlcwMcvucwNcwOcvucwPcwQcvxcwNcwRePPaaaaaaeOlcoPcoQcoPcwScoScoTcwTcvAcwUcoTcoTeRXePyePyePyeOlaaaaaaaaaaaacqOcqOcqOcnZaabaabaabaabcqPaabaabaabaabaabakUcqOcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaakqaabcvIcvJcvJcvKcvLcvMcvMcvMcvLcvMcvMcvMcvLcvMcvMcvNcvJcvJcvJcvJcvJcvOcvPcvQcvRcvScvTcvUcvVcvWbYrcoacvXeOvcolcolcolcvYcuVcHqcvZcwacwbcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqctTcwrctWctWctWcwscJXcHScHScubcwvcwwcwxcCIcwzcwAcwBcwCcwDcwEcwFeIrcwGcumcwHcupcupctgaaaaaaaabeQacwIcvocwJeQbcwKcwLctlcwMcvucwNcwOcvucwPcwQcvxcwNcwRePPaaaaaaeOlcoPcoQcoPcwScoScoTcwTcvAcwUcoTcoTeRXePyePyePyeOlaaaaaaaaaaaacqOcqOcqOcnZaabaabaabaabcqPaabaabaabaabaabakUcqOcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuaaaaabaaaaabaabcwXaabaaaaabcwXaabaaaaabcwXaabaaaaaaaaaaaaaaaaaaaaaaaaeIteIseICcwYcwZcxacKwcxbbYrcxccuRcuRcuRcuRcxdcuRcvWcHqcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcxscxtcxuctSctTcxvcxwctWctWcxxcJXcsecsfcubcxAcsVcxBeIDcxCcxDcxEcxFcxGcxHcxGeIEaabctgctgctgctgctgaabaabaabeQecxJcvocwJeQbcxKcxLcxMcxNeQgeQfeQheQhcxPeQheQjeQieQbeQkaaaaaaeOlcoPcoPcoPeQdcxRcxScxTcqMcxUctwctwctwcxVcxWcxXeQlaaaaaaaaaaaacqOaaaaabaaaaabaaaaaaaaacrBaaaaabaabaaaaaaaaaaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuacuakqaabaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabeIFcKwcKwcKwcKweOscfHcybbYrcycbYrbYrcuVcydbYrcHqcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscytcyucyvcywcyxcyycyzcyAclUeIHcsTcwxcyEcyFcyGcyHcyIcyJcyKcyLcyMcyNcyOcyPeIIculcumcyQcyRcyRctgaaaaaaaabeQacyScvocyTeQbcyUcyVcyVcyWeQbcyXcvFctzczaczbczcczdczaeQmaaacuqeOleOleOleOleOlczecoTczfcnSczgcnSczhcnSczicnSczjeQnaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAraaaaaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaacqccyacqeaabcqccyacqeaaacqccyacqeaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabczlczlczlczlczlczlczlczmczlczlcHqcznczocxgcxgczpczqczrczsczteIpczuczvcwmczwczxeIpczyctWctTczAbeCczCcyAczDeIJbeHczGczHczIczJczGczKczLczMczNcubczOczPczQeIKaabcvkczRczSczTctgaaaaaaaaaeQaeQbczUeQoeQbczVczWczXczYczZcvocAacAbczacAccAdcAecAfeQpaabaaaaaaaaaaaaaaaeOlcAhcAicAjcAkcAlcAmcAncAocAlcAmcApeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFctGaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabczlcAscAscAtcAucAvcAvcAwcAxcAycAzcygcyhcxgcxgcxgcAAcxgcxgcxgeIpeILcACcADcAEcAFeIMeINcAHeIOcAJcAKcALeIQeIPeIRcANcuccuacxAcsVcAQcARcAScATcAUcubczOcAVcAWeIScAYcumcAZcyRcyRctgaabaaaaaaeQecyZcBbcBccBdcBecBfcBecBecBgcBhcBicBjcBjcBkcBlcBmcBneQqaabaabaaaaaaaaaaaaeOlcBpcBqcBrePycBscBtcBuePycBvcBwcBxeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaaacuKcuKcuKcuKcuKaabcqOaaaaaaaaaaaacAraaaaaacAraaaaaacArcArcArcArcArcArcAraaaaaacAraaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaabcqccyacqeaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaaczlcAscAscAtcBycBycBycBzcBzcBAcHqcBBcBCcBDcBEcBFcBGcBHcBIcBIclVcBJcBKcxgcxgcxgcBLcBMcBNeITcBOcBPcBQeIVeIUcHqeIWeIWcBTcxAcsVcBUcBVcBWcBXcBYcubcBZcCacCbeIXcCdctgctgctgctgctgaaaaaaaaaeQaczzcCfcCgcChcCicCjcCicCicCkcClcCmcCncBncCocCpcAeczaeQraabaabaaaaaaaaaaaaeOlcCrcoPcoPePycCscoPcoPePycCscoPcoPeOlaaaaaaaaaaaacqOaaaaabaaaaabaabaabaaacsFaaaaabaaaaabaaaaabaaacqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakUaabcqccCvcqeaaacqccCvcqeaaacqccCvcqeaabakqaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabczlcCwcCxcBycBycBycCyeIYeIYeIZeIYeIYeIYeIYcCzcCAcCBcCCcCDcCDcCDcCEcCFcCGcCDcCDcCDcCFcCHcCIcCJcBPcCKeJaeIUcCMcCNeJbcCOcCPcCQcCRcCScAUcCTcCUcCVcCWcCXcCYeIIcCZcumcDacDbcDbctgaaaaaaaaaeQacDmcDdcDecDfcDgcDhcDiczacDjcDkcDlcCecBacDocDccDqcDreQsaaaaaaaaaaaaaaaaaaeOlcDtcoPcoPePycDucoPcoPePycDucoPcoPeOlaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaakqaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabczlcmacBycBycBycBycByeIYcDvcDwcDxcDycDzeIYcDAcDBcDCczocxgcxgcDDeJdeJceJecDHeJgeJfeJhcHqeJicCJcBPcDMeJjeIUcHqcDOeIWcDPcDQcubcCRcCScDRcubcCUcCVczOczPcDSeIKcDTcvkcDUcDVcDWctgaaaaaaaaaeQteQveQueQueQweQxeQxeQycEacEbcEccEdcEccEeeQzeQzeQkeQAeQzaaaaaaaaaaaaaaaaaaeOlcoPcoPcoPePycEfcoPcoPePycEfcoPcoPeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFcxZaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuacuakqacuacuakUakqakqakqakqacuakqakqacucEgaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczlcEhcBzcEicEjcEkcEleIYcEmcEncEocEpcEqcErcEscEtcEuczocxgcEvcEweJkcExcEycEzcEAcEBeJlcECcDCczocEDcEEeITeJmcHqeOteIWcEGcEHcubcCRcCScAUcubcEIcCVczOcEJcEKeIScELcumcEMcDbcDbctgaaaaaaaaacENaaaaaaaaaaaaaaaaaaeQacEOczaczacEPcEQcEReQzaaccEScETcEUaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcEVcEVcEVeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaabcuKcuKcuKcuKcuKaaacqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabczlczlczlcEWcEXcEYcEZeIYcFacFbcFccFccFdcFecCDcFfcFgcFhcFicFjcFjcFkcFlcFmcFncFocFpcFkcFqcFrcFscFtcxgcFucFvcFwcDOeIWcFxcFycubcCRcubcFzcubcCUcCVczOczPcFAeIKcDTctgctgctgctgctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQacFBczaczaczYcFCcFDeQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaaaaaaaaaaaaaacnZaaaaabaaaaabaaaaabaaacAqaaaaabaaaaabaabaabaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaacqccyacqeaabcqccyacqeaaacqccyacqeaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabczlczlczlczlczlczlczlczmczlczlcHqcznczocxgcxgczpczqczrczscDHeIpczuczvcwmczwczxeIpczyctWctTczAbeCczCcyAczDeIJbeHczGczHczIczJczGczKczLczMczNcubczOczPczQeIKaabcvkczRczSczTctgaaaaaaaaaeQaeQbczUeQoeQbczVczWczXczYczZcvocAacAbczacAccAdcAecAfeQpaabaaaaaaaaaaaaaaaeOlcAhcAicAjcAkcAlcAmcAncAocAlcAmcApeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFctGaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabczlcAscAscAtcAucAvcAvcAwcAxcAycErcygcyhcxgcxgcxgcAAcxgcxgcxgeIpeILcACcFecAEcAFeIMeINcFkeIOcAJcAKcALeIQeIPeIRcANcuccuacxAcsVcAQcARcAScATcAUcubczOcAVcAWeIScAYcumcAZcyRcyRctgaabaaaaaaeQecyZcBbcBccBdcBecBfcBecBecBgcBhcBicBjcBjcBkcBlcBmcBneQqaabaabaaaaaaaaaaaaeOlcBpcBqcBrePycBscBtcBuePycBvcBwcBxeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaaacuKcuKcuKcuKcuKaabcqOaaaaaaaaaaaacAraaaaaacAraaaaaacArcArcArcArcArcArcAraaaaaacAraaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaabcqccyacqeaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaaczlcAscAscAtcBycBycBycBzcBzcBAcHqcBBcBCcBDcBEcBFcBGcBHcBIcBIclVcKscBKcxgcxgcxgcBLcBMcBNeITcBOcBPcBQeIVeIUcHqeIWeIWcBTcxAcsVcBUcBVcBWcBXcBYcubcBZcCacCbeIXcCdctgctgctgctgctgaaaaaaaaaeQaczzcCfcCgcChcCicCjcCicCicCkcClcCmcCncBncCocCpcAeczaeQraabaabaaaaaaaaaaaaeOlcCrcoPcoPePycCscoPcoPePycCscoPcoPeOlaaaaaaaaaaaacqOaaaaabaaaaabaabaabaaacsFaaaaabaaaaabaaaaabaaacqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakUaabcqccCvcqeaaacqccCvcqeaaacqccCvcqeaabakqaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabczlcCwcCxcBycBycBycCyeIYeIYeIZeIYeIYeIYeIYcCzcCAcCBcCCcCDcCDcCDcLncCFcCGcCDcCDcCDcCFcCHcLscCJcBPcCKeJaeIUcCMcCNeJbcCOcCPcCQcCRcCScAUcCTcCUcCVcCWcCXcCYeIIcCZcumcDacDbcDbctgaaaaaaaaaeQacDmcDdcDecDfcDgcDhcDiczacDjcDkcDlcCecBacDocDccDqcDreQsaaaaaaaaaaaaaaaaaaeOlcDtcoPcoPePycDucoPcoPePycDucoPcoPeOlaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaakqaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabczlcmacBycBycBycBycByeIYcDvcDwcDxcDycDzeIYcDAcDBcDCczocxgcxgcDDeJdeJceJecLWeJgeJfeJhcHqeJicCJcBPcDMeJjeIUcHqcDOeIWcDPcDQcubcCRcCScDRcubcCUcCVczOczPcDSeIKcDTcvkcDUcDVcDWctgaaaaaaaaaeQteQveQueQueQweQxeQxeQycEacEbcEccEdcEccEeeQzeQzeQkeQAeQzaaaaaaaaaaaaaaaaaaeOlcoPcoPcoPePycEfcoPcoPePycEfcoPcoPeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFcxZaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuacuakqacuacuakUakqakqakqakqacuakqakqacucEgaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczlcEhcBzcEicEjcEkcEleIYcEmcEncEocEpcEqcLXcEscEtcEuczocxgcEvcEweJkcExcEycEzcEAcEBeJlcECcDCczocEDcEEeITeJmcHqeOteIWcEGcEHcubcCRcCScAUcubcEIcCVczOcEJcEKeIScELcumcEMcDbcDbctgaaaaaaaaacENaaaaaaaaaaaaaaaaaaeQacEOczaczacEPcEQcEReQzaaccEScETcEUaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcEVcEVcEVeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaabcuKcuKcuKcuKcuKaaacqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabczlczlczlcEWcEXcEYcEZeIYcFacFbcFccFccFdcMccCDcFfcFgcFhcFicFjcFjcMjcFlcFmcFncFocFpcMjcFqcFrcFscFtcxgcFucFvcFwcDOeIWcFxcFycubcCRcubcFzcubcCUcCVczOczPcFAeIKcDTctgctgctgctgctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQacFBczaczaczYcFCcFDeQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaaaaaaaaaaaaaacnZaaaaabaaaaabaaaaabaaacAqaaaaabaaaaabaabaabaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcFGcFHcFIcFJaabaabeIYcFKcFLcFccFccFMeIYcFNcFOcFPcFQcFRcFScFTcHqcFUcFVcFWcxgcFXcHqcFYcFZcGacFQcFQcGbcGccHqcGdeIWcGecGfcubcCRcubcBUcBVcGgcGhcCWcGicGjeIIcGkcumcGlcGmcGmctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQtcGncGocGpcGqcGrcGseQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcqPaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcFGcGtcGucGvaabaaaeIYcGwcFLcFccFccGxeIYcGycGzcHqcGAcGBcGBcGBcHqcGCcGDcGEcGFcGGcHqcGBcGBcGBcGAcHqcGHcGycHqcDOeIWcGJcsacGLcGMcGNcGOcGPcGQcyNcGRczPcGSeIKcDTcvkcGTcGUcGVctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQzeQBeQCeQCeQCeQCeQDeQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqOaabctActBctBctBctBcCtcCucCtctFctFctFctFcxZaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGYaaaaaaaaacGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcFGcGZcHacFGcHbaaaeIYcHccHdcFccFccHeeIYcHfcHgcHqcHhcHicHjcHkeJocHlcHmcHncHocGGeJocHicHicHicHpcHqcHrcHscHqcDOcHtcCRcHvcHwcGPcHxcHycHzcHAcHBcHCcHDcHEeIScELcumcHFcGmcGmctgaabaabaaaaaaaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacqPaaacuKcuKcuKcuKcuKaaacqOaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13375,7 +13369,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabacucHqcHqeJDcIRaaaaaaaabaaacKeaabaacaacaacaabaabcJhaabaaaaaacIReJDcHqcHqcCMcHqctgctgctgctgctgctgctgctgctgctgctgctgctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcHqeJTeJScIRaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacIReJQeJRcHqcJGcHqcHqcHqcHqcHqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaacGYcGYcGYcGYaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaacGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaabcHqeJPcIRcKgaaaaaacKhaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacIRcIReJPcHqcCMeJWdrBcKAcKBcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcHqeJXcKocIRaabaabaabcJhaaaaaacJhaaaaaaaaaaaacJhaabcKpaabcIRcKqeJYcHqcCMcKscKtcxgcKkcKuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcHqeJXcKocIRaabaabaabcJhaaaaaacJhaaaaaaaaaaaacJhaabcKpaabcIRcKqeJYcHqcCMcMKcKtcxgcKkcKuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHqeJZeKacKxaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacKyeKaeKbcHqcCMcHqcKicKjcKkcKCaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJdcHqeIQcIycKxaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaacKycIxeIQcHqcHqcCMcHqcHqcHqcKDcHqaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacHqcHqcIycIccIccIccIccIccIccIccIccIccIccIccIccIccIxcHqcHqcHqcHqcJGcHqaaaaabcKEcKFaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13387,18 +13381,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJdcHqcHqcHqcHqcHqcHqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcKScLbaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLcdiZcLdcLedjadjadjadjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabdiZcLfcLgcLhcLidjbcLjcLkdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLfcLlcLmcLmcLncLocLpdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLqcLrcLmcLmcLscLtcLudjaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLfcLlcLmcLmcNKcLocLpdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLqcLrcLmcLmcNQcLtcLudjaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabdiZdiZdjlcLmcLmdjadjmdjadjaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaofaofaaaaabaaacLvcLwcLmcLmcLxcLycLvaabaabaabaofaofaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacucLzcLzacuacuaaacLAcLBcLCcLDcLEcLFcLAaaaacuacucLzcLzacuacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLHcLIcLJacuacucLKcLLcLMcLNcLmcLOcLKacuacucLPcLQcLRcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLHcLRcLUcLVdjpdjpdjAcLWdjpcLXdjBdjpdjpcLVcLYcLHcLRcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLZcMacMbcMbcMccMdcMecMfcMgcMgcMhcMicMjcMkcMkcMlcMmcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLHcLRcLUcLVdjpdjpdjAdwrdjpdwsdjBdjpdjpcLVcLYcLHcLRcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLZcMacMbcMbdDZcMdcMecMfcMgcMgcMhcMidJycMkcMkcMlcMmcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncMocMpcMpdjpcMqcMrcMrcMscMrcMrcMtdjpcMpcMpcMucMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjpcMwcMxcMycMzcMAcMBcMCdjpaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMDdjCdjCdjCdjpcMEcMFcMrcMrcMGcMHcMIdjpdjCdjCdjCcMJcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjEdjDdjEdjLcMKdjEdjEdjMdjEaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjEdjDdjEdjLdKVdjEdjEdjMdjEaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjEcMLcMMcMNcMOcMPcMQcMRdjEaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaadjEdjEcMScMQbjjbjjbjjcMQcMTdjEdjEaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaadjEdjEcMUbjjbjjcMVbjjbjjcMWdjEdjEaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13411,7 +13405,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaaaaadjUdjUdjUdkedjUdjUdjUaaaaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaabaaadkfcNycNzdkqcNAcNBdkfaaaaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncNCcLVcNDcNDdkfcNEcNFcNGcNHcNIdkfcLVcLVcLVcNhcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcNJcMbcMbcMbcMbcNKcNLcNMcNNcNOcNPcNQcNRcMkcMkcMkcNScLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcNJcMbcMbcMbcMbdKWcNLcNMcNNcNOcNPdKXcNRcMkcMkcMkcNScLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuaaacMpcMpcMpcMpcMpdkfcNTcNUcNVcNWcNXdkrcNYcMpcMpcNZcNZaaaacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacuacuacuacuacuacudkfcOacObcOccOdcOedkfacuacuacuacuacuacuacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdkfdkfcOfcOgcOhdkfdkfaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13500,11 +13494,11 @@ cPicPccPhcPkcPfcPmcPacPecPicPdcPlcPgcPncPbcPjcOZcPacPmcPlcPhcPkcPecPgcPfcPbcPdcO
cPlcPfcPdcPncPecPjcPhcPacPlcPmcPbcPicOZcPkcPgcPccPhcPjcPbcPdcPncPacPicPecPkcPmcPccOTcOjcPhcPgcPfcPdcPlcPjcPmcPncPicOZcPkcPecPccPbcPacPjcPlcOZcPgcPfcPmcPkcPdcPccPicOqcOTcOUcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPacOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdaYdbQdcYdbUdbUdbUddEdbUdbUddFcVaddHddIcYadbQdbZdaJdaJdcLddKddLddMdaJddNdcmdaJdaJdaJdaJdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
cPbcPecPmcOZcPacPgcPdcPhcPbcPjcPkcPlcPccPncPicPfcPdcPgcPkcPmcOZcPhcPlcPacPncPjcPfcOTcOmcOvcOucOkcOscOtcOrcOicOmcOlcOpcOjcOqcOocOwcOncOrcOtcOpcOucOkcOicOjcOscOocOlcOncOTcOUcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPhcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdaYdbQdcYdbUdbUdbUddOdbUdbUdbUddPddQddRddSdbQddTddkdaJdaJdaJdaJdaJdaJddUddUddVddWddXddYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
cPkcPacPjcPccPhcPicPmcPdcPkcPgcPncPbcPfcOZcPlcPecPmcPicPncPjcPccPdcPbcPhcOZcPgcPecOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOUcPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPiaaacPdcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbNdbOdbOdbOdbOdbOdbOddZdbUdbUdbOdbOdbOdbOdbOdbOdbSdeadeadeadebddkdaJdecdecdecdecdecdecdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-cOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPecOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeddeedefdegdehdbQdeidbUdbUdbQdejdekdeldemdendbQdbZdaZdaYdaYdcgdeodecdecdecdecdecdepdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+cOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPecOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeddeddefdegdehdbQdeidbUdbUdbQdejdekdeldemdendbQdbZdaZdaYdaYdcgdeodecdecdecdecdecdepdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPacOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdbUdbUdbUddfdbUdeqdbUdbUdbUderdbUddfdbUddfdesdbQdbZdbAdcddetdcHdaJdeudeudeudeudeudevdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPhcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdewdexdbUdbUdbUdeydbUdbUdbUdezdbUdbUdbUdbUdbUdbQdbZdcgdaJdaJdaJdaJdaJdaJdaJdaJdaJdaJdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPiaaacPdcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdewdexdbUdeAdeBdbQdeCdeDdeCdbQdeEdeFdbUdbUdbUdbQdeGdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdbUdbUdbUdbQdbOdbQdbUdeHdeIdbQdbOdbQdbUdbUdbUdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeedbUdbUdbQdbOdbQdbUdeHdeIdbQdbOdbQdbUdbUdbUdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeJdeKdeLdbQdaYdbQdeMdeMdeMdbQdaYdbQdbYdeNdeOdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeMdeMdeMdbQdaYdctdeQdeRdeSdcvdaYdbQdeMdeMdeMdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdctdeQdeRdeSdcvdaYdaYdaYdaYdaYdaYdaYdctdeQdeRdeSdcvdaYdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14084,13 +14078,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHddHpdHpdHddJrdJqdJrdJqdJrdJqdJqdJmdJqdJmdJqdJmdJqdJmdHBdHedHedHedHBdJidJidJidJidJjdJjdJjdJjdJidJidJidJidJidJidHddHfdHfdHdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHddHpdHpdHddJqdJqdJqdJqdJqdJqdJqdJqdJmdJmdJmdJmdHddHddHddHedHedHedHddHddHddJidJidJjdJjdJjdJjdJidJidJidJidJidJidHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHpdHpdHpdJudJrdJqdJrdJqdJrdJqdJrdJrdJrdJqdJqdHddHddHedHedHedHedHedHedHedHddHddJjdJjdJjdJjdJjdJidJidJidJvdJvdJvdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudHpdHpdHpdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJwdJxdJydJzdJAdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudHpdHpdHpdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJwdJxdLfdJzdJAdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudHpdHpdJudJrdJrdJrdJrdJrdJrdJrdJrdJrdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJidJidJidJBdJwdJCdJDdJEdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJrdJrdJmdJrdJrdJmdJmdJmdJmdJmdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJidJidJidJidJidJvdJvdJvdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJmdJrdJmdJrdJmdJqdJmdJqdJmdJqdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJjdJjdJjdJGdJHdJydJIdJJdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJmdJrdJmdJrdJmdJqdJmdJqdJmdJqdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJjdJjdJjdJGdJHdLfdJIdJJdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJrdJrdJrdJrdJrdJmdJmdJmdJmdJmdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJjdJjdJjdJjdJGdJCdJKdJLdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJrdJrdJrdJrdJrdJrdJrdJrdJrdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJjdJjdJvdJvdJvdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJMdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJGdJOdJydJPdJQdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJMdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJGdJOdLfdJPdJQdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJRdJSdJRdJSdJRdJRdJRdJRdJRdJRdJSdJNdJrdJqdJrdJmdJmdHddHddHedHedHedHedHedHedHedHddHddJvdJvdJjdJjdJTdJGdJjdJGdJCdJUdJVdHddHpdHpdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJRdJRdJRdJRdJRdJSdJRdJSdJMdJSdJSdJNaaaaabaaadJSdJRdJSdHddHddHddHedHedHedHddHddHdaabaabdJvdJvdJvdJvdJvdJvdJvdJvdJvdJvdHddHfdHfdHBaacaabaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJRdJSdJRdJSdJRdJRdJRdJRdJRdJRdJWdJNaabaabaabdJRdJRdJRdJRdJRdHddHedHedHedHddJSdJSdJRdJRdJSdJRdJSdJRdJRdJRdJRdJSdJRdJSdHfdHpdHpdHfaabaabaabaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14250,34 +14244,34 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKNdKLdKLdKLdKLdKLdKLdKLdKLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKPdKQdKQdKRdKRdKRdKRdKRdKSdKRdKTdKUdKLdKLdKLdKLdKLdKLdKLdKLdKVdKWdKWdKXaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKYdKZdKLdKLdKLdKLdKLdKLdLadLadLadLbdLcdKUdKLdKLdKLdLddLedKRdKRdLfdLgdLhdLicKJcKJdKQdLjdLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKPdKQdKQdKRdKRdKRdKRdKRdKSdKRdKTdKUdKLdKLdKLdKLdKLdKLdKLdKLdMbdLidLidLVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKYdKZdKLdKLdKLdKLdKLdKLdLadLadLadLbdLcdKUdKLdKLdKLdLddLedKRdKRdMsdLgdLhdMccKJcKJdKQdLjdLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLldKZdKLdKLdKLdKLdKLdKLdKLdLadLmdLndLodLbdLcdLpdLadLqdLrdLsdLtdLtdLtdLudLvdLtdLtdLtdLtdLwcKOdLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLxdKLdKLdKLdKLdKLdKLdKLdKLdLadLydLzdLAdLBdLCdLDdLEdLFdLGdLHdLIdLJdLHdLKdLudLHdLLdLMdLtaabdLNcLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLOaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaadKOdLQdKLdKLdKLdKLdLRdLRdLRdLRdLRdLSdLTdLUdLVdLWdLWdLWdLXdLYdLHdLZdMadMbdLudLudMcdMadLZdLtaabaabdMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLaaaaaaaaadMedMfcKJcKJcKJdMgdMhdKLdKLdKLdKLdLRdLRdMidMjdLRdMkdMkdMkdMkdMldLWdMmdMndModLHdLHePtdLHdMpdMqdMrdMrdMrdMrdMrdMsdMtdMuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMvdMwdMvaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdLPdLPdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaadMxdMhaabaabaabaabaabdKLdKLdKLdKLdLRdMydMzdMAdMBdMCdMDdMEdMFdMGdMHdMIdMJdMKdLHdMLdMMePtdMNdMOdMPdMQdMRdMSdMTdMUdMVdMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMXdMYdMXaabaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNbdLRciMdNddMCdNedNfdNgdNhdNidNjdNkdNldNmdNndNodNpdMrdNqdNrdNsdNtdNudNvdMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNwdNxdNydNzaabaaaaaadKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNAdLReRZdMCchRdNDdNEdNFdNGdNFdNHdNFdNFdNFdNFdNIdNJdMrdNKdNrdNLdNMdNNdMVdMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNOdNOdNPdNQdNRdMXaabaaaaaadKLdKLdKLdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdNSaabdLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNTdNUdLReSadNWdNXdNYdNZdOadObdOcdOddOedOfdOgdNFdOhdOidMrdOjdOkdOldOmdMrdOndOoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOpdOqdOrdOsdOtdOudOvaabaabdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOxaabdLxaaaaabaabaabaabaabdKLdLtdLtdLtdLtdLtdOydOzdLtdMkdMkdOAdOBdOCdNFdODdOEdOFdOGdOHdOIdNFdOJdOKdOLdOMdONdOOdOPdMrdOQdKLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadORdNOdOSdOTdOUdNRdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdOXdOYdOZdPadPbdPcdPddPedPfdPgdPhdPidNFdPjdPkdPldPmdPndPodPpdPqdPrdPsdPsdPsdPtdPudPvdPwdPxdPxdPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdPzdPAdPBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdPCdPDdPEdPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdPRdPSdPTdPUdPVdPWdPXdPYdPsdPZdQadQbdQcdPsdQddKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQedQfdQgdQhdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQidQjdOYdQkdQldQmdQndQodQpdQqdLtdQrdQsdQtdQudQvdQwdQxdQydQzdNFdQAdQBdQCdQDdQDdQEdQFdQGdQHdQIdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQJdQKdQLdOVdQMdQNdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQOdQjdOYdQkdQldQPdQQdQodQRdQSdLtdQTdQUdNFdQVdNFdNFdNFdNFdQWdNFdQXdQYdPsdQZdRadRbdRcdRddOQdRedKNdKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRfdRgdRhdRidRjdRkdMvdOudRldOVdRmdRndOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdQjdOYdRodQldRpdRqdQodRrdRsdLtdRtdRudRvdRwdRxdRydRzdNFdRAdRBdRCdRDdREdRFdRGdRHdRIdRJdOQdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRKdSydRgdRMdRNdROdRPdRQdRldRRdRndRndRmdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadRSdRTdRUdRVdRWdRXdRUdRYdRZdSadSbdLHdScdSddLtdLtdLtdLtdLtdSedSfdSgdRwdShdRydSidNFdSjdSkdSldSmdSndSodSpdSqdSrdSsdStdSudLtdSvdMfcKJcKJcKJcKJcKJcKJdLjdSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSxdRKdSydRKdRhdRhdQMdSzdRNdOVdQhdSAdOVdRndSBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadSCdSDdSEdSFdSGdSGdSHdSIdSJdSKdSLdSMdSNdSOdSPdSQdSRdSSdSTdSUdSVdSWdSXdSYdSZdTadNFdTbdTcdTddTedPsdPsdTfdPsdPsdPsdTgdThdTidTjdTkdTldTldTmdTldTldTldTncLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTodTpdRhdTqdTrdRhdPBdTsdROdTtdTudTvdOVdOVdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadTwdTxdSGdSGdSGdSGdTydTzdTAdTBdTCdTDdTEdTFdSPdTGdTHdTIdTJdTKdTLdTMdTNdTOdTPdTQdTRdTSdTPdTTdTUdTVdTWdTXdTYdTVdTZdTVdTPdUadUbdUcdUddUedUfdUgdUhdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUjdUkdUldRhdTrdUmdRMdUndRNdUodOVdUpdUqdOVdUrdRldUsdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadUudUvdSGdSGdUwdSGdUxdUydUzdUAdUBdUCdUDdUEdSPdUFdUGdUHdUIdUJdUKdULdUMdUNdUOdUPdUQdURdUSdUPdUTdUQdUUdUPdUQdUVdUWdUXdUYdUZdVadVbdVcdVddVedVfdVfdVgdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdLPdLPdOVdRkdVhdVidVjdUldVkdRNdROdVldMvdOudVmdOVdUrdQhdRldUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaadVodVpdSGdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdSPdVBdVCdVDdVEdVEdVEdVEdVFdVGdVHdVIdVGdVJdVKdVLdVJdVMdVNdVOdVMdVMdVPdVQdVRdVSdTldVTdVUdTldVVdVfdVfdVWdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdOVdOVdOVdOVdOVdRjdRNdVXdVhdRNdTsdVYdVldVldRQdRldUpdOVdUrdPBdVZdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdWbdWcaaaaaaaaadWddWedRUdWfdWgdWgdWgdWgdWhdWidWjdLHdWkdWkdSPdWldVEdWmdVEdWndWodWpdWqdVGdWrdWsdWtdVJdWudWvdWwdVMdWxdWydWzdVMdWAdWBdVRdWCdWDdTldTldTldWEdWFdWGdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdWHdOueHhdWIdOVdWJdWKdWLdOVdTtdOVdWMdWNdWOdOVdOudWPdMYdWQdPBdQgdMYdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadVndVndKLdKLdWRdWScKJcKJdKQcKJdMgdMhaabaabdWTdWUdWVdWWdWXdWYdWZdXadXbdXcdXddXedXfdXgdXhdXidXjdXkdXldVGdXmdXndXodVJdXpdXqdXrdVMdXsdXtdXudVMdXvdXwdXxdXydXzdXAdXBdTldTldTldTldTldXCdLQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLOaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaadKOdLQdKLdKLdKLdKLdLRdLRdLRdLRdLRdLSdLTdLUdMtdLWdLWdLWdLXdLYdLHdLZdMadMBdLudLudMudMadLZdLtaabaabdMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLaaaaaaaaadMedMfcKJcKJcKJdMgdMhdKLdKLdKLdKLdLRdLRdMidMjdLRdMkdMkdMkdMkdMldLWdMmdMndModLHdLHePtdLHdMpdMqdMrdMrdMrdMrdMrdNHdNndMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMvdMwdMvaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdLPdLPdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaadMxdMhaabaabaabaabaabdKLdKLdKLdKLdLRdMydMzdMAdOadMCdMDdMEdMFdMGdMHdMIdMJdMKdLHdMLdMMePtdMNdMOdMPdMQdMRdMSdMTdMUdMVdOhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMXdMYdMXaabaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNbdLRciMdNddMCdNedNfdNgdNhdNidNjdNkdNldNmdOidNodNpdMrdNqdNrdNsdNtdNudNvdOhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNwdNxdNydNzaabaaaaaadKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNAdLReRZdMCchRdNDdNEdNFdNGdNFdOndNFdNFdNFdNFdNIdNJdMrdNKdNrdNLdNMdNNdMVdOhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNOdNOdNPdNQdNRdMXaabaaaaaadKLdKLdKLdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdNSaabdLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNTdNUdLReSadNWdNXdNYdNZdOodObdOcdOddOedOfdOgdNFdOBdOzdMrdOjdOkdOldOmdMrdPgdOLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOpdOqdOrdOsdOtdOudOvaabaabdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOxaabdLxaaaaabaabaabaabaabdKLdLtdLtdLtdLtdLtdOydPtdLtdMkdMkdOAdPCdOCdNFdODdOEdOFdOGdOHdOIdNFdOJdOKdPMdOMdONdOOdOPdMrdOQdKLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadORdNOdOSdOTdOUdNRdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdOXdOYdOZdPadPbdPcdPddPedPfdPPdPhdPidNFdPjdPkdPldPmdPndPodPpdPqdPrdPsdPsdPsdPWdPudPvdPwdPxdPxdPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdPzdPAdPBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQidPDdPEdPFdPGdPHdPIdPJdPKdPLdQOdPNdPOdQCdPQdPRdPSdPTdPUdPVdQTdPXdPYdPsdPZdQadQbdQcdPsdQddKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQedQfdQgdQhdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQUdQjdOYdQkdQldQmdQndQodQpdQqdLtdQrdQsdQtdQudQvdQwdQxdQydQzdNFdQAdQBdQVdQDdQDdQEdQFdQGdQHdQIdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQJdQKdQLdOVdQMdQNdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQWdQjdOYdQkdQldQPdQQdQodQRdQSdLtdRTdRJdNFdRddNFdNFdNFdNFdRUdNFdQXdQYdPsdQZdRadRbdRcdRVdOQdRedKNdKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRfdRgdRhdRidRjdRkdMvdOudRldOVdRmdRndOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdQjdOYdRodQldRpdRqdQodRrdRsdLtdRtdRudRvdRwdRxdRydRzdNFdRAdRBdRCdRDdREdRFdRGdRHdRIdRXdOQdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRKdSydRgdRMdRNdROdRPdRQdRldRRdRndRndRmdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadRSdStdRYdSCdRWdSadRYdSbdRZdTedTddLHdScdSddLtdLtdLtdLtdLtdSedSfdSgdRwdShdRydSidNFdSjdSkdSldSmdSndSodSpdSqdSrdSsdTfdSudLtdSvdMfcKJcKJcKJcKJcKJcKJdLjdSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSxdRKdSydRKdRhdRhdQMdSzdRNdOVdQhdSAdOVdRndSBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadTmdSDdSEdSFdSGdSGdSHdSIdSJdSKdSLdSMdSNdSOdSPdSQdSRdSSdSTdSUdSVdSWdSXdSYdSZdTadNFdTbdTcdTzdTwdPsdPsdTDdPsdPsdPsdTgdThdTidTjdTkdTldTldTJdTldTldTldTncLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTodTpdRhdTqdTrdRhdPBdTsdROdTtdTudTvdOVdOVdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadTMdTxdSGdSGdSGdSGdTydTZdTAdTBdTCdUudTEdTFdSPdTGdTHdTIdUWdTKdTLdULdTNdTOdTPdTQdTRdTSdTPdTTdTUdTVdTWdTXdTYdTVdVadTVdTPdUadUbdUcdUddUedUfdUgdUhdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUjdUkdUldRhdTrdUmdRMdUndRNdUodOVdUpdUqdOVdUrdRldUsdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadVddUvdSGdSGdUwdSGdUxdUydUzdUAdUBdUCdUDdUEdSPdUFdUGdUHdUIdUJdUKdVodUMdUNdUOdUPdUQdURdUSdUPdUTdUQdUUdUPdUQdUVdVPdUXdUYdUZdVFdVbdVcdVSdVedVfdVfdVgdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdLPdLPdOVdRkdVhdVidVjdUldVkdRNdROdVldMvdOudVmdOVdUrdQhdRldUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaadWedVpdSGdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdSPdVBdVCdVDdVEdVEdVEdVEdWfdVGdVHdVIdVGdVJdVKdVLdVJdVMdVNdVOdVMdVMdWldVQdVRdWidTldVTdVUdTldVVdVfdVfdVWdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdOVdOVdOVdOVdOVdRjdRNdVXdVhdRNdTsdVYdVldVldRQdRldUpdOVdUrdPBdVZdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdWbdWcaaaaaaaaadWddXbdRYdXfdWgdWgdWgdWgdWhealdWjdLHdWkdWkdSPdYwdVEdWmdVEdWndWodWpdWqdVGdWrdWsdWtdVJdWudWvdWwdVMdWxdWydWzdVMdWAdWBdVRdWCdWDdTldTldTldWEdWFdWGdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdWHdOueHhdWIdOVdWJdWKdWLdOVdTtdOVdWMdWNdWOdOVdOudWPdMYdWQdPBdQgdMYdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadVndVndKLdKLdWRdWScKJcKJdKQcKJdMgdMhaabaabdWTdWUdWVdWWdWXdWYdWZdXaegQdXcdXddXeeamdXgdXhdXidXjdXkdXldVGdXmdXndXodVJdXpdXqdXrdVMdXsdXtdXudVMdXvdXwdXxdXydXzdXAdXBdTldTldTldTldTldXCdLQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdOVdWHdPBdOudRMdTtdWPdVhdOudVhdQgdOudOudXDdRldOudPBdPBdOVdMYdXEdPBdOudOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWadWadWadWadWadWadWadWadWadWadVndVndXFdXGdXHdKLaaaaaaaaaaaaaaaaaaaabdWTdXIdXJdXKdXLdXMdXNdXOdWkdXPdXQdSPdVEdWmdVEdXRdVEdXSdXTdVGdXUdXVdXWdVJdXXdXYdXZdVMdYadYbdYcdVMdYddYedYfdYgdYhdYhdYidWDdYjdKPcKJcKJdYkdYlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdOVdWHdYmdPBdPBdTtdPBdVZdQMdPBdYndQgdVZdVmdMYdPBdYodQhdOVdVhdMYdWPdOudOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndYpdWadWadWadWadWadWadWadWadWadWadWadYqdVndYrdYsdVndVnaaaaaaaaaaaaaaaaaaaabdWTdYtdYudYvdYwdYvdYxdYydWkdWkdYzdSPdYAdYBdYCdYDdVEdYEdYFdVGdYGdYHdYIdVJdYJdYKdYLdVMdYMdYNdYOdVMdYPdYQdWDdYRdYSdYTdYSdWDdYUdYVdLPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdOVdWHdYmdPBdPBdTtdPBdVZdQMdPBdYndQgdVZdVmdMYdPBdYodQhdOVdVhdMYdWPdOudOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndYpdWadWadWadWadWadWadWadWadWadWadWadYqdVndYrdYsdVndVnaaaaaaaaaaaaaaaaaaaabdWTdYtdYudYvegZdYvdYxdYydWkdWkdYzdSPdYAdYBdYCdYDdVEdYEdYFdVGdYGdYHdYIdVJdYJdYKdYLdVMdYMdYNdYOdVMdYPdYQdWDdYRdYSdYTdYSdWDdYUdYVdLPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdOVdWHdYWdRMdRjdOVdYXdOVdYYdYZdOVdROdOVdYYdYZdOVdRNdWPdOVdXDdTvdMYdUpdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndZadWadWadWadWadWadWadWadWadWadWadWadZbdYpdZcdYpdVnaaaaaaaaaaaaaaaaaaaaaaabdWTdZddYydYydZedZfdZgdYydZhdWkdZidSPdZjdZjdZjdZjdVEdZkdXkdVGdZldZmdZndVJdZodZpdZqdVMdZrdZsdZtdVMdZudZvdZwdWDdWDdWDdWDdZxdZydKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdOVdOVdOVdOVdOVdOVdYXdOVdZzdRldROdUpdQhdRNdVkdRNdTvdRMdOVdYYdZAdZBdZCdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndYqdWadWadWadWadWadWadWadWadWadWadWadWadZDdZEdZFaaaaaaaaaaaaaaaaaaaaaaabaabdWTdZGdZGdZHdZIdZJdZKdZLdZMdWkdZNdSPdWadWadWadWadVEdZOdZPdVGdZQdZRdZSdVJdZTdZUdZVdVMdZWdZXdZYdVMdZZeaadZwdKLdLPdKLeabeaceaddKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdRldUpeaedTsdNRdRMdRldOVdRNdQhdOVeafeageageahdOVdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWadWadWadWadWadWadWadWadWadWaeaieajeakaaaaaaaaaaaaaaaaaaaabaabaabdWTdWTealeamdWTdWTeaneaoeandWTeapdWadWadWadWadWadVEdVEdVEdVGdVGdVGdVGdVJdVJdVJdVJdVMdVMdVMdVMdVMdZwdZweaqeardKRdKReasdYVdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdRldUpeaedTsdNRdRMdRldOVdRNdQhdOVeafeageageahdOVdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWadWadWadWadWadWadWadWadWadWaeaieajeakaaaaaaaaaaaaaaaaaaaabaabaabdWTdWTehgehjdWTdWTeaneaoeandWTeapdWadWadWadWadWadVEdVEdVEdVGdVGdVGdVGdVJdVJdVJdVJdVMdVMdVMdVMdVMdZwdZweaqeardKRdKReasdYVdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdUpdOudTvdRldRNdQhdTvdOVdYXdOVdOVdUrdMYeageateaudKNdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWadWadWadWadWadWadWadWadWadWaeaveaweaxaaaaaaaaaaaaaaaaabeayeazeaAeaBeaCeaDeaEeaFdWTeaGeaHeaIdWTeapdWadWadWadWadWaeaJeaKeaLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLeaMeaNdYVeaOdKLdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdOVdOVdOVdOVdOVdOVdOVdOVdYXdOVdUrdMYdUsdMYeaheaPdKNdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadWaeaQeaReaSeaTeaTeaTeaTeaTeaTeaUeaVeaWeaXeaXeaYeaZebadWTebbebcebddWTeapdWadWadWadWadWaeaieawebedKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLeaMeaNdYVebfdKNebfdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSaaaaaaaaaaaaaaadNSdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdYXdYXdYXeFreFidYXdYXdYXdYXdYXdOVdUrdUsdUsdUsdUtdOVdKNdKNdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadWadWaebgebhebhebhebhebhebhebhebhebgdWadWadWadWadWadWadWTeanebieandWTebjdWadWadWadWadWaebkeblebmdKRdKRdKRdKRebndKRdKRdKRdKRdKReboebpebqebrdYVdKNdKNdKNebfdWbdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14375,32 +14369,32 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMebMebMeb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWaeaQeaWefyefyefyefyefyefyefyefzegsegudNSdNSdNSdNSdNSdNSdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegvegvegvegvegvegvegvdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdKLdVndWadWadWadWaebJdZbdYpdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWaegqegwegwegwegwegwegwegwegxegyegudNSdNSdNSdNSdNSdNSdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegvegzegAegBegCegDegvdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWaebJdWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdVndWadWadWaeaQegEebuebuebuebuebuebuegFegsegGegHdNSdNSdNSdNSdNSdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegvegIegJegKegLegMegvdLPdLPdLPdLPdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdKLdKLdVndWadWadWaebJdWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSebMebMebMdNSdNSdNSdNSdNSdNSdVndVndVndWadWadWadWadNSdNSdNSdNSdNSdNSegregsegudNSdNSdNSdWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjegNegOdLPegPegvegvegvegQegvegvegvdLPdLPdLPdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndWadWadWaebJdWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSebMebMebMdNSdNSdNSdNSdNSdNSdVndVndVndWadWadWadWadNSdNSdNSdNSdNSdNSegregsegudNSdNSdNSdWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjegNegOdLPegPegvegvegvehkegvegvegvdLPdLPdLPdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndWadWadWaebJdWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdKLdKLdVndVndWadWadWadNSdNSdNSdNSdNSdNSdNSegregsegudNSdWadWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegRegOegSdLPegPegTegUegPegVegPdVndVndKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWadWaebJdWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMdKLdKLdVndVndVndWadWadNSdNSdNSdNSdNSdNSdNSegWegsegudWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjdYpdKLegPegXegYegZehaegPdWadVndVndKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWaebJdWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMdKLdKLdVndVndVndWadWadNSdNSdNSdNSdNSdNSdNSegWegsegudWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjdYpdKLegPegXegYehtehaegPdWadVndVndKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWaebJdWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdKLdKLdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSegoegqegodWadWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehbdLPdKLegPegPegPegPehcegPdWadWadVndVndYpdVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndWaebJdWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdKLdKLdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWaegpdZjegpdWadWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegTeheegPehfehgdWadWadWadWaehhdWadVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdYpdYpdYpdYpdYpdYpdVndWaebJdWadWadWadWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadZjdZjdZjdZjehiehiehidWadWadWadVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegXegYehjegVehkdWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdYpehlehmehnehnehodWadWaebJdWadWadWadWadWadWadWadWadKNdVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSebMebMebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadWadWadWadWaehpehqehrdWadWadWadVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegPehsegPegPegPegPegPegPegVehtdWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdYpehuehvehwehwehxdWaedcebzebAdWadWadWadWadWadWadWadKNdKNdVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdWadWaehyehyehyehyehyehyehzehAehBehyehyehyehyehydWadWadWadVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPegPegPegPegPehCehDehEegPegTehFegPehGegPegPegPehHehIehJegPdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdVndYpehKehLehMehMehNdWaebvebFebxdWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdVndWadWadWaehyehOehPehQehRehSehTehUehVehWehXehYehZeiaebAdWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdLPdLPdLPegPeibeiceideieeiceicegPegXegYeifegVegPeigeiheiieiieiiehgdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadVndVndVndWadWadWadWadWadWadWadWaeijeikeileimeikeikdWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSdNSdKLdVndWadWadWaehyeineioeipeiqeioeireioeioeiseiteiuehZeiveiwdWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndYpdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdKLdKLdKLegPeixeiceiyeizeiAeiBegPegPegPegPegVegPeigeiCeiCeiCeiDehkdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWaeijeiEeiFeiFeiGeikdWaeiHdWadWadWadZbdYpdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdKLdVndWadWadWaehyeiIeioeioeiJeioeireiKeioeioeiLeiMeiNeiaebxdWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWaehhdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLegPeiOeiPeiQeiceiReiSeiTeiDeiUeiVeiWegPeiXeiCeiYeiZejaehtdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWaejbejbejcejdeijejeejfejgejheikeikeikeikdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdVndVndWadWaehyejieioejjejkejlejmejneioehyehyehyehyehyehyedcebAdWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWaedcebAdWadWadWadWadWadWadWadWadWadVndVndKLdKLegPegPegPegPePuegPegPejoejpejqejoejpegPegPegPegPegPejregPegPejsejtdWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaejuejdejvejwejxejyejzejAejAejBejCejDejEejFebAdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdKLdVndWadWaehyejGejHejIeiqejJejKejLejMejNejOejPejQejRejSefhefieczeczeczeczeczebTdWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdKLdKLdKLdKLdVndVndWadWaeffeczeczeczeczeczeczeczeczefhefieczeczeczeczebTdWadWadWadWadWadVndKLdKLdKLdKLdKLePuejTejUejVeiCejaejWeiDejaeiTejXejYejZeiDejaeiCekaekbekcehIehJekdekdekdekdekdekdekdekdekeekeekeekeekeekeekeejcekfekgekhejwekiekjekkeklejAejAekmeknekoekpekqekrdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdLPdLPdKLdVndWadWaehyehyehyehyehyeksektekuehyehyekvehyehyehyehyebvebxdWadWadWadWadWaebJdWadWadWadWadVndWadVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWaebJdWadWadWadWadWadWadWadWaebvebxdWadWadWadWaebJdWadWadWadWadWadVndVndYpdVndVndKLegPegPegPegPeiCejaekwekxekyeiVekzekAekAekBekBekCekAekDekEekAekEekFekFekFekFekFekFekFekFekGekGekGekGekGekGekGekHekIekHekJekIekKekLekMekNekOekPekQejFekRekSejFebxdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdLPdLPdKLdVndVndWadWadWadWadWaehyekTekUekVekWehyekXekYdZjdWadWadWadWadWaebLdWadWadWaebSeczeczebTdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWaeffeczefgdWadWadWadWadVndWadWaebLdWadWadWadWadWadWaebJdWadWadWadWadWadWadWaehhdWadVndVndVndVndVnegPeiCekZelaelbelbelaelceldeleelbelbelfelaelgelhelieljelkelkelkelkelkelkelkelkellellellellellellelmelneloelpelqelrelselteluejbejbejbejbejbejbejbejbelvelwelxelwdZjdYqdVndKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdKLdVndVndWadWadWadWaehyelyelzelAelBehydWadWadWadWadWadWadVndVndYpdVndWadWadWadWadWaebJdWadWadWadWadWadVndKLdKLdKLdKLdKLdVndVndVndVndVndWaeffefgdWadWadWadVndVndVndVndVndVndYpdWadWadWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadVndVnegPegPelCelDelCegPegPelEelFecmegPegPegPelHelCegPelIdWadWadWaaaaaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaelJejdejwelKelLelMelNelOelOelPejbelQelRelSelTelTelUelTdZjdWadVndKLdKLdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdKLdKLdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWaegpdZjegpdWadWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegTeheegPehfehzdWadWadWadWaehhdWadVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdYpdYpdYpdYpdYpdYpdVndWaebJdWadWadWadWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadZjdZjdZjdZjehiehiehidWadWadWadVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegXegYehAegVehBdWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdYpehlehmehnehnehodWadWaebJdWadWadWadWadWadWadWadWadKNdVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSebMebMebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadWadWadWadWaehpehqehrdWadWadWadVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegPehsegPegPegPegPegPegPegVehHdWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdYpehuehvehwehwehxdWaedcebzebAdWadWadWadWadWadWadWadKNdKNdVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdWadWaehyehyehyehyehyehyehJehIeifehyehyehyehyehydWadWadWadVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPegPegPegPegPehCehDehEegPegTehFegPehGegPegPegPeiJeimeilegPdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdVndYpehKehLehMehMehNdWaebvebFebxdWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdVndWadWadWaehyehOehPehQehRehSehTehUehVehWehXehYehZeiaebAdWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdLPdLPdLPegPeibeiceideieeiceicegPegXegYejcegVegPeigeiheiieiieiiehzdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadVndVndVndWadWadWadWadWadWadWadWaeijeikejqejdeikeikdWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSdNSdKLdVndWadWadWaehyeineioeipeiqeioeireioeioeiseiteiuehZeiveiwdWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndYpdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdKLdKLdKLegPeixeiceiyeizeiAeiBegPegPegPegPegVegPeigeiCeiCeiCeiDehBdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWaeijeiEeiFeiFeiGeikdWaeiHdWadWadWadZbdYpdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdKLdVndWadWadWaehyeiIeioeioejreioeireiKeioeioeiLeiMeiNeiaebxdWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWaehhdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLegPeiOeiPeiQeiceiReiSeiTeiDeiUeiVeiWegPeiXeiCeiYeiZejaehHdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWaejbejbejtejseijejeejfejgejheikeikeikeikdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdVndVndWadWaehyejieioejjejkejlejmejneioehyehyehyehyehyehyedcebAdWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWaedcebAdWadWadWadWadWadWadWadWadWadVndVndKLdKLegPegPegPegPePuegPegPejoejpejuejoejpegPegPegPegPegPejSegPegPekcejVdWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaekfejsejvejwejxejyejzejAejAejBejCejDejEejFebAdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdKLdVndWadWaehyejGejHejIeiqejJejKejLejMejNejOejPejQejRekgefhefieczeczeczeczeczebTdWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdKLdKLdKLdKLdVndVndWadWaeffeczeczeczeczeczeczeczeczefhefieczeczeczeczebTdWadWadWadWadWadVndKLdKLdKLdKLdKLePuejTejUekkeiCejaejWeiDejaeiTejXejYejZeiDejaeiCekaekbekueimeilekdekdekdekdekdekdekdekdekeekeekeekeekeekeekeejtekHekEekhejwekiekjelheklejAejAekmeknekoekpekqekrdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdLPdLPdKLdVndWadWaehyehyehyehyehyeksekteliehyehyekvehyehyehyehyebvebxdWadWadWadWadWaebJdWadWadWadWadVndWadVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWaebJdWadWadWadWadWadWadWadWaebvebxdWadWadWadWaebJdWadWadWadWadWadVndVndYpdVndVndKLegPegPegPegPeiCejaekwekxekyeiVekzekAekAekBekBekCekAekDeljekAeljekFekFekFekFekFekFekFekFekGekGekGekGekGekGekGelnekIelnekJekIekKekLekMekNekOekPekQejFekRekSejFebxdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdLPdLPdKLdVndVndWadWadWadWadWaehyekTekUekVekWehyekXekYdZjdWadWadWadWadWaebLdWadWadWaebSeczeczebTdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWaeffeczefgdWadWadWadWadVndWadWaebLdWadWadWadWadWadWaebJdWadWadWadWadWadWadWaehhdWadVndVndVndVndVnegPeiCekZelaelbelbelaelceldeleelbelbelfelaelgeloelDelpelkelkelkelkelkelkelkelkellellellellellellelmelJelIelFelqelrelselteluejbejbejbejbejbejbejbejbelvelwelxelwdZjdYqdVndKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdKLdVndVndWadWadWadWaehyelyelzelAelBehydWadWadWadWadWadWadVndVndYpdVndWadWadWadWadWaebJdWadWadWadWadWadVndKLdKLdKLdKLdKLdVndVndVndVndVndWaeffefgdWadWadWadVndVndVndVndVndVndYpdWadWadWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadVndVnegPegPelCemRelCegPegPelEemSecmegPegPegPelHelCegPenodWadWadWaaaaaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaeqBejsejwelKelLelMelNelOelOelPejbelQelRelSelTelTelUelTdZjdWadVndKLdKLdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdKLdVndVndWadWadWaehyehyehyehyehyehydWadWadVndVndVndVndVndKLdKLdVndVndWadWadWadWaebJdWadWadWadWadWadWadVndVndVndVndVndVndWadWadWadWadWaebJdWadWadVndVndVndKLdKLdKLdKLdKLdVndWadWadWadWadWadWaebJdWadWadWaedcebAdWadWadWadWadWadWadWadVnegPelVelWelXelYegPelZemaembemcemdegPegPemeemfegPdWadWadWadWadWadWaaaaaaaaabaaaaaaaaaaabaabaabaabaabaabaabaabaabejbemgemhekLejbejbejbejbemiejbemjejbejbdZjdZjemkdZjdZjdWadVndKLdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWaebSeczeczeczebTdWadWadWadWadWadWadWadWadWadWadWadWadWaebJdWadVndVndKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWadWaebSeczeczeczefhefieczeczeczebTdWadWadWadWaegPemlemmemnemoegPempemqemqemremsegPegPemtemuegPdWadWadWadWadWadWaaabaabaabaabaabaabaabemvemvemvemvemvaabaaaaaaejbemwemxekLemyemzemAelOelOemBelOelPejbdWadWaemCdWadWadVndVndKLdKLdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWaebSebTdWadWaedcebAdWadWaeffeczeczeczeczeczefgdWadVndKLdKLdKLdKLdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadWadWadWaebvebxdWadWadWaebJdWadWadWadWaegPegPegPegPegPegPemDemEemFemGemsegPegPemHelCegPdWadWadWadWadWadWaaaaaaaaabaaaaaaaaaaabemvemvemvemvemvaabaaaejuejdemIemJemKejbejbejbejbejbejbemLemMejbdWadWadWadWadWadVndKLdKLdLPdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdVndVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWaebLdWadWaebSeczeczefhefieczeczefgdWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndWadWadWadWadWadWadWadWadWaebSeczeczebTdWadWadWadWadWadWaegPegPegPegPegPegPegPemNemOemPemQdWadWadWadWadWaaaaaaaaaaaabaaaaaaaaaaabemvemvemvemvemvemRekfemSemTeHiemUekLemVemWemXemYemZenaenbemMejbdWadWadWadWadVndVndKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWaebSebTdWadWaedcebAdWadWaeffeczeczeczeczeczefgdWadVndKLdKLdKLdKLdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadWadWadWaebvebxdWadWadWaebJdWadWadWadWaegPegPegPegPegPegPemDemEemFemGemsegPegPemHelCegPdWadWadWadWadWadWaaaaaaaaabaaaaaaaaaaabemvemvemvemvemvaabaaaekfejsemIemJemKejbejbejbejbejbejbemLemMejbdWadWadWadWadWadVndKLdKLdLPdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdVndVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWaebLdWadWaebSeczeczefhefieczeczefgdWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndWadWadWadWadWadWadWadWadWaebSeczeczebTdWadWadWadWadWadWaegPegPegPegPegPegPegPemNemOemPemQdWadWadWadWadWaaaaaaaaaaaabaaaaaaaaaaabemvemvemvemvemveyKekHeqHemTeHiemUekLemVemWemXemYemZenaenbemMejbdWadWadWadWadVndVndKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdKLdVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndVndYpdVndWadWadWadWaebvebxdWadWadWadWaebLdWadVndVndVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndVndVndVndVndVndVndVndWadWadWadWadWaebJdWadWadWadWadWadWadWadWaebvencendendendendeneebxdWadWadWadWadWadWaaabaabaabaabaabaabaabaabemvemvemvemvemvenfengenheniejwemUekLejwejwenjejwenkenlenmennejbdWadWadWadWadVndKLdKLdKLdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadYpdVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaabemvemvemvemvemvejcekfenoenpejwemUenqelrelrenrelrelrensentenuejbdWadWadWaecJdYpdKLdKLdKLdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndWadWadWadWaebSeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczebTdWadWadWadWadWadWaaaaaaaaaaaaaaaaaabemvemvemvemvemvenvaaaelJejdenwemUekLejwejwenxenyejwejwemLenzejbdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadYpdVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaabemvemvemvemvemvejtekHeyNenpejwemUenqelrelrenrelrelrensentenuejbdWadWadWaecJdYpdKLdKLdKLdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndWadWadWadWaebSeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczebTdWadWadWadWadWadWaaaaaaaaaaaaaaaaaabemvemvemvemvemvenvaaaeqBejsenwemUekLejwejwenxenyejwejwemLenzejbdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaebJdWaedcebAdWadWadWaeaLeaLaaaaaaaaaaabemvemvemvemvemvaabaaaaaaenAenAemUenBelrenCenDenEenFenGenmemMejbdWadWadWadWadVndKLdKLdKLdKLdLPdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaebSeczefhefieczeczeczenHenIenJenJenJenJenJenJenJenJenJenJenJenJenKenLenMejwejwejwenNenOenPenQenRenSejbdWadWadVndVndVndKLdKLdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadVndVndWadWadWadWadWadWadWadWadWaebvebxdWadWadWaeaLeaLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenAenAejbejcejdejbejbejbejbejbejbejbejbdWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadVndVndWadWadWadWadWadWadWadWadWaebvebxdWadWadWaeaLeaLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenAenAejbejtejsejbejbejbejbejbejbejbejbdWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdVndVndVndVndVndVndVndVndVndVndYpefedWadWadWadWadWadWadWadWadWadWadWadWadWadWaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadWaebLdWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadVndYpdVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadZbdYpdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14537,9 +14531,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqkeqleHjeqmeqgeqneqjeqjeqgeqjeqjeqgaaaaaaepAepIepCaaaepAepIepCaaadyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqoeqpeqpeqqeqreqseqjeqjeqgeqgeqieqgaaaaaaepAeqtepCaaaepAeqtepCaaadyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqneqjeqjequeqgeqveqjeqweqgeqjeqjeqgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqxeqxeqyeqzeqAeqgeqgeqjeqjeqveqgeqgeqBeqgaaadyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqxeqxeqyeqzeqAeqgeqgeqjeqjeqveqgeqgeBseqgaaadyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaiaaaaaaaabaacaacaaceqCaabaabaabaaaaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqneqjeqjeqgeqgeqveqjeqjeqjeqjeqjeqgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaieqDaabaabeqDaacaacaacaacaaceqDaabaabeqDaaiaabaabaabaaaaaaaaaaaaaaaaaaaaaeqEeqEaaiaaiaaieqgeqFeqjeqGeqjeqjeqHeqIeqjeqjeqjeqjeqjeqjeqgdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaieqDaabaabeqDaacaacaacaacaaceqDaabaabeqDaaiaabaabaabaaaaaaaaaaaaaaaaaaaaaeqEeqEaaiaaiaaieqgeqFeqjeqGeqjeqjeBweqIeqjeqjeqjeqjeqjeqjeqgdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabeqJeqJeqJeqJaaceqCaacaacaaceqJeqJeqJeqJaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaeqEaaiaaieqgeqKeqLeqMeqKeqKeqgeqgeqgeqgeqgeqgeqgeqgeqgeqNdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeqJeqJeqJeqJeqOeqJeqPeqJeqQeqReqSeqJeqJeqJeqJeqJeqJaabaabaaaaaaaaaaaaaaaeqEaaaaaaaaaaaiaaiaaieqgeqjeqjeqneqjeqjeqTeqUeqVeqWeqXeqYeqZeqWeraerbdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqJeqJeqJercerdereerferceqRergergerhergercereerceqJeqJeqJaabaaaaaaaaaaaaaaaaaaaaaeqEaaaaaaaaaaaaeqgeqFeqjeqGeqjeqjeqTerierierjerierierierierkerldyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14596,8 +14590,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabeyieyceyceyceyjeyceyceyceyceyceyceykeyleymeyneyoeypeyqeyreyceyceyceyceyceyceyceyceyceyceyceyseyteyueyieyceycexZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeyieyieyieyceyceyceyceyceyceyceyceyveyweyxeyyeyzeyAeyBeyCeyceyceyceyceyceyceyceyceyceyceyceyaeyceyceyceyceycexZaaaaaaaaaaaaaaaexXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabeyDeyEeyFeyFeyFexLeyFeyFeyFeyFeyFexLeyFeyFeyFeyFeyFexLeyFeyFeyFeyFeyFexLeyFeyFeyFeyFexLeyaeyieyieyceyceyceyGcLVcLVcLVaaaaaaaaaevhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaqdyqdyqdyqdyqdyqeryeryerydyqdyqdyqaaidyqdyqdyqdyqeyHeyIeyHeyieyceyceyieyJeyKeyLeyMeyiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaeyHeyNeyHeyOeyOexNeyPexNeyPexNcMpcMpcMpaaaaaaaaaexXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaqdyqdyqdyqdyqdyqeryeryerydyqdyqdyqaaidyqdyqdyqdyqeyHeyIeyHeyieyceyceyieyJeBHeyLeyMeyiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaeyHeBLeyHeyOeyOexNeyPexNeyPexNcMpcMpcMpaaaaaaaaaexXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoMaacaaceyHeyQeyReySeyHeyTeyTexNeyUexNeyUexNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaceyHeyVeyHeyWeyXeyYeyYexNeyUexNeyUexNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaaceyHeyZezaeyWeyYezbeyYexNeyUexNeyUexNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -14863,31 +14857,31 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeATeAUeAVdvVeAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeAUeAUeAXdCadAdeBaeAZeAYdCadCaelGdDYdCgdCgdCgeBbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCkeCjeCjeBleBceBceBceBceAReBdeARdCaeBeeBfeBgeBheBidCaeBjeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBCeBneBoeBpeBqeBreBseBteBueBveBweBxeByeBzeBgczBdCaeBBeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeSPeBDeBEeBFeBGeBGeBHeBIeBJeBKeBLeBMeBNeBOeBPeBQeBReBSeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBTeBUeBVeBWeBXeBYeBZeCaeCbeCceCdeCeeCfeCgeBgeChdCaeCieBkeBkeBkeBkeDlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBCeBneBoeBpeBqeBreBZeBteBueBveBReBxeByeBzeBgczBdCaeBBeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeSPeBDeBEeBFeBGeBGeDGeBIeBJeBKeCdeBMeBNeBOeBPeBQeEHeBSeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBTeBUeBVeBWeBXeBYeFfeCaeCbeCceFbeCeeCfeCgeBgeChdCaeCieBkeBkeBkeBkeDlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDCeDteDteDseBceBceBceBceCneCoeCpdCaeCqeCreCseCteCudCaeBkeCveCweCxeBkelGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeCneCoeCydCadCaeBaeAZeAYdCadCaelGdDYdCgeDNelGelGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeEeeEdeEdeEdeEdeDWeEzeEzeEzeCneCzeCAeDdeCBeCCeCCeCCeCCeCDeCCeCCeCCeCEeCFeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCHeCIeCJeEzeCKeCLeCMeDdeCCeCNeCNeCOeCOeCCeCPeCQeCReCSeCTeFpeCVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCGeCGeCWeEzeCneCoeCXeDdeCYeCNeCNeCOeCOeCCeCZeDaeDbeDceCCeFqaaaeDdeDdeDdeDdeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCHeDeeCHeDfeDgeDgeDgeDieDjeDkeFQeDmeDneDneDneDneDoeCPeDpeDbeDqeDreGseGreDueDveDweDxeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCHeDeeCHeDfeDgeDgeGteDieDjeDkeFQeDmeDneDneDneDneDoeCPeDpeDbeDqeDreGseGreDueDveDweDxeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeDyeDeeCHeDzeDAeDBeGveDDeDEeDFeGueDHeCCeDIeCUeDKeCCeCCeCCeDLeCCeDMeGWaaaeDOeDPeDQeDxeDRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCGeCGeDSeEzeDTeDUeDVeHgeDXeDYeDYeDYeDYeDZeCQeCPeEaeDJeEceHEeHDeEfeEgeEheDxeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCGeEieEjeHHeBteEkeEleDdeEmeEneEoeEpeEpeCCeEqeDKeEreDreEseFqaaaeDdeDdeDdeDdeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHKeHJeHJeHJeHJeHIeEzeEzeEzeEteEueEveDdeEweEneEoeEpeEpeCCeDpeCPeAieDreEyeHLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeEAeCoeEBeDdeCCeECeCCeCCeCCeCCeCCeCCeCCeECeCCeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHOeHNeHNeHMdvVdvVdvVdvVeDTeEDeEBeDdeDdeDdeDdeDdeHReHQeHQeHQeHPeDdeDdeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeEEeDTeDTeDTeEFeDTeCzeDVeEGeBIeEHeEIeEJeEKeEKeELeEMeENeEOeEPeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEQeEReBIeBIeBIeBIeBIeESeETeEUeEUeDGeEVeEWeEVeEVeEVeEVeEXeEYeEZeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeFaeFbeDheDheDheFceFdeFeeDheDheFfeFgeFheEbeFjeEbeFkeFleFmeFneHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHXeHWeHWeHVeHUeHUeHUeHUeIaeHZeHYeHUeHUeHUeHUeExeFseFteEbeFueFveFweFxeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeEEeDTeDTeDTeEFeDTeCzeDVeEGeBIeHYeEIeEJeEKeEKeELeEMeENeEOeEPeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEQeEReBIeBIeBIeBIeBIeESeETeEUeEUeHZeEVeEWeEVeEVeEVeEVeEXeEYeEZeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeFaeDheDheDheDheFceFdeFeeDheDheHYeFgeFheEbeFjeEbeFkeFleFmeFneHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHXeHWeHWeHVeHUeHUeHUeHUeIeeIdeIaeHUeHUeHUeHUeExeFseFteEbeFueFveFweFxeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeFyeFzeFAeFBeFCeFDeFEeFFeFGeHUeFmeFHeFmeFIeFmeFveFmeFmeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeFJeFzeFKeFLeFMeFNeFOeFzeFPeHUeHTeIbeHTeHTeHTeIbeHTeHTeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeFReFzeFSeFTeFUeFVeFWeFzeFXeHUeFYeFZeFYeHTeFYeFZeFYeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeGaeGbeGceGdeGeeGfeGceGbeGgeHUeFYeGheFYeHTeFYeGieFYeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeGjeGkeGleGleGmeGneGoeGpeGqeHUeFYeFYeFYeHTeFYeFYeFYeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceIceIceIceIfeIeeHUeHUeGteHUeHUeIdeIgeHUeIceIceIceHTeHTeHTeHTeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceIceIceIceLzeLieHUeHUeIgeHUeHUeIfeLAeHUeIceIceIceHTeHTeHTeHTeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceGweGxeGyeGzeGAeHUeGBeGCeGDeHUeGEeGFeGGeGHeGIeIcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceGJeGKeGKeGKeGKeHUeGLeGMeGNeHUeGOeGPeGPeGPeGPeIcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceGQeGReGSeGReGKeHUeGNeGTeGNeHUeGPeGPeGUeGPeGVeIcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/paradise.dme b/paradise.dme
index ba458be8dd2..1ee4f4c642c 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -135,6 +135,7 @@
#include "code\datums\computerfiles.dm"
#include "code\datums\datacore.dm"
#include "code\datums\datumvars.dm"
+#include "code\datums\gas_mixture.dm"
#include "code\datums\martial.dm"
#include "code\datums\medical_effects.dm"
#include "code\datums\mind.dm"
@@ -817,6 +818,9 @@
#include "code\game\verbs\who.dm"
#include "code\js\byjax.dm"
#include "code\js\menus.dm"
+#include "code\LINDA\LINDA_fire.dm"
+#include "code\LINDA\LINDA_system.dm"
+#include "code\LINDA\LINDA_turf_tile.dm"
#include "code\modules\admin\admin.dm"
#include "code\modules\admin\admin_investigate.dm"
#include "code\modules\admin\admin_memo.dm"
@@ -914,6 +918,7 @@
#include "code\modules\clothing\gloves\boxing.dm"
#include "code\modules\clothing\gloves\color.dm"
#include "code\modules\clothing\gloves\miscellaneous.dm"
+#include "code\modules\clothing\gloves\rings.dm"
#include "code\modules\clothing\head\collectable.dm"
#include "code\modules\clothing\head\hardhat.dm"
#include "code\modules\clothing\head\helmet.dm"
@@ -1579,11 +1584,6 @@
#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_dnaswitch.dm"
#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_emp.dm"
#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_forcefield.dm"
-#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasco2.dm"
-#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasnitro.dm"
-#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasoxy.dm"
-#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasplasma.dm"
-#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gassleeping.dm"
#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_goodfeeling.dm"
#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heal.dm"
#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heat.dm"
@@ -1697,21 +1697,6 @@
#include "code\modules\virus2\helpers.dm"
#include "code\modules\virus2\isolator.dm"
#include "code\modules\virus2\items_devices.dm"
-#include "code\ZAS\_docs.dm"
-#include "code\ZAS\_gas_mixture.dm"
-#include "code\ZAS\Airflow.dm"
-#include "code\ZAS\Atom.dm"
-#include "code\ZAS\Connection.dm"
-#include "code\ZAS\ConnectionGroup.dm"
-#include "code\ZAS\ConnectionManager.dm"
-#include "code\ZAS\Controller.dm"
-#include "code\ZAS\Debug.dm"
-#include "code\ZAS\Diagnostic.dm"
-#include "code\ZAS\Fire.dm"
-#include "code\ZAS\Plasma.dm"
-#include "code\ZAS\Turf.dm"
-#include "code\ZAS\Variable Settings.dm"
-#include "code\ZAS\Zone.dm"
#include "interface\interface.dm"
#include "interface\skin.dmf"
#include "maps\cyberiad.dmm"
diff --git a/sound/music/THUNDERDOME.ogg b/sound/music/THUNDERDOME.ogg
new file mode 100644
index 00000000000..0a36b251b79
Binary files /dev/null and b/sound/music/THUNDERDOME.ogg differ
diff --git a/sound/serversound_list.txt b/sound/serversound_list.txt
index bb7e5f2950a..007ece25ae7 100644
--- a/sound/serversound_list.txt
+++ b/sound/serversound_list.txt
@@ -1,5 +1,6 @@
sound/music/b12_combined_start.ogg
sound/music/main.ogg
+sound/music/THUNDERDOME.ogg
sound/music/space.ogg
sound/music/title1.ogg
sound/music/title2.ogg