From f7ff4669d93ea66bd09b7ee57dbaf2eb4a92eb73 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Sun, 17 Sep 2017 17:18:52 -0500 Subject: [PATCH] Implements the correct setup_supermatter verb --- code/modules/admin/verbs/mapping.dm | 2 +- code/modules/supermatter/setup_supermatter.dm | 26 ++++++++++++++-- maps/northern_star/polaris-1.dmm | 30 +++++++++---------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 5738d75779..8ef63e765c 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -159,7 +159,7 @@ var/list/debug_verbs = list ( ,/client/proc/hide_debug_verbs ,/client/proc/testZAScolors ,/client/proc/testZAScolors_remove - ,/client/proc/setup_supermatter_engine + ,/datum/admins/proc/setup_supermatter ,/client/proc/atmos_toggle_debug ,/client/proc/spawn_tanktransferbomb ) diff --git a/code/modules/supermatter/setup_supermatter.dm b/code/modules/supermatter/setup_supermatter.dm index 01aaeb0a21..559f035cb2 100644 --- a/code/modules/supermatter/setup_supermatter.dm +++ b/code/modules/supermatter/setup_supermatter.dm @@ -187,9 +187,15 @@ -// Tries to enable the SMES on max input/output settings. With load balancing it should be fine as long as engine outputs at least ~500kW +// Tries to enable the SMES on max input/output settings, unless the vars are changed. THIS SHOULD NOT BE PLACED ON THE MAIN SMES OR THE ENGINE WILL OVERHEAT /obj/effect/engine_setup/smes/ name = "SMES Marker" + var/target_input_level //These are in watts, the display is in kilowatts. Add three zeros to the value you want. + var/target_output_level //These are in watts, the display is in kilowatts. Add three zeros to the value you want. + +/obj/effect/engine_setup/smes/main + target_input_level = 750000 + target_output_level = 750000 /obj/effect/engine_setup/smes/activate() ..() @@ -199,8 +205,22 @@ return SETUP_WARNING S.input_attempt = 1 S.output_attempt = 1 - S.input_level = S.input_level_max - S.output_level = S.output_level_max + if(target_input_level) + if(target_input_level > S.input_level_max) + S.input_level = S.input_level_max + else + S.input_level = target_input_level + else + S.input_level = S.input_level_max + + if(target_output_level) + if(target_output_level > S.input_level_max) + S.output_level = S.output_level_max + else + S.output_level = target_output_level + else + S.output_level = S.output_level_max + S.update_icon() return SETUP_OK diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 4a91144d1e..b66dff9d05 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -9557,7 +9557,7 @@ "dBO" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_waste) "dBP" = (/obj/machinery/atmospherics/pipe/simple/visible/black,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_waste) "dBQ" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/engineering/engine_waste) -"dBR" = (/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 500000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/structure/cable,/turf/simulated/floor/plating,/area/engineering/engine_smes) +"dBR" = (/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 500000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/structure/cable,/obj/effect/engine_setup/smes/main,/turf/simulated/floor/plating,/area/engineering/engine_smes) "dBS" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/power/terminal{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/button/remote/airlock{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; pixel_x = 26; pixel_y = 0; req_access = list(10); specialfunctions = 4},/turf/simulated/floor/tiled,/area/engineering/engine_smes) "dBT" = (/obj/machinery/computer/general_air_control/supermatter_core{frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core")},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring) "dBU" = (/obj/machinery/computer/rcon,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring) @@ -9624,7 +9624,7 @@ "dDd" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "dDe" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/machinery/alarm/nobreach{dir = 2; pixel_y = 22},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "dDf" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) -"dDg" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_attempt = 1; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"dDg" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_attempt = 1; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/effect/engine_setup/smes,/turf/simulated/floor/plating,/area/engineering/engine_room) "dDh" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "dDi" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "dDj" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -9696,22 +9696,22 @@ "dEx" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/engineering/aft_hallway) "dEy" = (/turf/simulated/floor,/area/shuttle/constructionsite/station) "dEz" = (/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) -"dEA" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 4; tag_south = 2; tag_west = 0; use_power = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"dEA" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 4; tag_south = 2; tag_west = 0; use_power = 0},/obj/effect/engine_setup/filter,/turf/simulated/floor/plating,/area/engineering/engine_room) "dEB" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor,/area/engineering/engine_room) -"dEC" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 4; tag_south = 2; tag_west = 1; use_power = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"dEC" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 4; tag_south = 2; tag_west = 1; use_power = 0},/obj/effect/engine_setup/filter,/turf/simulated/floor/plating,/area/engineering/engine_room) "dED" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/engine_room) "dEE" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/engine_room) "dEF" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) "dEG" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/engine_room) "dEH" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"dEI" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor,/area/engineering/engine_room) -"dEJ" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor,/area/engineering/engine_room) +"dEI" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/engine_setup/coolant_canister,/turf/simulated/floor,/area/engineering/engine_room) +"dEJ" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_room) "dEK" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor,/area/engineering/engine_room) "dEL" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 1"},/turf/simulated/floor/plating,/area/engineering/engine_room) "dEM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "dEN" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/turf/simulated/floor,/area/engineering/engine_room) -"dEO" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor,/area/engineering/engine_room) -"dEP" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor,/area/engineering/engine_room) +"dEO" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_room) +"dEP" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/engine_setup/coolant_canister,/turf/simulated/floor,/area/engineering/engine_room) "dEQ" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) "dER" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) "dES" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) @@ -9745,7 +9745,7 @@ "dFu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/engine_room) "dFv" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/engine_room) "dFw" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"dFx" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"dFx" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/engine_setup/pump_max,/turf/simulated/floor/plating,/area/engineering/engine_room) "dFy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/engine_room) "dFz" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space) "dFA" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 1 End"; dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "trade_shuttle_dock_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) @@ -9762,8 +9762,8 @@ "dFL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/cee,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "dFM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/aft_hallway) "dFN" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor,/area/engineering/engine_room) -"dFO" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/portable_atmospherics/canister/empty,/turf/simulated/floor,/area/engineering/engine_room) -"dFP" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/engine_room) +"dFO" = (/obj/machinery/atmospherics/binary/pump,/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_room) +"dFP" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/portable_atmospherics/canister/empty,/obj/effect/engine_setup/empty_canister,/turf/simulated/floor,/area/engineering/engine_room) "dFQ" = (/obj/machinery/atmospherics/pipe/cap/visible,/turf/simulated/floor,/area/engineering/engine_room) "dFR" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/engineering/engine_room) "dFS" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -9812,7 +9812,7 @@ "dGJ" = (/turf/space,/area/shuttle/administration/station) "dGK" = (/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 = list(11,13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/solar/starboard) "dGL" = (/obj/machinery/light{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor,/area/engineering/engine_room) -"dGM" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/engineering/engine_room) +"dGM" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/engine_setup/coolant_canister,/turf/simulated/floor,/area/engineering/engine_room) "dGN" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 1},/turf/simulated/floor,/area/engineering/engine_room) "dGO" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "dGP" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/machinery/door/blast/regular{dir = 1; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -9828,7 +9828,7 @@ "dGZ" = (/obj/machinery/atmospherics/unary/heat_exchanger,/turf/simulated/floor,/area/engineering/engine_room) "dHa" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/machinery/door/blast/regular{dir = 1; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) "dHb" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/reinforced/nitrogen{nitrogen = 82.1472},/area/engineering/engine_room) -"dHc" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/greengrid/nitrogen,/area/engineering/engine_room) +"dHc" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/obj/effect/engine_setup/core,/turf/simulated/floor/greengrid/nitrogen,/area/engineering/engine_room) "dHd" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/reinforced/nitrogen{nitrogen = 82.1472},/area/engineering/engine_room) "dHe" = (/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) "dHf" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 6},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -10107,10 +10107,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndz aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxdAXdDUdDUdDUdAXdADdDVdDWdDXdDYdDZdEadEbdEcdEddEedEddEddEddEddEddEfdEgdDrdDrdADdCGdCHdDvdDsdCHdCJaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadprdiQdpsdptdpudiRdiRdiRdiRdiRdiQdiQdEhdEidEidiQdiQaaaaaaaaaaaaaaaaaadkbdkbdkbdkbdkbaaaaaaaaaaaaaaaaaadiWdiWdEjdEjdEkdiWdiWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjddjddEldEmdEmdjddjdaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdjidjidEndEodEpdjiaafaaidAPdCQdEqdCQdAPdCSdErdCSdAPaaiaaiaafaafaafaafdEsdEtdEudEvdEwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidExdBJdEydEydEzdBJdADdDVdDWdEAdEBdECdEDdEEdEEdEFdEGdEHdEIdEJdEKdELdEMdENdEOdEPdADdEQdCHdDtdDudCHdERaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaadjVdESdETdEUdjVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkcdEVdEWdEXdkcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkidEYdEZdFadkiaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdFbdFcdFddFedFfdkoaaiaaiaaidCQdFgdCQaaadCSdFhdCSaaiaaiaaiaaiaaiaaiabxabxdFidFjdFiaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkaaaaaadFkaaaaaaaaadFkaaaaaaaaaaaaaaadFkaaaaaaaaadFkaaaaaadFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiduodAWdAXdBJdAXdAWdADdDVdDWdFldFmdFndDVdDVdDVdFodFpdFqdFrdFrdFsdFtdFudFvdFwdFxdFydFzdCIdDvdDsdCIdDtaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadledFAdDAdFBdleaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnQdFCdDDdFDdnQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnVdFEdDKdFFdnVaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdFGdFHdFIdFJdFKdnZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaaaaaaaaaaeaaeaaadFidFLdFiaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkaaaaaaaaadFkdFkdFkdFkdFkdFkdFkaaaaaaaaadFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFMduodExabxdExduodADdFNdDWdFOdFPdFQdDVdFRdFSdFTdFUdFVdFWdFXdFYdFZdGadGbdGcdGddGedFzdCHdDtdDudCHdERaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGfdmbdGgdGhdljaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdGidGjdrrdGkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGldrwdGmdGndlpaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdrCdrDdGodrDdrDdGpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaadGqdGrdGqaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkaaaaaaaaadFkdFkdFkdFkdFkdFkdFkaaaaaaaaadFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFMduodExabxdExduodADdFNdDWdFPdFOdFQdDVdFRdFSdFTdFUdFVdFWdFXdFYdFZdGadGbdGcdGddGedFzdCHdDtdDudCHdERaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGfdmbdGgdGhdljaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlkdGidGjdrrdGkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGldrwdGmdGndlpaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdrCdrDdGodrDdrDdGpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaadGqdGrdGqaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaadFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaidGsaaiaaidADdGtdFldGudGvdGwdDVdGxdADdGydGzdGAdADdGBdGCdGDdGEdGFdGGdGHdADdCGdCHdDvdDsdCHdCJaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIaaaaaaaaaaaadGIdGIdGIdGIdGIaaaaaaaaaaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaeaaeaaaaaaaaaaaadGKaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaadFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaaaaidADdGLdDVdGMdGNdGNdDVdGOdGPdGQdGRdGSdGPdGTdGUdFtdFudGVdGWdGXdADdDsdCIdDtdDudCIdDvaccaaaaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIaaaaaadGIdGIdGIdGIdGIdGIaaaaaaaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaadGYaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaaaaadADdDVdDVdFPdGZdGZdDVdGOdHadHbdHcdHddHadGTdGOdFZdHedGbdHfdHgdADdCGdCHdDvdDsdCHdCJaccaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaccaccdAGaaeaaeaaeaaedGYaaeaaeaaeaaeaaeaazaccaccaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaaaaadADdDVdDVdFOdGZdGZdDVdGOdHadHbdHcdHddHadGTdGOdFZdHedGbdHfdHgdADdCGdCHdDvdDsdCHdCJaccaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaccaccdAGaaeaaeaaeaaedGYaaeaaeaaeaaeaaeaazaccaccaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaaaaadADdADdDVdHhdGvdGvdHidGOdHjdHkdHldHmdHjdHndHodHpdHqdHrdHsdADdADdEQdCHdDtdDudCHdERaccaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaaaaeaaaaaeaaaaaaaaadGYaaaaaeaaeaaaaaaaaaaaaaccaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAGaaaaaaaaadADdADdHtdHudHtdHtdADdADdADdHvdADdADdADdADdADdHwdADdADdADaaedDudCIdDvdDsdCIdDtaccaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaadHxdHxdHxdHxdHxaaedGYaaedHxdHxdHxdHxdHxaaaaccaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzndzndzndzndzndzndzndzndzndzndzndzndzndzndznaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkdFkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaccaaaaaaaaaaaadHydHydHydHyaaeaaedHzaaadHzaaeaaaaaeaaaaaaaaeaaaaaaaaedEQdCHdDtdDudCHdERaccaaaaaaaaaaaaaaaaaaaaadGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIdGIaaaaaaaaadGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJdGJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXdwXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccaaedHAdHBdHBdHBdHBdHCdHDdHCdHEdHEdHEdHEdHFaaeaccaaaaaaaaaaaaaaaaaadvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedvedveaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa