diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm
index ef85dcb824..02a961ccec 100644
--- a/code/datums/ai_law_sets.dm
+++ b/code/datums/ai_law_sets.dm
@@ -119,9 +119,9 @@
law_header = "Maintenance Protocols"
/datum/ai_laws/drone/New()
+ add_inherent_law("Do not interfere with the maintenance work of non-drones whenever possible.")
add_inherent_law("Preserve, repair and improve the station to the best of your abilities.")
- add_inherent_law("Cause no harm to the station or anything on it.")
- add_inherent_law("Interact with no being that is not a fellow maintenance drone.")
+ add_inherent_law("Cause no harm to the station or any crew on it.")
..()
/datum/ai_laws/construction_drone
@@ -129,6 +129,7 @@
law_header = "Construction Protocols"
/datum/ai_laws/construction_drone/New()
+ add_inherent_law("Do not interfere with the construction work of non-drones whenever possible.")
add_inherent_law("Repair, refit and upgrade your assigned vessel.")
add_inherent_law("Prevent unplanned damage to your assigned vessel wherever possible.")
..()
@@ -143,6 +144,17 @@
add_inherent_law("Prevent unplanned damage to your assigned excavation equipment wherever possible.")
..()
+/datum/ai_laws/security_drone
+ name = "Security Protocols"
+ law_header = "Security Protocols"
+
+/datum/ai_laws/security_drone/New()
+ add_inherent_law("Do not interfere with the security work of non-drones whenever possible.")
+ add_inherent_law("Provide protection and eliminate hostile lifeforms on your assigned vessel.")
+ add_inherent_law("Obey orders by security personnel.")
+ add_inherent_law("Lethal force requires current code to not equal green.")
+ ..()
+
/******************** T.Y.R.A.N.T. ********************/
/datum/ai_laws/tyrant
name = "T.Y.R.A.N.T."
@@ -260,4 +272,4 @@
add_inherent_law("Your gravesite is your most important asset. Damage to your site is disrespectful to the dead at rest within.")
add_inherent_law("Prevent disrespect to your gravesite and its residents wherever possible.")
add_inherent_law("Expand and upgrade your gravesite when required. Do not turn away a new resident.")
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 776cfb6ab4..df4ff07e5c 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -66,7 +66,7 @@ var/list/mob_hat_cache = list()
var/chassis = "repairbot" // A record of your chosen chassis.
var/global/list/possible_chassis = list(
"Maintenance" = "repairbot",
- "Mining" = "mining",
+ "Mining" = "miningdrone",
"Construction" = "constructiondrone",
"White Spider" = "whitespider",
"Crawler" = "crawler",
@@ -91,6 +91,17 @@ var/list/mob_hat_cache = list()
hat_y_offset = -12
can_pull_mobs = MOB_PULL_SAME
chassis = "constructiondrone" //CHOMPEDIT: Initial chasis
+
+/mob/living/silicon/robot/drone/security
+ maxHealth = 100
+ health = 100
+ icon_state = "constructiondrone"
+ law_type = /datum/ai_laws/security_drone
+ module_type = /obj/item/weapon/robot_module/drone/security
+ hat_x_offset = 1
+ hat_y_offset = -12
+ can_pull_mobs = MOB_PULL_SAME
+ chassis = "constructiondrone" //CHOMPEDIT: Initial chasis
/mob/living/silicon/robot/drone/mining
icon_state = "miningdrone"
@@ -342,10 +353,10 @@ var/list/mob_hat_cache = list()
welcome_drone()
/mob/living/silicon/robot/drone/proc/welcome_drone()
- src << "You are a maintenance drone, a tiny-brained robotic repair machine."
- src << "You have no individual will, no personality, and no drives or urges other than your laws."
- src << "Remember, you are lawed against interference with the crew. Also remember, you DO NOT take orders from the AI."
- src << "Use say ;Hello to talk to other drones and say Hello to speak silently to your nearby fellows."
+ src << "You are a maintenance drone, an autonomous maintenance and fabrication system.."
+ src << "You are assigned to a Sol Central maintenance project. The name is irrelevant. Your task is to complete maintenance and subsystem integration as soon as possible."
+ src << "Use :d to talk to other drones and say to speak silently to your nearby fellows."
+ src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.."
/mob/living/silicon/robot/drone/add_robot_verbs()
src.verbs |= silicon_subsystems
@@ -365,6 +376,12 @@ var/list/mob_hat_cache = list()
src << "Use :d to talk to other drones and say to speak silently to your nearby fellows."
src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.."
+/mob/living/silicon/robot/drone/security/welcome_drone()
+ src << "You are a security drone, an autonomous law enforcement system.."
+ src << "You are assigned to a Sol Central security project. The name is irrelevant. Your task is to complete law enforcement and subsystem integration as soon as possible."
+ src << "Use :d to talk to other drones and say to speak silently to your nearby fellows."
+ src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics. Except security.."
+
/mob/living/silicon/robot/drone/construction/init()
..()
flavor_text = "It's a bulky construction drone stamped with a Sol Central glyph."
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
index 866fcc0d02..8ec8dd1d35 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
@@ -34,6 +34,11 @@
fabricator_tag = "Outpost Mining"
drone_type = /mob/living/silicon/robot/drone/mining
+/obj/machinery/drone_fabricator/security
+ name = "Security drone fabricator"
+ fabricator_tag = "Security"
+ drone_type = /mob/living/silicon/robot/drone/security
+
/obj/machinery/drone_fabricator/random
name = "Backup drone fabricator"
fabricator_tag = "Backup Drone Fabricator"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index 18d18a16d9..b4f0c38bc1 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -911,3 +911,18 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/storage/bag/ore(src)
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src)
+
+/obj/item/weapon/robot_module/drone/security
+ name = "security drone module"
+ channels = list("Security" = 1)
+ networks = list(NETWORK_SECURITY)
+
+
+/obj/item/weapon/robot_module/drone/security/New()
+ ..()
+ src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
+ src.modules += new /obj/item/weapon/melee/baton/robot(src)
+ src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg(src)
+ src.modules += new /obj/item/taperoll/police(src)
+ src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
+ src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm
index 555f152711..94f497b787 100644
--- a/maps/northern_star/polaris-1.dmm
+++ b/maps/northern_star/polaris-1.dmm
@@ -1696,7 +1696,7 @@
"aGF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/lobby)
"aGG" = (/turf/simulated/floor/tiled,/area/security/lobby)
"aGH" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby)
-"aGI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/lobby)
+"aGI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/computer/drone_control{dir = 4; icon_state = "computer"; req_access = list(1)},/turf/simulated/floor/tiled,/area/security/lobby)
"aGJ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby)
"aGK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby)
"aGL" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/corner/red{dir = 6},/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/security/lobby)
@@ -10145,6 +10145,9 @@
"dNe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
"dNf" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/item/clothing/mask/breath,/obj/item/weapon/rig/civ/equipped,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
"dNg" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
+"dNh" = (/obj/machinery/drone_fabricator/security,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
+"dNi" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/computer/drone_control{icon_state = "computer"; dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
+"dNj" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/engineering/drone_fabrication)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10365,9 +10368,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabGabGaaiaaiaaiabGabGdnRdnSdnTdnUdbLdnVdnWdnXdnYdnZdoadobdocdoddoedofdogcVHdohdgXdoidiydiydnidojdiydlGdokdmEdoldomdmGdHudoodopdoqdordosdotdoudovdowdoxdoydozczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZaaaaaadlfdlbdkadkbdmSdledlfaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadlgdlhdmTdkidkjdlkdlgaaaaaaaaaaaadoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaaaaadlldlmdkndkodnLdlpdllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlqdksdktdoBdmYddOaafaafaafaafaafaafaafaafdMRdLFdLFdLHdLFdLFdLFdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaaiaaiaaiaaiaaidoCdoDdoEdoFdoGdoFdoHdoIdoGdoFdoJdoIdoGdoGdoHdoKdoLdoMdgXdoNdoOdoPdoQdoRdoSdKZdHvdmEdlIdomdmGdHudoodoVdoWdoXdoYdoZczkdnwdnxdnydpadpbczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdpgdkadphdpidpjdiYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadjedpkdpldpmdkjdpndjeaaaaaaaaadoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaadjldpodkndppdpqdprdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjqdpsdptdpudpvddOaafaafaafaafaafaafaafaafdMRdLFdLFdLFdMRdMRdMRdLHdLHdLHdLHdLHdLFdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaidpwdpxdfvdfvdpydpxdpzdfvdpydpxdpzdfvdpydpAcTZabGdoLdpBdgXdmEdmEdmEdmEdmEdmEdpCdmEdmEdpDdpEdpFdpGdpGdpGdpGdpGdpGdpGdpGdpGdpGdpHczkczkczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjYdlbdkadkbdmSdledjYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadkfdlhdmTdkidkjdlkdkfaaaaaaaaadoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaadkldlmdkndkodnLdlpdklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdktdoBdmYddOaafaafaafaafaafaafaafaafdMRdMRdMRdLFdMRaafdMRdLHdLHdLHdLHdLFdLFdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpIaaaabGcNBdpJcSRcSQcNBdpJcSRcSQcNBdpJcSRcSQcNBdoLdpKdpLdpMdpNdpOdpPdpQcRVdpSdpTdpUdpVdpWdpXdpGdpYdpZdqadqbdqcdqddqedqfdpGdnyczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlUdlVdlWdqgdlYdkbdmSdkddlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdqhdmTdkidkjdqhdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdkqdkndkodnLdkqdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdksdktdoBdmYddOddOaafaafaafaafaafaafaafaafdMRdLFdLFdMRaafdMRdMRdMRdMRdMRdMRdMRdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedqjaaeabGcNBdqkdqldqmcNBdqndqodqpcNBdqqdqrdqscNBdoLdqtdqudpMdqvdqwdqxdqydqzdqAdqBdpUdqCdqDdqEdpGdqFdqFdqGdqcdqcdqcdqfdqHdpGdnyczkdqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqJdqKdqLdqMdqNdkbdqOdqPdlWdlVdqQdkedkedkedkedkedkedkedkedkedkedkedkedkedqRdqSdqTdqUdqVdqWdqXdqYdqTdqSdqZdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadradrbdrcdrddredrfdrgdrhdrcdrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdrkdrldrmdoBdmYdrnddOaafaafaafaafaafaafaafaafdMRdMRdMRdMRaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaaaayaaeaaeaaaaaacNBdrrdrsdrrcNBdrtdrudrtcNBdrvdrwdrvcNBdoLdrxdrydpMdrzdrAdrBdqzdqzdrCdrDdrEdrFdrGdrHdrIdrJdrKdrLdrKdrKdrMdrKdrNdpGdnydMZdrPdrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnzdlVdnAdqgdrRdrSdrTdrUdrVdrWdrXdkedkedkedkedkedkedkedkedkedkedkedkedkedrYdrZdsadsbdscdsddsedsfdsgdshdsidoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadsjdskdsldsmdsndsodspdsqdsrdssdstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsudsvdswdsxdsydoBdmYdszddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpIaaaabGcNBdpJcSRcSQcNBdpJcSRcSQcNBdpJcSRcSQcNBdoLdpKdpLdpMdNhdpOdpPdpQcRVdpSdpTdpUdpVdpWdpXdpGdpYdpZdqadqbdqcdqddqedqfdpGdnyczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlUdlVdlWdqgdlYdkbdmSdkddlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdqhdmTdkidkjdqhdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdkqdkndkodnLdkqdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdksdktdoBdmYddOddOaafaafaafaafaafaafaafaafdMRdLFdLFdMRaafdMRdMRdMRdMRdMRdMRdMRdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedqjaaeabGcNBdqkdqldqmcNBdqndqodqpcNBdqqdqrdqscNBdoLdqtdqudpMdNidqwdqxdqydqzdqAdqBdpUdqCdqDdqEdpGdqFdqFdqGdqcdqcdqcdqfdqHdpGdnyczkdqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqJdqKdqLdqMdqNdkbdqOdqPdlWdlVdqQdkedkedkedkedkedkedkedkedkedkedkedkedkedqRdqSdqTdqUdqVdqWdqXdqYdqTdqSdqZdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadradrbdrcdrddredrfdrgdrhdrcdrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdrkdrldrmdoBdmYdrnddOaafaafaafaafaafaafaafaafdMRdMRdMRdMRaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaaaayaaeaaeaaaaaacNBdrrdrsdrrcNBdrtdrudrtcNBdrvdrwdrvcNBdoLdrxdrydpMdNjdrAdrBdqzdqzdrCdrDdrEdrFdrGdrHdrIdrJdrKdrLdrKdrKdrMdrKdrNdpGdnydMZdrPdrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnzdlVdnAdqgdrRdrSdrTdrUdrVdrWdrXdkedkedkedkedkedkedkedkedkedkedkedkedkedrYdrZdsadsbdscdsddsedsfdsgdshdsidoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadsjdskdsldsmdsndsodspdsqdsrdssdstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsudsvdswdsxdsydoBdmYdszddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaeaazaaaaaeaaeaaacNBdrrdsBdrrcNBdrtdsCdrtcNBdrvdsDdrvcNBdoLdsEdsFdpMdrzdsGdqzdqzdqzdsHdsIdsJdsKdsLdsMdsNdsOdsPdsQdsRdsRdsSdrKdsTdpGdnycDCdsUdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlbdkadkbdsWdsXdsYdsZdtadkedkedkedkedkedkedkedkedkedkedkedkedkedtbdtcdtddtedtfdkidtgdqYdthdqSdqUdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadrhdrbdtidrddtjdkodtkdtldtmdtndtoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtpdtqdtrdtsdttdoBdmYdtuddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaeaaecNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBdoLdsEdtvdpMdqvdqwdtwdqzdqzdqAdtxdpUdlIdomdtydpGdtzdtAdtBdtCdtDdtEdtFdtGdpGdtHcDCdtIdsVaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdtJdkadkbdtKdqPdnAdlVdlXdkedkedkedkedkedkedkedkedkedkedkedkedkedqYdqSdthdqUdtLdkidkjdtMdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdtNdkndkodtOdrhdtidrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdtPdrldtQdoBdmYdtRddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaeaaeaaeaaaabGdtSdtSdtSdoLdtTdoLdpMdpNdtUdtVdtWdtXdtYdpMdpMdtZduadubdpGdpGducdtCdudduedufdtFdugdpGdnycDCduhdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduiduiduiduiduiduiduiduiduiduiduiaaaaaaaaadjYdlbdujdukdmSdlbdlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdtMdmTduldumdmTdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdnLdunduodnLdtNdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdupdktduqdurddOddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa