diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4dfa55a79231..e969d1aa7447 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,8 +24,13 @@ /tools/docker/ @Fira /Dockerfile @Fira +# Nanu + +/maps @Nanu308 + # Zonespace -/code/modules/gear_presets/survivors.dm @zonespace27 +/code/datums/tutorial/ @Zonespace27 +/maps/tutorial/ @Zonespace27 # MULTIPLE OWNERS diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index cb1790053744..14cf6001058f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,6 +16,9 @@ Remember: something that is self-evident to you might not be to others. Explain # Testing Photographs and Procedure + + +
Screenshots & Videos diff --git a/.github/alternate_byond_versions.txt b/.github/alternate_byond_versions.txt index 005803964cca..c96908590dac 100644 --- a/.github/alternate_byond_versions.txt +++ b/.github/alternate_byond_versions.txt @@ -6,4 +6,4 @@ # Example: # 500.1337: runtimestation -515.1610: lv624 +515.1630: lv624 diff --git a/code/__DEFINES/_math.dm b/code/__DEFINES/_math.dm index 6fb634e66720..138adeeda451 100644 --- a/code/__DEFINES/_math.dm +++ b/code/__DEFINES/_math.dm @@ -32,3 +32,6 @@ /// Gets the sign of x, returns -1 if negative, 0 if 0, 1 if positive #define SIGN(x) ( ((x) > 0) - ((x) < 0) ) + +/// Performs a linear interpolation between a and b. Note that amount=0 returns a, amount=1 returns b, and amount=0.5 returns the mean of a and b. +#define LERP(a, b, amount) ( amount ? ((a) + ((b) - (a)) * (amount)) : a ) diff --git a/code/__DEFINES/colours.dm b/code/__DEFINES/colours.dm index e96546cdf7d2..e9a03a6382da 100644 --- a/code/__DEFINES/colours.dm +++ b/code/__DEFINES/colours.dm @@ -14,31 +14,37 @@ // BLACK AND WHITE COLOR DEFINE. -/// Full white. rgb(255, 255, 255) +/// White rgb(255, 255, 255) #define COLOR_WHITE "#FFFFFF" -/// Full black. rgb(0, 0, 0) +/// Black rgb(0, 0, 0) #define COLOR_BLACK "#000000" // THE THREE PRIMARIES COLORS DEFINES. -/// Full red. rgb(255, 0, 0) +/// Red rgb(255, 0, 0) #define COLOR_RED "#FF0000" -/// Full green. rgb(0, 255, 0) +/// Green rgb(0, 255, 0) #define COLOR_GREEN "#00FF00" -/// Full blue. rgb(0, 0, 255) +/// Blue rgb(0, 0, 255) #define COLOR_BLUE "#0000FF" //mix of two full primary colors -/// full cyan rgb(0, 255, 255) B + G +/// Cyan rgb(0, 255, 255) B + G #define COLOR_CYAN "#00FFFF" -/// full magenta(not pink) rgb(255, 0, 255) R+B -#define COLOR_PINK "#FF00FF" -/// full yellow rgb(255, 255, 0) R+G +/// Magenta rgb(255, 0, 255) R+B +#define COLOR_MAGENTA "#FF00FF" +/// Yellow rgb(255, 255, 0) R+G #define COLOR_YELLOW "#FFFF00" // colors define in use bellow + +/// Olive rgb(128, 128, 0) +#define COLOR_OLIVE "#808000" +/// Silver rgb(192, 192, 192) shade of grey #define COLOR_SILVER "#C0C0C0" +/// Gray rgb(128, 128, 128) +#define COLOR_GRAY "#808080" #define COLOR_FLOORTILE_GRAY "#8D8B8B" @@ -46,15 +52,15 @@ #define COLOR_DARK_RED "#A50824" +/// Maroon rgb(128, 0, 0) shade of red #define COLOR_MAROON "#800000" + #define COLOR_VIVID_RED "#FF3232" #define COLOR_LIGHT_GRAYISH_RED "#E4C7C5" #define COLOR_SOFT_RED "#FA8282" #define COLOR_VERY_SOFT_YELLOW "#FAE48E" -#define COLOR_OLIVE "#808000" - ///light green rgb( 0, 128, 0) #define COLOR_LIGHT_GREEN "#008000" #define COLOR_DARK_MODERATE_LIME_GREEN "#44964A" @@ -62,11 +68,11 @@ #define COLOR_TEAL "#008080" #define COLOR_MODERATE_BLUE "#555CC2" - +/// Purple rgb( 128, 0, 128) #define COLOR_PURPLE "#800080" #define COLOR_STRONG_VIOLET "#6927c5" -#define COLOR_BEIGE "#CEB689" +#define LIGHT_BEIGE "#CEB689" #define COLOR_DARK_MODERATE_ORANGE "#8B633B" #define COLOR_BROWN "#BA9F6D" diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index d69f0891ffa0..a6a7aa53f182 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -141,8 +141,8 @@ #define WIELD_DELAY_VERY_SLOW 10 #define WIELD_DELAY_HORRIBLE 12 -///This is how long you must wait after throwing something to throw again -#define THROW_DELAY (0.4 SECONDS) +///This is how long you must wait to throw again after throwing two things +#define THROW_DELAY (1.5 SECONDS) //Explosion level thresholds. Upper bounds #define EXPLOSION_THRESHOLD_VLOW 50 diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm index e9862be49dd5..9846e974827e 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm @@ -62,3 +62,12 @@ /// For any additional things that should happen when a xeno's melee_attack_additional_effects_self() proc is called #define COMSIG_XENO_SLASH_ADDITIONAL_EFFECTS_SELF "xeno_slash_additional_effects_self" + +/// From /datum/action/xeno_action/onclick/plant_weeds/use_ability(): (atom/A) +#define COMSIG_XENO_PLANT_RESIN_NODE "xeno_plant_resin_node" + +/// From //mob/living/carbon/xenomorph/proc/emit_pheromones(): (pheromone, emit_cost) +#define COMSIG_XENO_START_EMIT_PHEROMONES "xeno_start_emit_pheromones" + +/// From /obj/effect/alien/resin/special/eggmorph/attack_alien: (mob/living/carbon/xenomorph/M) +#define COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER "xeno_take_hugger_from_morpher" diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mind.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mind.dm new file mode 100644 index 000000000000..2cca5fe18c0d --- /dev/null +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mind.dm @@ -0,0 +1,2 @@ +///from mind/transfer_to. Sent after the mind has been transferred to a different body: (mob/previous_body) +#define COMSIG_MIND_TRANSFERRED "mind_transferred" diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm index 58021ba564a2..710e4d9ae20a 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm @@ -59,6 +59,9 @@ #define COMSIG_MOB_WEED_SLOWDOWN "mob_weeds_slowdown" #define COMSIG_MOB_TAKE_DAMAGE "mob_take_damage" // TODO: move COMSIG_XENO_TAKE_DAMAGE & COMSIG_HUMAN_TAKE_DAMAGE to this + +///From /mob/living/carbon/human/attack_alien(): (mob/living/carbon/xenomorph/M, dam_bonus) +#define COMSIG_MOB_TACKLED_DOWN "mob_tackled_down" ///called in /client/change_view() #define COMSIG_MOB_CHANGE_VIEW "mob_change_view" #define COMPONENT_OVERRIDE_VIEW (1<<0) @@ -170,3 +173,5 @@ #define COMSIG_MOB_EFFECT_CLOAK_CANCEL "mob_effect_cloak_cancel" #define COMSIG_MOB_END_TUTORIAL "mob_end_tutorial" + +#define COMSIG_MOB_NESTED "mob_nested" diff --git a/code/__DEFINES/dcs/signals/atom/signals_item.dm b/code/__DEFINES/dcs/signals/atom/signals_item.dm index 7b3b218e658a..f0456f8dd9f6 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_item.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_item.dm @@ -77,3 +77,4 @@ #define COMSIG_CAMERA_SET_TARGET "camera_manager_set_target" #define COMSIG_CAMERA_SET_AREA "camera_manager_set_area" #define COMSIG_CAMERA_CLEAR "camera_manager_clear_target" +#define COMSIG_CAMERA_REFRESH "camera_manager_refresh" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 5628395d7ffb..63e79cdf676d 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -219,6 +219,8 @@ #define FLOOR_PLANE -7 /// Game Plane, where most of the game objects reside #define GAME_PLANE -6 +/// Above Game Plane. For things which are above game objects, but below screen effects. +#define ABOVE_GAME_PLANE -5 /// Roof plane, disappearing when entering buildings #define ROOF_PLANE -4 diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 097a0f5d5e71..3fd2e3caa64b 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -49,7 +49,7 @@ GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR) GLOBAL_LIST_INIT(em_block_color, EM_BLOCK_COLOR) /// A set of appearance flags applied to all emissive and emissive blocker overlays. #define EMISSIVE_APPEARANCE_FLAGS (KEEP_APART|KEEP_TOGETHER|RESET_COLOR|RESET_TRANSFORM) -/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independant of the RGB value of [EM_BLOCK_COLOR]. +/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independent of the RGB value of [EM_BLOCK_COLOR]. #define EM_MASK_MATRIX list(0,0,0,1/3, 0,0,0,1/3, 0,0,0,1/3, 0,0,0,0, 1,1,1,0) /// A globaly cached version of [EM_MASK_MATRIX] for quick access. GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX) diff --git a/code/__DEFINES/minimap.dm b/code/__DEFINES/minimap.dm index 003d723600c4..57c5ffeba38a 100644 --- a/code/__DEFINES/minimap.dm +++ b/code/__DEFINES/minimap.dm @@ -71,7 +71,6 @@ GLOBAL_LIST_INIT(all_minimap_flags, bitfield2list(MINIMAP_FLAG_ALL)) #define MINIMAP_ICON_COLOR_COMMANDER "#c6fcfc" #define MINIMAP_ICON_COLOR_HEAD "#F0C542" -#define MINIMAP_ICON_COLOR_SILVER "#c0c0c0" #define MINIMAP_ICON_COLOR_BRONZE "#eb9545" #define MINIMAP_ICON_COLOR_DOCTOR "#b83737" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 8a8e9678fbdf..b195328264cd 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -98,10 +98,9 @@ #define INTERRUPT_MIDDLECLICK (1<<15) #define INTERRUPT_DAZED (1<<16) #define INTERRUPT_EMOTE (1<<17) -// By default not in INTERRUPT_ALL (too niche) #define INTERRUPT_CHANGED_LYING (1<<18) -#define INTERRUPT_ALL (INTERRUPT_DIFF_LOC|INTERRUPT_DIFF_TURF|INTERRUPT_UNCONSCIOUS|INTERRUPT_KNOCKED_DOWN|INTERRUPT_STUNNED|INTERRUPT_NEEDHAND|INTERRUPT_RESIST) +#define INTERRUPT_ALL (INTERRUPT_DIFF_LOC|INTERRUPT_DIFF_TURF|INTERRUPT_UNCONSCIOUS|INTERRUPT_KNOCKED_DOWN|INTERRUPT_STUNNED|INTERRUPT_NEEDHAND|INTERRUPT_RESIST|INTERRUPT_CHANGED_LYING) #define INTERRUPT_ALL_OUT_OF_RANGE (INTERRUPT_ALL & (~INTERRUPT_DIFF_TURF)|INTERRUPT_OUT_OF_RANGE) #define INTERRUPT_MOVED (INTERRUPT_DIFF_LOC|INTERRUPT_DIFF_TURF|INTERRUPT_RESIST) #define INTERRUPT_NO_NEEDHAND (INTERRUPT_ALL & (~INTERRUPT_NEEDHAND)) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 9cd69e61c8b2..7ec2ab8b975e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -89,6 +89,8 @@ #define DAZE "daze" #define SLOW "slow" #define SUPERSLOW "superslow" +#define ROOT "root" + //================================================= //I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches @@ -100,7 +102,7 @@ //Bitflags defining which status effects could be or are inflicted on a mob -#define STATUS_FLAGS_DEBILITATE (CANSTUN|CANKNOCKOUT|CANDAZE|CANSLOW) +#define STATUS_FLAGS_DEBILITATE (CANSTUN|CANKNOCKOUT|CANDAZE|CANSLOW|CANROOT) #define CANSTUN (1<<0) #define CANKNOCKDOWN (1<<1) @@ -108,6 +110,7 @@ #define CANPUSH (1<<3) #define LEAPING (1<<4) #define PASSEMOTES (1<<5) //holders inside of mob that need to see emotes. +#define CANROOT (1<<6) #define GODMODE (1<<12) #define FAKEDEATH (1<<13) //Replaces stuff like changeling.changeling_fakedeath #define DISFIGURED (1<<14) //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system @@ -134,7 +137,9 @@ #define XENO_HIVE_YAUTJA "xeno_hive_yautja" #define XENO_HIVE_RENEGADE "xeno_hive_renegade" -#define ALL_XENO_HIVES list(XENO_HIVE_NORMAL, XENO_HIVE_CORRUPTED, XENO_HIVE_ALPHA, XENO_HIVE_BRAVO, XENO_HIVE_CHARLIE, XENO_HIVE_DELTA, XENO_HIVE_FERAL, XENO_HIVE_TAMED, XENO_HIVE_MUTATED, XENO_HIVE_FORSAKEN, XENO_HIVE_YAUTJA, XENO_HIVE_RENEGADE) +#define XENO_HIVE_TUTORIAL "xeno_hive_tutorial" + +#define ALL_XENO_HIVES list(XENO_HIVE_NORMAL, XENO_HIVE_CORRUPTED, XENO_HIVE_ALPHA, XENO_HIVE_BRAVO, XENO_HIVE_CHARLIE, XENO_HIVE_DELTA, XENO_HIVE_FERAL, XENO_HIVE_TAMED, XENO_HIVE_MUTATED, XENO_HIVE_FORSAKEN, XENO_HIVE_YAUTJA, XENO_HIVE_RENEGADE, XENO_HIVE_TUTORIAL) //================================================= diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index 0f04006859e9..2b018c0a2810 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -156,6 +156,7 @@ GLOBAL_LIST_INIT(ROLES_UNASSIGNED, list(JOB_SQUAD_MARINE)) GLOBAL_LIST_INIT(whitelist_hierarchy, list(WHITELIST_NORMAL, WHITELIST_COUNCIL, WHITELIST_LEADER)) //================================================= + #define WHITELIST_YAUTJA (1<<0) ///Old holders of YAUTJA_ELDER #define WHITELIST_YAUTJA_LEGACY (1<<1) @@ -170,15 +171,20 @@ GLOBAL_LIST_INIT(whitelist_hierarchy, list(WHITELIST_NORMAL, WHITELIST_COUNCIL, ///Old holders of COMMANDER_COUNCIL for 3 months #define WHITELIST_COMMANDER_COUNCIL_LEGACY (1<<7) #define WHITELIST_COMMANDER_LEADER (1<<8) +///Former CO senator/whitelist overseer award +#define WHITELIST_COMMANDER_COLONEL (1<<9) -#define WHITELIST_JOE (1<<9) -#define WHITELIST_SYNTHETIC (1<<10) -#define WHITELIST_SYNTHETIC_COUNCIL (1<<11) +#define WHITELIST_JOE (1<<10) +#define WHITELIST_SYNTHETIC (1<<11) +#define WHITELIST_SYNTHETIC_COUNCIL (1<<12) ///Old holders of SYNTHETIC_COUNCIL for 3 months -#define WHITELIST_SYNTHETIC_COUNCIL_LEGACY (1<<12) -#define WHITELIST_SYNTHETIC_LEADER (1<<13) +#define WHITELIST_SYNTHETIC_COUNCIL_LEGACY (1<<13) +#define WHITELIST_SYNTHETIC_LEADER (1<<14) + +///Senior Enlisted Advisor, auto granted by R_MENTOR +#define WHITELIST_MENTOR (1<<15) + -#define WHITELIST_MENTOR (1<<14) #define WHITELISTS_GENERAL (WHITELIST_YAUTJA|WHITELIST_COMMANDER|WHITELIST_SYNTHETIC|WHITELIST_MENTOR|WHITELIST_JOE) #define WHITELISTS_COUNCIL (WHITELIST_YAUTJA_COUNCIL|WHITELIST_COMMANDER_COUNCIL|WHITELIST_SYNTHETIC_COUNCIL) #define WHITELISTS_LEGACY_COUNCIL (WHITELIST_YAUTJA_COUNCIL_LEGACY|WHITELIST_COMMANDER_COUNCIL_LEGACY|WHITELIST_SYNTHETIC_COUNCIL_LEGACY) @@ -186,7 +192,29 @@ GLOBAL_LIST_INIT(whitelist_hierarchy, list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define WHITELIST_EVERYTHING (WHITELISTS_GENERAL|WHITELISTS_COUNCIL|WHITELISTS_LEADER) -#define isCouncil(A) (GLOB.RoleAuthority.roles_whitelist[A.ckey] & WHITELIST_YAUTJA_COUNCIL) || (GLOB.RoleAuthority.roles_whitelist[A.ckey] & WHITELIST_SYNTHETIC_COUNCIL) || (GLOB.RoleAuthority.roles_whitelist[A.ckey] & WHITELIST_COMMANDER_COUNCIL) +#define COUNCIL_LIST list(WHITELIST_COMMANDER_COUNCIL, WHITELIST_SYNTHETIC_COUNCIL, WHITELIST_YAUTJA_COUNCIL) +#define SENATOR_LIST list(WHITELIST_COMMANDER_LEADER, WHITELIST_SYNTHETIC_LEADER, WHITELIST_YAUTJA_LEADER) +#define isCouncil(A) (A.check_whitelist_status_list(COUNCIL_LIST)) +#define isSenator(A) (A.check_whitelist_status_list(SENATOR_LIST)) + +DEFINE_BITFIELD(whitelist_status, list( + "WHITELIST_YAUTJA" = WHITELIST_YAUTJA, + "WHITELIST_YAUTJA_LEGACY" = WHITELIST_YAUTJA_LEGACY, + "WHITELIST_YAUTJA_COUNCIL" = WHITELIST_YAUTJA_COUNCIL, + "WHITELIST_YAUTJA_COUNCIL_LEGACY" = WHITELIST_YAUTJA_COUNCIL_LEGACY, + "WHITELIST_YAUTJA_LEADER" = WHITELIST_YAUTJA_LEADER, + "WHITELIST_COMMANDER" = WHITELIST_COMMANDER, + "WHITELIST_COMMANDER_COUNCIL" = WHITELIST_COMMANDER_COUNCIL, + "WHITELIST_COMMANDER_COUNCIL_LEGACY" = WHITELIST_COMMANDER_COUNCIL_LEGACY, + "WHITELIST_COMMANDER_COLONEL" = WHITELIST_COMMANDER_COLONEL, + "WHITELIST_COMMANDER_LEADER" = WHITELIST_COMMANDER_LEADER, + "WHITELIST_JOE" = WHITELIST_JOE, + "WHITELIST_SYNTHETIC" = WHITELIST_SYNTHETIC, + "WHITELIST_SYNTHETIC_COUNCIL" = WHITELIST_SYNTHETIC_COUNCIL, + "WHITELIST_SYNTHETIC_COUNCIL_LEGACY" = WHITELIST_SYNTHETIC_COUNCIL_LEGACY, + "WHITELIST_SYNTHETIC_LEADER" = WHITELIST_SYNTHETIC_LEADER, + "WHITELIST_MENTOR" = WHITELIST_MENTOR, +)) //================================================= diff --git a/code/__DEFINES/paygrade_defs/civilian.dm b/code/__DEFINES/paygrade_defs/civilian.dm index ed99a363dedd..ed25a3f50af5 100644 --- a/code/__DEFINES/paygrade_defs/civilian.dm +++ b/code/__DEFINES/paygrade_defs/civilian.dm @@ -19,9 +19,12 @@ /// SYN, Synthetic #define PAY_SHORT_SYN "SYN" -/// OPR, Operative +/// OPR, Operator #define PAY_SHORT_OPR "OPR" +/// CDNM, Operative (intended for codenamed people IE Operative Theta) +#define PAY_SHORT_CDNM "CDNM" + /// CPO, Officer #define PAY_SHORT_CPO "CPO" diff --git a/code/__DEFINES/paygrade_defs/mercs.dm b/code/__DEFINES/paygrade_defs/mercs.dm new file mode 100644 index 000000000000..4cad90496e24 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/mercs.dm @@ -0,0 +1,45 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// MERCENARIES +/// FL-S, Standard +#define PAY_SHORT_FL_S "FL-S" + +/// FL-M, Medic +#define PAY_SHORT_FL_M "FL-M" + +/// FL-WL, Warlord +#define PAY_SHORT_FL_WL "FL-WL" + +/// EFL-S, Elite Standard +#define PAY_SHORT_EFL_S "EFL-S" + +/// EFL-M, Elite Medic +#define PAY_SHORT_EFL_M "EFL-M" + +/// EFL-E, Elite Engineer +#define PAY_SHORT_EFL_E "EFL-E" + +/// EFL-H, Elite Heavy +#define PAY_SHORT_EFL_H "EFL-H" + +/// EFL-WL, Elite Warlord +#define PAY_SHORT_EFL_TL "EFL-TL" + +// VANGUARD'S ARROW INC +/// VAI-S, Standard +#define PAY_SHORT_VAI_S "VAI-S" + +/// VAI-M, Medic +#define PAY_SHORT_VAI_M "VAI-M" + +/// VAI-E, Engineer +#define PAY_SHORT_VAI_E "VAI-E" + +/// VAI-G, Machinegunner +#define PAY_SHORT_VAI_G "VAI-G" + +/// VAI-SN, Synthetic +#define PAY_SHORT_VAI_SN "VAI-SN" + +/// VAI-L, Team Leader +#define PAY_SHORT_VAI_L "VAI-L" diff --git a/code/__DEFINES/paygrade_defs/paygrade.dm b/code/__DEFINES/paygrade_defs/paygrade.dm new file mode 100644 index 000000000000..5bf9a58d7447 --- /dev/null +++ b/code/__DEFINES/paygrade_defs/paygrade.dm @@ -0,0 +1,6 @@ +/// Paygrade is equivalent to or is an enlisted position. +#define GRADE_ENLISTED 0 +/// Paygrade is equivalent to or is an officer. +#define GRADE_OFFICER 1 +/// Paygrade is for high command or senior leadership. Military flag officers. +#define GRADE_FLAG 2 diff --git a/code/__DEFINES/paygrade_defs/twe.dm b/code/__DEFINES/paygrade_defs/twe.dm new file mode 100644 index 000000000000..da1c6a5fa4fb --- /dev/null +++ b/code/__DEFINES/paygrade_defs/twe.dm @@ -0,0 +1,38 @@ +// Paygrade shorthand defines, to allow clearer designation. + +// THREE WORLD EMPIRE +/// RMC1, Heitai-Marine +#define PAY_SHORT_RMC1 "RMC1" + +/// RMC2, Santo-Lance Corporal +#define PAY_SHORT_RMC2 "RMC2" + +/// RMC3, Nito-Corporal +#define PAY_SHORT_RMC3 "RMC3" + +/// RMC4, Itto-Sergeant +#define PAY_SHORT_RMC4 "RMC4" + +/// RNOW, Warrant Officer +#define PAY_SHORT_RNOW "RNOW" + +/// RNO1, Second Lieutenant +#define PAY_SHORT_RNO1 "RNO1" + +/// RNO2, First Lieutenant +#define PAY_SHORT_RNO2 "RNO2" + +/// RNO3, Standing Officer +#define PAY_SHORT_RNO3 "RNO3" + +/// RNO4, Captain +#define PAY_SHORT_RNO4 "RNO4" + +/// RNO5, Admiral +#define PAY_SHORT_RNO5 "RNO5" + +/// RNO6, Grand Admiral +#define PAY_SHORT_RNO6 "RNO6" + +/// EMP, Emperor +#define PAY_SHORT_EMP "EMP" diff --git a/code/__DEFINES/paygrade_defs/weyland.dm b/code/__DEFINES/paygrade_defs/weyland.dm index 1b6c168e9b6e..dd65caa6db00 100644 --- a/code/__DEFINES/paygrade_defs/weyland.dm +++ b/code/__DEFINES/paygrade_defs/weyland.dm @@ -1,6 +1,6 @@ // Paygrade shorthand defines, to allow clearer designation. -// Weyland Yutani +// Weyland Yutani Corporate /// WYC1, Trainee #define PAY_SHORT_WYC1 "WYC1" @@ -30,3 +30,49 @@ /// WYC10, Director #define PAY_SHORT_WYC10 "WYC10" + +// Weyland Yutani Private Military +/// PMC-OP, Operator, standard PMC. +#define PAY_SHORT_PMC_OP "PMC-OP" + +/// PMC-EN, Enforcer +#define PAY_SHORT_PMC_EN "PMC-EN" + +/// PMC-SS, Support Specialist +#define PAY_SHORT_PMC_SS "PMC-SS" + +/// PMC-MS, Medical Specialist +#define PAY_SHORT_PMC_MS "PMC-MS" + +/// PMC-WS, Weapons Specialist +#define PAY_SHORT_PMC_WS "PMC-WS" + +/// PMC-VS, Vehicle Specialist +#define PAY_SHORT_PMC_VS "PMC-VS" + +/// PMC-XS, Xeno Specialist (Handler) +#define PAY_SHORT_PMC_XS "PMC-XS" + +/// PMC-TL, Team Leader +#define PAY_SHORT_PMC_TL "PMC-TL" + +/// PMC-DOC, Trauma Surgeon +#define PAY_SHORT_PMC_DOC "PMC-DOC" + +/// PMC-ENG, Technician +#define PAY_SHORT_PMC_TEC "PMC-TEC" + +/// PMC-ELR, Elite Responder +#define PAY_SHORT_PMC_ELR "PMC-ELR" + +/// PMC-ELM, Elite Medic +#define PAY_SHORT_PMC_ELM "PMC-ELM" + +/// PMC-ELG, Elite Gunner +#define PAY_SHORT_PMC_ELG "PMC-ELG" + +/// PMC-ETL, Elite Team Leader +#define PAY_SHORT_PMC_ETL "PMC-ETL" + +/// PMC-DIR, PMC Director +#define PAY_SHORT_PMC_DIR "PMC-DIR" diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 9cb67e1e0de1..96335a3c1acf 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -89,13 +89,13 @@ //! ### SS initialization hints /** * Negative values incidate a failure or warning of some kind, positive are good. - * 0 and 1 are unused so that TRUE and FALSE are guarenteed to be invalid values. + * 0 and 1 are unused so that TRUE and FALSE are guaranteed to be invalid values. */ /// Subsystem failed to initialize entirely. Print a warning, log, and disable firing. #define SS_INIT_FAILURE -2 -/// The default return value which must be overriden. Will succeed with a warning. +/// The default return value which must be overridden. Will succeed with a warning. #define SS_INIT_NONE -1 /// Subsystem initialized sucessfully. diff --git a/code/__DEFINES/text.dm b/code/__DEFINES/text.dm index 0ce7e508daac..26567be26255 100644 --- a/code/__DEFINES/text.dm +++ b/code/__DEFINES/text.dm @@ -23,4 +23,4 @@ #define MAX_EMOTE_LEN 256 #define MAX_PAPER_MESSAGE_LEN 3072 #define MAX_BOOK_MESSAGE_LEN 9216 -#define MAX_NAME_LEN 26 +#define MAX_NAME_LEN 28 diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index c561a64ebf58..fdfec5e8ca08 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "7.0.1" +#define TGS_DMAPI_VERSION "7.0.2" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -426,6 +426,7 @@ /** * Send a message to connected chats. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * admin_only: If [TRUE], message will be sent to admin connected chats. Vice-versa applies. @@ -435,6 +436,7 @@ /** * Send a private message to a specific user. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * user: The [/datum/tgs_chat_user] to PM. @@ -444,6 +446,7 @@ /** * Send a message to connected chats that are flagged as game-related in TGS. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * channels - Optional list of [/datum/tgs_chat_channel]s to restrict the message to. diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index c2abe21a26ad..dc714472510a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -169,7 +169,7 @@ #define TRAIT_FOREIGN_BIO "t_foreign_bio" /// Eye color changes on intent. (G1 Synths and WJs) #define TRAIT_INTENT_EYES "t_intent_eyes" -/// Masked synthetic biology. Basic medHUDs will percieve the mob as human. (Infiltrator Synths) +/// Masked synthetic biology. Basic medHUDs will perceive the mob as human. (Infiltrator Synths) #define TRAIT_INFILTRATOR_SYNTH "t_infiltrator_synth" /// Makes it impossible to strip the inventory of this mob. #define TRAIT_UNSTRIPPABLE "t_unstrippable" @@ -177,7 +177,7 @@ // HIVE TRAITS /// If the Hive is a Xenonid Hive #define TRAIT_XENONID "t_xenonid" -/// If the Hive delays round end (this is overriden for some hives). Does not occur naturally. Must be applied in events. +/// If the Hive delays round end (this is overridden for some hives). Does not occur naturally. Must be applied in events. #define TRAIT_NO_HIVE_DELAY "t_no_hive_delay" /// If the Hive uses it's colors on the mobs. Does not occur naturally, excepting the Mutated hive. #define TRAIT_NO_COLOR "t_no_color" diff --git a/code/__DEFINES/typecheck/mobs_generic.dm b/code/__DEFINES/typecheck/mobs_generic.dm index 1d848decda4e..aed270cdca25 100644 --- a/code/__DEFINES/typecheck/mobs_generic.dm +++ b/code/__DEFINES/typecheck/mobs_generic.dm @@ -1,11 +1,8 @@ -#define isAI(A) (istype(A, /mob/living/silicon/ai)) #define isARES(A) (istype(A, /mob/living/silicon/decoy/ship_ai)) #define isSilicon(A) (istype(A, /mob/living/silicon)) #define isRemoteControlling(M) (M && M.client && M.client.remote_control) -#define isRemoteControllingOrAI(M) ((M && M.client && M.client.remote_control) || (istype(M, /mob/living/silicon/ai))) #define isbrain(A) (istype(A, /mob/living/brain)) -#define isrobot(A) (istype(A, /mob/living/silicon/robot)) #define isanimal(A) (istype(A, /mob/living/simple_animal)) #define isanimalhostile(A) (istype(A, /mob/living/simple_animal/hostile)) #define isanimalretaliate(A) (istype(A, /mob/living/simple_animal/hostile/retaliate)) @@ -17,12 +14,9 @@ #define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp)) #define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown)) #define iscarbon(A) (istype(A, /mob/living/carbon)) -#define isborg(A) (isrobot(A) && !ismaintdrone(A)) -#define ishighersilicon(A) (isborg(A) || isRemoteControllingOrAI(A)) #define isliving(A) (istype(A, /mob/living)) #define isobserver(A) (istype(A, /mob/dead/observer)) #define isorgan(A) (istype(A, /obj/limb)) #define isnewplayer(A) (istype(A, /mob/new_player)) -#define ismaintdrone(A) (istype(A,/mob/living/silicon/robot/drone)) #define isHellhound(A) (istype(A, /mob/living/carbon/xenomorph/hellhound)) #define isaghost(A) (copytext(A.key, 1, 2) == "@") diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index d12e4c1c6c5a..e3a35d0c4744 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -183,6 +183,9 @@ /// For how long the buff lasts #define XENO_HIJACK_EVILUTION_TIME (3 MINUTES) +/// If this is marine to xeno ratio during hijack, xenos see marines on tacmap +#define HIJACK_RATIO_FOR_TACMAP 0.8 + /// Xenos need to have their number to marines ratio lower than this to get larvae from pylons #define ENDGAME_LARVA_CAP_MULTIPLIER 0.5 diff --git a/code/__HELPERS/#maths.dm b/code/__HELPERS/#maths.dm index 6ea534a79923..825090bc4f3b 100644 --- a/code/__HELPERS/#maths.dm +++ b/code/__HELPERS/#maths.dm @@ -8,12 +8,11 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, // MATH DEFINES -#define Ceiling(x) (-round(-x)) -#define Clamp(val, min_val, max_val) (max(min_val, min(val, max_val))) +#define Ceiling(x) (-round(-(x))) #define CLAMP01(x) (clamp(x, 0, 1)) // cotangent -#define Cot(x) (1 / Tan(x)) +#define Cot(x) (1 / tan(x)) // cosecant #define Csc(x) (1 / sin(x)) @@ -21,19 +20,12 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, #define Default(a, b) (a ? a : b) #define Floor(x) (round(x)) -//Finds nearest integer to x, above or below -//something.5 or higher, round up, else round down -#define roundNearest(x) (((Ceiling(x) - x) <= (x - Floor(x))) ? Ceiling(x) : Floor(x)) - // Greatest Common Divisor - Euclid's algorithm #define Gcd(a, b) (b ? Gcd(b, a % b) : a) #define Inverse(x) (1 / x) #define IsEven(x) (x % 2 == 0) -// Returns true if val is from min to max, inclusive. -#define IsInRange(val, min, max) (min <= val && val <= max) - #define IsInteger(x) (Floor(x) == x) #define IsOdd(x) (!IsEven(x)) #define IsMultiple(x, y) (x % y == 0) @@ -42,14 +34,11 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, #define Lcm(a, b) (abs(a) / Gcd(a, b) * abs(b)) // Returns the nth root of x. -#define Root(n, x) (x ** (1 / n)) +#define NRoot(n, x) (x ** (1 / n)) // secant #define Sec(x) (1 / cos(x)) -// tangent -#define Tan(x) (sin(x) / cos(x)) - // 57.2957795 = 180 / Pi #define ToDegrees(radians) (radians * 57.2957795) @@ -85,11 +74,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, return rotated_point -// Round up -/proc/n_ceil(num) - if(isnum(num)) - return round(num)+1 - ///Format a power value in W, kW, MW, or GW. /proc/display_power(powerused) if(powerused < 1000) //Less than a kW @@ -100,53 +84,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, return "[round((powerused * 0.000001),0.001)] MW" return "[round((powerused * 0.000000001),0.0001)] GW" -/** - * Get a list of turfs in a line from `starting_atom` to `ending_atom`. - * - * Uses the ultra-fast [Bresenham Line-Drawing Algorithm](https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm). - */ -/proc/get_line(atom/starting_atom, atom/ending_atom) - var/current_x_step = starting_atom.x//start at x and y, then add 1 or -1 to these to get every turf from starting_atom to ending_atom - var/current_y_step = starting_atom.y - var/starting_z = starting_atom.z - - var/list/line = list(get_turf(starting_atom))//get_turf(atom) is faster than locate(x, y, z) - - var/x_distance = ending_atom.x - current_x_step //x distance - var/y_distance = ending_atom.y - current_y_step - - var/abs_x_distance = abs(x_distance)//Absolute value of x distance - var/abs_y_distance = abs(y_distance) - - var/x_distance_sign = SIGN(x_distance) //Sign of x distance (+ or -) - var/y_distance_sign = SIGN(y_distance) - - var/x = abs_x_distance >> 1 //Counters for steps taken, setting to distance/2 - var/y = abs_y_distance >> 1 //Bit-shifting makes me l33t. It also makes get_line() unnessecarrily fast. - - if(abs_x_distance >= abs_y_distance) //x distance is greater than y - for(var/distance_counter in 0 to (abs_x_distance - 1))//It'll take abs_x_distance steps to get there - y += abs_y_distance - - if(y >= abs_x_distance) //Every abs_y_distance steps, step once in y direction - y -= abs_x_distance - current_y_step += y_distance_sign - - current_x_step += x_distance_sign //Step on in x direction - line += locate(current_x_step, current_y_step, starting_z)//Add the turf to the list - else - for(var/distance_counter in 0 to (abs_y_distance - 1)) - x += abs_x_distance - - if(x >= abs_y_distance) - x -= abs_y_distance - current_x_step += x_distance_sign - - current_y_step += y_distance_sign - line += locate(current_x_step, current_y_step, starting_z) - return line - - ///chances are 1:value. anyprob(1) will always return true /proc/anyprob(value) return (rand(1,value)==value) diff --git a/code/__HELPERS/_time.dm b/code/__HELPERS/_time.dm index 8386feff41c2..733ca659501b 100644 --- a/code/__HELPERS/_time.dm +++ b/code/__HELPERS/_time.dm @@ -48,7 +48,7 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) return gameTimestamp("mm:ss", time) /proc/time_left_until(target_time, current_time, time_unit) - return CEILING(target_time - current_time, 1) / time_unit + return Ceiling(target_time - current_time) / time_unit /proc/text2duration(text = "00:00") // Attempts to convert time text back to time value var/split_text = splittext(text, ":") @@ -91,21 +91,21 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) return "right now" if(second < 60) return "[second] second[(second != 1)? "s":""]" - var/minute = FLOOR(second / 60, 1) + var/minute = Floor(second / 60) second = FLOOR(MODULUS(second, 60), round_seconds_to) var/secondT if(second) secondT = " and [second] second[(second != 1)? "s":""]" if(minute < 60) return "[minute] minute[(minute != 1)? "s":""][secondT]" - var/hour = FLOOR(minute / 60, 1) + var/hour = Floor(minute / 60) minute = MODULUS(minute, 60) var/minuteT if(minute) minuteT = " and [minute] minute[(minute != 1)? "s":""]" if(hour < 24) return "[hour] hour[(hour != 1)? "s":""][minuteT][secondT]" - var/day = FLOOR(hour / 24, 1) + var/day = Floor(hour / 24) hour = MODULUS(hour, 24) var/hourT if(hour) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 5ef9ff7e35c3..8b11a3797627 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -151,16 +151,6 @@ var/list/speaker_coverage = list() for(var/obj/item/device/radio/R in radios) if(R) - //Cyborg checks. Receiving message uses a bit of cyborg's charge. - var/obj/item/device/radio/borg/BR = R - if(istype(BR) && BR.myborg) - var/mob/living/silicon/robot/borg = BR.myborg - var/datum/robot_component/CO = borg.get_component("radio") - if(!CO) - continue //No radio component (Shouldn't happen) - if(!borg.is_component_functioning("radio") || !borg.cell_use_power(CO.active_usage)) - continue //No power. - var/turf/speaker = get_turf(R) if(speaker) for(var/turf/T in hear(R.canhear_range,speaker)) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 97243002740d..29755683165c 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -548,9 +548,9 @@ world if (!value) return color var/list/RGB = ReadRGB(color) - RGB[1] = Clamp(RGB[1]+value,0,255) - RGB[2] = Clamp(RGB[2]+value,0,255) - RGB[3] = Clamp(RGB[3]+value,0,255) + RGB[1] = clamp(RGB[1]+value,0,255) + RGB[2] = clamp(RGB[2]+value,0,255) + RGB[3] = clamp(RGB[3]+value,0,255) return rgb(RGB[1],RGB[2],RGB[3]) /proc/sort_atoms_by_layer(list/atoms) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 830e612712e2..30ef9428586d 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -391,6 +391,19 @@ original += result return original +/// Returns a list of atoms sorted by each entry's distance to `target`. +/proc/sort_list_dist(list/atom/list_to_sort, atom/target) + var/list/distances = list() + for(var/atom/A as anything in list_to_sort) + // Just in case this happens anyway. + if(!istype(A)) + stack_trace("sort_list_dist() was called with a list containing a non-atom object. ([A.type])") + return list_to_sort + + distances[A] = get_dist_sqrd(A, target) + + return sortTim(distances, GLOBAL_PROC_REF(cmp_numeric_asc), TRUE) + //Converts a bitfield to a list of numbers (or words if a wordlist is provided) /proc/bitfield2list(bitfield = 0, list/wordlist) var/list/r = list() diff --git a/code/__HELPERS/sorts/_Main.dm b/code/__HELPERS/sorts/_Main.dm index 5d6f5210be47..55af258b81d2 100644 --- a/code/__HELPERS/sorts/_Main.dm +++ b/code/__HELPERS/sorts/_Main.dm @@ -393,7 +393,7 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) var/count1 = 0 //# of times in a row that first run won var/count2 = 0 // " " " " " " second run won - //do the straightfoward thin until one run starts winning consistently + //do the straightforward thin until one run starts winning consistently do //ASSERT(len1 > 1 && len2 > 0) @@ -493,7 +493,7 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) var/count1 = 0 //# of times in a row that first run won var/count2 = 0 // " " " " " " second run won - //do the straightfoward thing until one run starts winning consistently + //do the straightforward thing until one run starts winning consistently do //ASSERT(len1 > 0 && len2 > 1) if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 545b4fb76db2..7324c4a9634e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -40,11 +40,11 @@ #define skillcheckexplicit(user, skill, req_level) ((!user.skills || user.skills.is_skilled(skill, req_level, TRUE))) // Ensure the frequency is within bounds of what it should be sending/receiving at -// Sets f within bounds via `Clamp(round(f), 1441, 1489)` +// Sets f within bounds via `clamp(round(f), 1441, 1489)` // If f is even, adds 1 to its value to make it odd -#define sanitize_frequency(f) ((Clamp(round(f), 1441, 1489) % 2) == 0 ? \ - Clamp(round(f), 1441, 1489) + 1 : \ - Clamp(round(f), 1441, 1489) \ +#define sanitize_frequency(f) ((clamp(round(f), 1441, 1489) % 2) == 0 ? \ + clamp(round(f), 1441, 1489) + 1 : \ + clamp(round(f), 1441, 1489) \ ) //Turns 1479 into 147.9 @@ -324,56 +324,17 @@ if(!newname) //we'll stick with the oldname then return - if(cmptext("ai",role)) - if(isAI(src)) - var/mob/living/silicon/ai/A = src - oldname = null//don't bother with the records update crap - A.SetName(newname) - fully_replace_character_name(oldname,newname) - - -//When a borg is activated, it can choose which AI it wants to be slaved to -/proc/active_ais() - . = list() - for(var/mob/living/silicon/ai/A in GLOB.alive_mob_list) - if(A.stat == DEAD) - continue - if(A.control_disabled == 1) - continue - . += A - return . - -//Find an active ai with the least borgs. VERBOSE PROCNAME HUH! -/proc/select_active_ai_with_fewest_borgs() - var/mob/living/silicon/ai/selected - var/list/active = active_ais() - for(var/mob/living/silicon/ai/A in active) - if(!selected || (selected.connected_robots > A.connected_robots)) - selected = A - - return selected - -/proc/select_active_ai(mob/user) - var/list/ais = active_ais() - if(ais.len) - if(user) . = tgui_input_list(usr,"AI signals detected:", "AI selection", ais) - else . = pick(ais) - return . - /proc/get_sorted_mobs() var/list/old_list = getmobs() - var/list/AI_list = list() var/list/Dead_list = list() var/list/keyclient_list = list() var/list/key_list = list() var/list/logged_list = list() for(var/named in old_list) var/mob/M = old_list[named] - if(isSilicon(M)) - AI_list |= M - else if(isobserver(M) || M.stat == 2) + if(isobserver(M) || M.stat == 2) Dead_list |= M else if(M.key && M.client) keyclient_list |= M @@ -383,7 +344,6 @@ logged_list |= M old_list.Remove(named) var/list/new_list = list() - new_list += AI_list new_list += keyclient_list new_list += key_list new_list += logged_list @@ -933,86 +893,103 @@ GLOBAL_DATUM(action_purple_power_up, /image) if(!GLOB.busy_indicator_clock) GLOB.busy_indicator_clock = image('icons/mob/mob.dmi', null, "busy_generic", "pixel_y" = 22) GLOB.busy_indicator_clock.layer = FLY_LAYER + GLOB.busy_indicator_clock.plane = ABOVE_GAME_PLANE return GLOB.busy_indicator_clock else if(busy_type == BUSY_ICON_MEDICAL) if(!GLOB.busy_indicator_medical) GLOB.busy_indicator_medical = image('icons/mob/mob.dmi', null, "busy_medical", "pixel_y" = 0) //This shows directly on top of the mob, no offset! GLOB.busy_indicator_medical.layer = FLY_LAYER + GLOB.busy_indicator_medical.plane = ABOVE_GAME_PLANE return GLOB.busy_indicator_medical else if(busy_type == BUSY_ICON_BUILD) if(!GLOB.busy_indicator_build) GLOB.busy_indicator_build = image('icons/mob/mob.dmi', null, "busy_build", "pixel_y" = 22) GLOB.busy_indicator_build.layer = FLY_LAYER + GLOB.busy_indicator_build.plane = ABOVE_GAME_PLANE return GLOB.busy_indicator_build else if(busy_type == BUSY_ICON_FRIENDLY) if(!GLOB.busy_indicator_friendly) GLOB.busy_indicator_friendly = image('icons/mob/mob.dmi', null, "busy_friendly", "pixel_y" = 22) GLOB.busy_indicator_friendly.layer = FLY_LAYER + GLOB.busy_indicator_friendly.plane = ABOVE_GAME_PLANE return GLOB.busy_indicator_friendly else if(busy_type == BUSY_ICON_HOSTILE) if(!GLOB.busy_indicator_hostile) GLOB.busy_indicator_hostile = image('icons/mob/mob.dmi', null, "busy_hostile", "pixel_y" = 22) GLOB.busy_indicator_hostile.layer = FLY_LAYER + GLOB.busy_indicator_hostile.plane = ABOVE_GAME_PLANE return GLOB.busy_indicator_hostile else if(busy_type == EMOTE_ICON_HIGHFIVE) if(!GLOB.emote_indicator_highfive) GLOB.emote_indicator_highfive = image('icons/mob/mob.dmi', null, "emote_highfive", "pixel_y" = 22) GLOB.emote_indicator_highfive.layer = FLY_LAYER + GLOB.emote_indicator_highfive.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_highfive else if(busy_type == EMOTE_ICON_FISTBUMP) if(!GLOB.emote_indicator_fistbump) GLOB.emote_indicator_fistbump = image('icons/mob/mob.dmi', null, "emote_fistbump", "pixel_y" = 22) GLOB.emote_indicator_fistbump.layer = FLY_LAYER + GLOB.emote_indicator_fistbump.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_fistbump else if(busy_type == EMOTE_ICON_ROCK_PAPER_SCISSORS) if(!GLOB.emote_indicator_rock_paper_scissors) GLOB.emote_indicator_rock_paper_scissors = image('icons/mob/mob.dmi', null, "emote_rps", "pixel_y" = 22) GLOB.emote_indicator_rock_paper_scissors.layer = FLY_LAYER + GLOB.emote_indicator_rock_paper_scissors.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_rock_paper_scissors else if(busy_type == EMOTE_ICON_ROCK) if(!GLOB.emote_indicator_rock) GLOB.emote_indicator_rock = image('icons/mob/mob.dmi', null, "emote_rock", "pixel_y" = 22) GLOB.emote_indicator_rock.layer = FLY_LAYER + GLOB.emote_indicator_rock.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_rock else if(busy_type == EMOTE_ICON_PAPER) if(!GLOB.emote_indicator_paper) GLOB.emote_indicator_paper = image('icons/mob/mob.dmi', null, "emote_paper", "pixel_y" = 22) GLOB.emote_indicator_paper.layer = FLY_LAYER + GLOB.emote_indicator_paper.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_paper else if(busy_type == EMOTE_ICON_SCISSORS) if(!GLOB.emote_indicator_scissors) GLOB.emote_indicator_scissors = image('icons/mob/mob.dmi', null, "emote_scissors", "pixel_y" = 22) GLOB.emote_indicator_scissors.layer = FLY_LAYER + GLOB.emote_indicator_scissors.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_scissors else if(busy_type == EMOTE_ICON_HEADBUTT) if(!GLOB.emote_indicator_headbutt) GLOB.emote_indicator_headbutt = image('icons/mob/mob.dmi', null, "emote_headbutt", "pixel_y" = 22) GLOB.emote_indicator_headbutt.layer = FLY_LAYER + GLOB.emote_indicator_headbutt.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_headbutt else if(busy_type == EMOTE_ICON_TAILSWIPE) if(!GLOB.emote_indicator_tailswipe) GLOB.emote_indicator_tailswipe = image('icons/mob/mob.dmi', null, "emote_tailswipe", "pixel_y" = 22) GLOB.emote_indicator_tailswipe.layer = FLY_LAYER + GLOB.emote_indicator_tailswipe.plane = ABOVE_GAME_PLANE return GLOB.emote_indicator_tailswipe else if(busy_type == ACTION_RED_POWER_UP) if(!GLOB.action_red_power_up) GLOB.action_red_power_up = image('icons/effects/effects.dmi', null, "anger", "pixel_x" = 16) GLOB.action_red_power_up.layer = FLY_LAYER + GLOB.action_red_power_up.plane = ABOVE_GAME_PLANE return GLOB.action_red_power_up else if(busy_type == ACTION_GREEN_POWER_UP) if(!GLOB.action_green_power_up) GLOB.action_green_power_up = image('icons/effects/effects.dmi', null, "vitality", "pixel_x" = 16) GLOB.action_green_power_up.layer = FLY_LAYER + GLOB.action_green_power_up.plane = ABOVE_GAME_PLANE return GLOB.action_green_power_up else if(busy_type == ACTION_BLUE_POWER_UP) if(!GLOB.action_blue_power_up) GLOB.action_blue_power_up = image('icons/effects/effects.dmi', null, "shock", "pixel_x" = 16) GLOB.action_blue_power_up.layer = FLY_LAYER + GLOB.action_blue_power_up.plane = ABOVE_GAME_PLANE return GLOB.action_blue_power_up else if(busy_type == ACTION_PURPLE_POWER_UP) if(!GLOB.action_purple_power_up) GLOB.action_purple_power_up = image('icons/effects/effects.dmi', null, "pain", "pixel_x" = 16) GLOB.action_purple_power_up.layer = FLY_LAYER + GLOB.action_purple_power_up.plane = ABOVE_GAME_PLANE return GLOB.action_purple_power_up @@ -1517,88 +1494,47 @@ GLOBAL_LIST_INIT(WALLITEMS, list( /proc/format_text(text) return replacetext(replacetext(text,"\proper ",""),"\improper ","") -/proc/getline(atom/M, atom/N, include_from_atom = TRUE)//Ultra-Fast Bresenham Line-Drawing Algorithm - var/px=M.x //starting x - var/py=M.y - var/line[] = list(locate(px,py,M.z)) - var/dx=N.x-px //x distance - var/dy=N.y-py - var/dxabs=abs(dx)//Absolute value of x distance - var/dyabs=abs(dy) - var/sdx=sign(dx) //Sign of x distance (+ or -) - var/sdy=sign(dy) - var/x=dxabs>>1 //Counters for steps taken, setting to distance/2 - var/y=dyabs>>1 //Bit-shifting makes me l33t. It also makes getline() unnessecarrily fast. - var/j //Generic integer for counting - if(dxabs>=dyabs) //x distance is greater than y - for(j=0;j=dxabs) //Every dyabs steps, step once in y direction - y-=dxabs - py+=sdy - px+=sdx //Step on in x direction - if(j > 0 || include_from_atom) - line+=locate(px,py,M.z)//Add the turf to the list - else - for(j=0;j=dyabs) - x-=dyabs - px+=sdx - py+=sdy - if(j > 0 || include_from_atom) - line+=locate(px,py,M.z) - return line +/** + * Get a list of turfs in a line from `start_atom` to `end_atom`. + * + * Based on a linear interpolation method from [Red Blob Games](https://www.redblobgames.com/grids/line-drawing/#optimization). + * + * Arguments: + * * start_atom - starting point of the line + * * end_atom - ending point of the line + * * include_start_atom - when truthy includes start_atom in the list, default TRUE + * + * Returns: + * list - turfs from start_atom (in/exclusive) to end_atom (inclusive) + */ +/proc/get_line(atom/start_atom, atom/end_atom, include_start_atom = TRUE) + var/turf/start_turf = get_turf(start_atom) + var/turf/end_turf = get_turf(end_atom) + var/start_z = start_turf.z -//Bresenham's algorithm. This one deals efficiently with all 8 octants. -//Just don't ask me how it works. -/proc/getline2(atom/from_atom, atom/to_atom, include_from_atom = TRUE) - if(!from_atom || !to_atom) return 0 - var/list/turf/turfs = list() - - var/cur_x = from_atom.x - var/cur_y = from_atom.y - - var/w = to_atom.x - from_atom.x - var/h = to_atom.y - from_atom.y - var/dx1 = 0 - var/dx2 = 0 - var/dy1 = 0 - var/dy2 = 0 - if(w < 0) - dx1 = -1 - dx2 = -1 - else if(w > 0) - dx1 = 1 - dx2 = 1 - if(h < 0) dy1 = -1 - else if(h > 0) dy1 = 1 - var/longest = abs(w) - var/shortest = abs(h) - if(!(longest > shortest)) - longest = abs(h) - shortest = abs(w) - if(h < 0) dy2 = -1 - else if (h > 0) dy2 = 1 - dx2 = 0 - - var/numerator = longest >> 1 - var/i - for(i = 0; i <= longest; i++) - if(i > 0 || include_from_atom) - turfs += locate(cur_x,cur_y,from_atom.z) - numerator += shortest - if(!(numerator < longest)) - numerator -= longest - cur_x += dx1 - cur_y += dy1 - else - cur_x += dx2 - cur_y += dy2 + var/list/line = list() + if(include_start_atom) + line += start_turf + var/step_count = get_dist(start_turf, end_turf) + if(!step_count) + return line - return turfs + //as step_count and step size (1) are known can pre-calculate a lerp step, tiny number (1e-5) for rounding consistency + var/step_x = (end_turf.x - start_turf.x) / step_count + 1e-5 + var/step_y = (end_turf.y - start_turf.y) / step_count + 1e-5 + + //locate() truncates the fraction, adding 0.5 so its effectively rounding to nearest coords for free + var/x = start_turf.x + 0.5 + var/y = start_turf.y + 0.5 + for(var/step in 1 to (step_count - 1)) //increment then locate() skips start_turf (in 1), since end_turf is known can skip that step too (step_count - 1) + x += step_x + y += step_y + line += locate(x, y, start_z) + line += end_turf + + return line //Key thing that stops lag. Cornerstone of performance in ss13, Just sitting here, in unsorted.dm. @@ -1616,7 +1552,7 @@ GLOBAL_LIST_INIT(WALLITEMS, list( . = 0 var/i = DS2TICKS(initial_delay) do - . += CEILING(i*DELTA_CALC, 1) + . += Ceiling(i*DELTA_CALC) sleep(i*world.tick_lag*DELTA_CALC) i *= 2 while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit)) @@ -1644,8 +1580,8 @@ GLOBAL_LIST_INIT(WALLITEMS, list( /proc/explosive_antigrief_check(obj/item/explosive/explosive, mob/user) var/turf/Turf = get_turf(explosive) if(!(Turf.loc.type in GLOB.explosive_antigrief_exempt_areas)) - var/crash_occured = (SSticker?.mode?.is_in_endgame) - if((Turf.z in SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP, ZTRAIT_RESERVED))) && (GLOB.security_level < SEC_LEVEL_RED) && !crash_occured) + var/crash_occurred = (SSticker?.mode?.is_in_endgame) + if((Turf.z in SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP, ZTRAIT_RESERVED))) && (GLOB.security_level < SEC_LEVEL_RED) && !crash_occurred) switch(CONFIG_GET(number/explosive_antigrief)) if(ANTIGRIEF_DISABLED) return FALSE diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm index 6e1b229e562f..1f3404f403f2 100644 --- a/code/_globalvars/global_lists.dm +++ b/code/_globalvars/global_lists.dm @@ -3,6 +3,9 @@ GLOBAL_LIST_EMPTY(WYFaxes) //Departmental faxes GLOBAL_LIST_EMPTY(USCMFaxes) GLOBAL_LIST_EMPTY(ProvostFaxes) GLOBAL_LIST_EMPTY(CMBFaxes) +GLOBAL_LIST_EMPTY(UPPFaxes) +GLOBAL_LIST_EMPTY(TWEFaxes) +GLOBAL_LIST_EMPTY(CLFFaxes) GLOBAL_LIST_EMPTY(GeneralFaxes) //Inter-machine faxes GLOBAL_LIST_EMPTY(fax_contents) //List of fax contents to maintain it even if source paper is deleted @@ -180,6 +183,7 @@ GLOBAL_LIST_INIT_TYPED(hive_datum, /datum/hive_status, list( XENO_HIVE_FORSAKEN = new /datum/hive_status/forsaken(), XENO_HIVE_YAUTJA = new /datum/hive_status/yautja(), XENO_HIVE_RENEGADE = new /datum/hive_status/corrupted/renegade(), + XENO_HIVE_TUTORIAL = new /datum/hive_status/tutorial() )) GLOBAL_LIST_INIT(xeno_evolve_times, setup_xeno_evolve_times()) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 0b7a4af0f05f..5d7955d85013 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -35,10 +35,6 @@ GLOBAL_LIST_INIT(reverse_dir, list(2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13 GLOBAL_VAR(join_motd) GLOBAL_VAR(current_tms) -GLOBAL_LIST_INIT(BorgWireColorToFlag, RandomBorgWires()) -GLOBAL_LIST(BorgIndexToFlag) -GLOBAL_LIST(BorgIndexToWireColor) -GLOBAL_LIST(BorgWireColorToIndex) GLOBAL_LIST_INIT(AAlarmWireColorToFlag, RandomAAlarmWires()) GLOBAL_LIST(AAlarmIndexToFlag) GLOBAL_LIST(AAlarmIndexToWireColor) diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index 6504db0d9f0c..c60f7ceed628 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -294,7 +294,7 @@ Quick adjacency (to turf): var/turf/curT = get_turf(A) var/is_turf = isturf(A) - for(var/turf/T in getline2(A, src)) + for(var/turf/T in get_line(A, src)) if(curT == T) continue if(T.density) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index b99d52086e36..72e298d32729 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -376,8 +376,8 @@ var/shiftX = C.pixel_x / world.icon_size var/shiftY = C.pixel_y / world.icon_size var/list/actual_view = getviewsize(C ? C.view : GLOB.world_view_size) - tX = Clamp(origin.x + text2num(tX) + shiftX - round(actual_view[1] / 2) - 1, 1, world.maxx) - tY = Clamp(origin.y + text2num(tY) + shiftY - round(actual_view[2] / 2) - 1, 1, world.maxy) + tX = clamp(origin.x + text2num(tX) + shiftX - round(actual_view[1] / 2) - 1, 1, world.maxx) + tY = clamp(origin.y + text2num(tY) + shiftY - round(actual_view[2] / 2) - 1, 1, world.maxy) return locate(tX, tY, tZ) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm deleted file mode 100644 index c3056ed5af5f..000000000000 --- a/code/_onclick/cyborg.dm +++ /dev/null @@ -1,143 +0,0 @@ -/* - Cyborg ClickOn() - - Cyborgs have no range restriction on attack_robot(), because it is basically an AI click. - However, they do have a range restriction on item use, so they cannot do without the - adjacency code. -*/ - -/mob/living/silicon/robot/click(atom/A, mods) - if(lockcharge || is_mob_incapacitated(TRUE)) - return 1 - - if(mods["middle"]) - cycle_modules() - return 1 - - if (mods["ctrl"] && mods["shift"]) - if (!A.BorgCtrlShiftClick(src)) - return 1 - - else if (mods["ctrl"]) - if (!A.BorgCtrlClick(src)) - return 1 - - else if(mods["shift"]) - return A.BorgShiftClick(src) - - if(mods["alt"]) // alt and alt-gr (rightalt) - if (!A.BorgAltClick(src)) - return 1 - - - if(aiCamera.in_camera_mode) - aiCamera.camera_mode_off() - if(is_component_functioning("camera")) - aiCamera.captureimage(A, usr) - else - to_chat(src, SPAN_DANGER("Your camera isn't functional.")) - return 1 - - face_atom(A) - if (world.time <= next_move) return - var/obj/item/W = get_active_hand() - - // Cyborgs have no range-checking unless there is item use - if(!W) - A.add_hiddenprint(src) - A.attack_robot(src) - return 1 - - // buckled cannot prevent machine interlinking but stops arm movement - if( buckled ) - return 1 - - if(W == A) - next_move = world.time + 8 - - W.attack_self(src) - return 1 - - // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) - if(A == loc || (A in loc) || (A in contents)) - // No adjacency checks - next_move = world.time + 8 - - var/resolved = A.attackby(W,src) - if(!resolved && A && W) - W.afterattack(A, src, 1, mods) - return 1 - - if(!isturf(loc)) - return 1 - - // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) - if(isturf(A) || isturf(A.loc)) - if(A.Adjacent(src)) // see adjacent.dm - next_move = world.time + 10 - - var/resolved = A.attackby(W, src) - if(!resolved && A && W) - W.afterattack(A, src, 1, mods) - return 1 - else - next_move = world.time + 10 - W.afterattack(A, src, 0, mods) - return 1 - return 0 - - - -//Give cyborgs hotkey clicks without breaking existing uses of hotkey clicks -// for non-doors/apcs - -/atom/proc/BorgCtrlShiftClick(mob/living/silicon/robot/user) //forward to human click if not overriden - return 1 - -/obj/structure/machinery/door/airlock/BorgCtrlShiftClick() - AICtrlShiftClick() - -/atom/proc/BorgShiftClick(mob/living/silicon/robot/user) //this should only return 1 if it is not overridden. this prevents things like examining objects also clicking them with an activated module. - return 1 - -/obj/structure/machinery/door/airlock/BorgShiftClick() // Opens and closes doors! Forwards to AI code. - AIShiftClick() - - -/atom/proc/BorgCtrlClick(mob/living/silicon/robot/user) //forward to human click if not overriden - return 1 - -/obj/structure/machinery/door/airlock/BorgCtrlClick() // Bolts doors. Forwards to AI code. - AICtrlClick() - -/obj/structure/machinery/power/apc/BorgCtrlClick() // turns off/on APCs. Forwards to AI code. - AICtrlClick() - -/obj/structure/machinery/turretid/BorgCtrlClick() //turret control on/off. Forwards to AI code. - AICtrlClick() - -/atom/proc/BorgAltClick(mob/living/silicon/robot/user) - return 1 - -/obj/structure/machinery/door/airlock/BorgAltClick() // Eletrifies doors. Forwards to AI code. - AIAltClick() - -/obj/structure/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code. - AIAltClick() - -/* - As with AI, these are not used in click code, - because the code for robots is specific, not generic. - - If you would like to add advanced features to robot - clicks, you can do so here, but you will have to - change attack_robot() above to the proper function -*/ -/mob/living/silicon/robot/UnarmedAttack(atom/A) - A.attack_robot(src) -/mob/living/silicon/robot/RangedAttack(atom/A) - A.attack_robot(src) - -/atom/proc/attack_robot(mob/user as mob) - attack_remote(user) - return diff --git a/code/_onclick/hud/map_popups.dm b/code/_onclick/hud/map_popups.dm index aed6b46a7905..26dc93bbff2b 100644 --- a/code/_onclick/hud/map_popups.dm +++ b/code/_onclick/hud/map_popups.dm @@ -118,10 +118,11 @@ * anyway. they're effectively qdel'd. */ /client/proc/clear_map(map_name) - if(!map_name || !(map_name in screen_maps)) + if(!map_name || !screen_maps[map_name]) return FALSE for(var/atom/movable/screen/screen_obj in screen_maps[map_name]) screen_maps[map_name] -= screen_obj + remove_from_screen(screen_obj) if(screen_obj.del_on_map_removal) qdel(screen_obj) screen_maps -= map_name diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm index d4181d7e9953..6625120d1514 100644 --- a/code/_onclick/hud/rendering/plane_master.dm +++ b/code/_onclick/hud/rendering/plane_master.dm @@ -49,6 +49,12 @@ if(istype(mymob) && mymob?.client?.prefs?.toggle_prefs & TOGGLE_AMBIENT_OCCLUSION) add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA")) +/atom/movable/screen/plane_master/game_world_above + name = "above game world plane master" + plane = ABOVE_GAME_PLANE + appearance_flags = PLANE_MASTER //should use client color + blend_mode = BLEND_OVERLAY + /atom/movable/screen/plane_master/ghost name = "ghost plane master" plane = GHOST_PLANE diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm deleted file mode 100644 index af961f82bab2..000000000000 --- a/code/_onclick/hud/robot.dm +++ /dev/null @@ -1,151 +0,0 @@ -/datum/hud/robot - var/datum/custom_hud/robot/ui_robot_datum - -/datum/hud/robot/New(mob/living/silicon/robot/owner) - ..() - var/atom/movable/screen/using - - ui_robot_datum = GLOB.custom_huds_list[HUD_ROBOT] - -//Radio - using = new /atom/movable/screen() - using.name = "radio" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "radio" - using.screen_loc = ui_robot_datum.ui_movi - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - static_inventory += using - -//Module select - - using = new /atom/movable/screen() - using.name = "module1" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "inv1" - using.screen_loc = ui_robot_datum.ui_inv1 - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - owner.inv1 = using - static_inventory += using - - using = new /atom/movable/screen() - using.name = "module2" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "inv2" - using.screen_loc = ui_robot_datum.ui_inv2 - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - owner.inv2 = using - static_inventory += using - - using = new /atom/movable/screen() - using.name = "module3" - using.setDir(SOUTHWEST) - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "inv3" - using.screen_loc = ui_robot_datum.ui_inv3 - using.layer = ABOVE_HUD_LAYER - using.plane = ABOVE_HUD_PLANE - owner.inv3 = using - static_inventory += using - -//End of module select - -//Intent - using = new /atom/movable/screen/act_intent() - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "intent_"+ intent_text(owner.a_intent) - static_inventory += using - action_intent = using - -//Cell - owner.cells = new /atom/movable/screen() - owner.cells.icon = ui_robot_datum.ui_style_icon - owner.cells.icon_state = "charge-empty" - owner.cells.name = "cell" - owner.cells.screen_loc = ui_robot_datum.ui_toxin - infodisplay += owner.cells - -//Health - healths = new /atom/movable/screen/healths() - healths.icon = ui_robot_datum.ui_style_icon - healths.screen_loc = ui_robot_datum.ui_borg_health - infodisplay += healths - -//Installed Module - owner.hands = new /atom/movable/screen() - owner.hands.icon = ui_robot_datum.ui_style_icon - owner.hands.icon_state = "nomod" - owner.hands.name = "module" - owner.hands.screen_loc = ui_robot_datum.ui_borg_module - static_inventory += owner.hands - -//Module Panel - using = new /atom/movable/screen() - using.name = "panel" - using.icon = ui_robot_datum.ui_style_icon - using.icon_state = "panel" - using.screen_loc = ui_robot_datum.ui_borg_panel - using.layer = HUD_LAYER - static_inventory += using - -//Store - module_store_icon = new /atom/movable/screen() - module_store_icon.icon = ui_robot_datum.ui_style_icon - module_store_icon.icon_state = "store" - module_store_icon.name = "store" - module_store_icon.screen_loc = ui_robot_datum.ui_borg_store - static_inventory += module_store_icon - -//Temp - bodytemp_icon = new /atom/movable/screen/bodytemp() - bodytemp_icon.screen_loc = ui_robot_datum.ui_borg_temp - infodisplay += bodytemp_icon - - oxygen_icon = new /atom/movable/screen/oxygen() - oxygen_icon.icon = ui_robot_datum.ui_style_icon - oxygen_icon.screen_loc = ui_robot_datum.UI_OXYGEN_LOC - infodisplay += oxygen_icon - - pull_icon = new /atom/movable/screen/pull() - pull_icon.icon = ui_robot_datum.ui_style_icon - pull_icon.screen_loc = ui_robot_datum.ui_borg_pull - static_inventory += pull_icon - - zone_sel = new /atom/movable/screen/zone_sel/robot() - zone_sel.screen_loc = ui_robot_datum.ui_zonesel - zone_sel.update_icon(owner) - static_inventory += zone_sel - -/mob/living/silicon/robot/create_hud() - if(!hud_used) - hud_used = new /datum/hud/robot(src) - - - -/datum/hud/robot/persistent_inventory_update() - if(!mymob || !ui_robot_datum) - return - var/mob/living/silicon/robot/R = mymob - if(hud_shown) - if(R.module_state_1) - R.module_state_1.screen_loc = ui_robot_datum.ui_inv1 - R.client.add_to_screen(R.module_state_1) - if(R.module_state_2) - R.module_state_2.screen_loc = ui_robot_datum.ui_inv2 - R.client.add_to_screen(R.module_state_2) - if(R.module_state_3) - R.module_state_3.screen_loc = ui_robot_datum.ui_inv3 - R.client.add_to_screen(R.module_state_3) - else - if(R.module_state_1) - R.module_state_1.screen_loc = null - if(R.module_state_2) - R.module_state_2.screen_loc = null - if(R.module_state_3) - R.module_state_3.screen_loc = null - diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 9234597e5d4c..1eb555fceaf7 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -211,9 +211,6 @@ update_icon(user) return 1 -/atom/movable/screen/zone_sel/robot - icon = 'icons/mob/hud/screen1_robot.dmi' - /atom/movable/screen/clicked(mob/user) if(!user) return TRUE @@ -232,42 +229,6 @@ user.unset_interaction() return 1 - if("module") - if(isSilicon(user)) - if(user:module) - return 1 - user:pick_module() - return 1 - - if("radio") - if(isSilicon(user)) - user:radio_menu() - return 1 - if("panel") - if(isSilicon(user)) - user:installed_modules() - return 1 - - if("store") - if(isSilicon(user)) - user:uneq_active() - return 1 - - if("module1") - if(isrobot(user)) - user:toggle_module(1) - return 1 - - if("module2") - if(isrobot(user)) - user:toggle_module(2) - return 1 - - if("module3") - if(isrobot(user)) - user:toggle_module(3) - return 1 - if("Activate weapon attachment") var/obj/item/weapon/gun/held_item = user.get_held_item() if(istype(held_item)) @@ -544,7 +505,11 @@ name = "queen locator" icon = 'icons/mob/hud/alien_standard.dmi' icon_state = "trackoff" - var/list/track_state = list(TRACKER_QUEEN, 0) + /// A weak reference to the atom currently being tracked. + /// (Note: This is null for `TRACKER_QUEEN` and `TRACKER_HIVE`, as those are accessed through the user's hive datum.) + var/datum/weakref/tracking_ref = null + /// The 'category' of the atom currently being tracked. (Defaults to `TRACKER_QUEEN`) + var/tracker_type = TRACKER_QUEEN /atom/movable/screen/queen_locator/clicked(mob/living/carbon/xenomorph/user, mods) if(!istype(user)) @@ -559,27 +524,26 @@ if(mods["alt"]) var/list/options = list() if(user.hive.living_xeno_queen) - options["Queen"] = list(TRACKER_QUEEN, 0) + // Don't need weakrefs to this or the hive core, since there's only one possible target. + options["Queen"] = list(null, TRACKER_QUEEN) if(user.hive.hive_location) - options["Hive Core"] = list(TRACKER_HIVE, 0) + options["Hive Core"] = list(null, TRACKER_HIVE) - var/xeno_leader_index = 1 - for(var/xeno in user.hive.xeno_leader_list) - var/mob/living/carbon/xenomorph/xeno_lead = user.hive.xeno_leader_list[xeno_leader_index] - if(xeno_lead) - options["Xeno Leader [xeno_lead]"] = list(TRACKER_LEADER, xeno_leader_index) - xeno_leader_index++ + for(var/mob/living/carbon/xenomorph/leader in user.hive.xeno_leader_list) + options["Xeno Leader [leader]"] = list(leader, TRACKER_LEADER) - var/tunnel_index = 1 - for(var/obj/structure/tunnel/tracked_tunnel in user.hive.tunnels) - options["Tunnel [tracked_tunnel.tunnel_desc]"] = list(TRACKER_TUNNEL, tunnel_index) - tunnel_index++ + var/list/sorted_tunnels = sort_list_dist(user.hive.tunnels, get_turf(user)) + for(var/obj/structure/tunnel/tunnel as anything in sorted_tunnels) + options["Tunnel [tunnel.tunnel_desc]"] = list(tunnel, TRACKER_TUNNEL) - var/selected = tgui_input_list(user, "Select what you want the locator to track.", "Locator Options", options) + var/list/selected = tgui_input_list(user, "Select what you want the locator to track.", "Locator Options", options) if(selected) - track_state = options[selected] + var/selected_data = options[selected] + tracking_ref = WEAKREF(selected_data[1]) // Weakref to the tracked atom (or null) + tracker_type = selected_data[2] // Tracker category return + if(!user.hive.living_xeno_queen) to_chat(user, SPAN_WARNING("Our hive doesn't have a living queen!")) return FALSE @@ -587,6 +551,12 @@ return FALSE user.overwatch(user.hive.living_xeno_queen) +// Reset to the defaults +/atom/movable/screen/queen_locator/proc/reset_tracking() + icon_state = "trackoff" + tracking_ref = null + tracker_type = TRACKER_QUEEN + /atom/movable/screen/xenonightvision icon = 'icons/mob/hud/alien_standard.dmi' name = "toggle night vision" diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 21dd804f09c4..04c70bbe1112 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -49,7 +49,7 @@ var/message = "You have been dead for [DisplayTimeText(deathtime)]." message = SPAN_WARNING("[message]") to_chat(src, message) - to_chat(src, SPAN_WARNING("You must wait atleast 2.5 minutes before rejoining the game!")) + to_chat(src, SPAN_WARNING("You must wait at least 2.5 minutes before rejoining the game!")) do_observe(target) return FALSE diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index ad4ba9d72546..453539ff1c3f 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -88,7 +88,7 @@ return UnarmedAttack(get_step(src, Get_Compass_Dir(src, A)), tile_attack = TRUE, ignores_resin = TRUE) return FALSE -/**The parent proc, will default to UnarmedAttack behaviour unless overriden +/**The parent proc, will default to UnarmedAttack behaviour unless overridden Return XENO_ATTACK_ACTION if it does something and the attack should have full attack delay. Return XENO_NONCOMBAT_ACTION if it did something and should have some delay. Return XENO_NO_DELAY_ACTION if it gave an error message or should have no delay at all, ex. "You can't X that, it's Y!" @@ -131,6 +131,6 @@ so that it doesn't double up on the delays) so that it applies the delay immedia return ..() -//Larva attack, will default to attack_alien behaviour unless overriden +//Larva attack, will default to attack_alien behaviour unless overridden /atom/proc/attack_larva(mob/living/carbon/xenomorph/larva/user) return attack_alien(user) diff --git a/code/controllers/mc/globals.dm b/code/controllers/mc/globals.dm index 7b5cc94d3620..724f58010699 100644 --- a/code/controllers/mc/globals.dm +++ b/code/controllers/mc/globals.dm @@ -13,7 +13,11 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) GLOB = src var/datum/controller/exclude_these = new - gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + // I know this is dumb but the nested vars list hangs a ref to the datum. This fixes that + var/list/controller_vars = exclude_these.vars.Copy() + controller_vars["vars"] = null + gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + QDEL_IN(exclude_these, 0) //signal logging isn't ready log_world("[vars.len - gvars_datum_in_built_vars.len] global variables") diff --git a/code/controllers/mc/subsystem.dm b/code/controllers/mc/subsystem.dm index 24af320aeb62..e25402c28610 100644 --- a/code/controllers/mc/subsystem.dm +++ b/code/controllers/mc/subsystem.dm @@ -260,7 +260,7 @@ /datum/controller/subsystem/proc/OnConfigLoad() /** - * Used to initialize the subsystem. This is expected to be overriden by subtypes. + * Used to initialize the subsystem. This is expected to be overridden by subtypes. */ /datum/controller/subsystem/Initialize() return SS_INIT_NONE diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 3d544dca1390..ae4783e4837a 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(atoms) flags = SS_NO_FIRE var/old_initialized - /// A count of how many initalize changes we've made. We want to prevent old_initialize being overriden by some other value, breaking init code + /// A count of how many initalize changes we've made. We want to prevent old_initialize being overridden by some other value, breaking init code var/initialized_changed = 0 var/init_start_time var/processing_late_loaders = FALSE @@ -183,7 +183,7 @@ SUBSYSTEM_DEF(atoms) /datum/controller/subsystem/atoms/proc/map_loader_stop() clear_tracked_initalize() -/// Use this to set initialized to prevent error states where old_initialized is overriden. It keeps happening and it's cheesing me off +/// Use this to set initialized to prevent error states where old_initialized is overridden. It keeps happening and it's cheesing me off /datum/controller/subsystem/atoms/proc/set_tracked_initalized(value) if(!initialized_changed) old_initialized = initialized diff --git a/code/controllers/subsystem/decorator.dm b/code/controllers/subsystem/decorator.dm index e0e2c91022bc..6194b05d561b 100644 --- a/code/controllers/subsystem/decorator.dm +++ b/code/controllers/subsystem/decorator.dm @@ -1,4 +1,4 @@ -// our atom declaration should not be hardcoded for this SS existance. +// our atom declaration should not be hardcoded for this SS existence. // if this subsystem is deleted, stuff still works // That's why we define this here /atom/proc/Decorate(deferable = FALSE) diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 83cd822725ca..f4dd544784f0 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(events) var/list/running = list() var/list/currentrun = list() - ///The next world.time that a naturally occuring random event can be selected. + ///The next world.time that a naturally occurring random event can be selected. var/scheduled = 0 ///Lower bound for how frequently events will occur var/frequency_lower = 5 MINUTES diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index a808e7e3fd85..410ded82f7b3 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -88,8 +88,8 @@ SUBSYSTEM_DEF(minimaps) else if(yval < smallest_y) smallest_y = yval - minimaps_by_z["[level]"].x_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_x-smallest_x) / MINIMAP_SCALE, 1) - minimaps_by_z["[level]"].y_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_y-smallest_y) / MINIMAP_SCALE, 1) + minimaps_by_z["[level]"].x_offset = Floor((SCREEN_PIXEL_SIZE-largest_x-smallest_x) / MINIMAP_SCALE) + minimaps_by_z["[level]"].y_offset = Floor((SCREEN_PIXEL_SIZE-largest_y-smallest_y) / MINIMAP_SCALE) icon_gen.Shift(EAST, minimaps_by_z["[level]"].x_offset) icon_gen.Shift(NORTH, minimaps_by_z["[level]"].y_offset) @@ -182,7 +182,7 @@ SUBSYSTEM_DEF(minimaps) * the raw lists are to speed up the Fire() of the subsystem so we dont have to filter through * WARNING! * There is a byond bug: http://www.byond.com/forum/post/2661309 - * That that forces us to use a seperate list ref when accessing the lists of this datum + * That that forces us to use a separate list ref when accessing the lists of this datum * Yea it hurts me too */ /datum/hud_displays @@ -683,6 +683,7 @@ SUBSYSTEM_DEF(minimaps) user.client.register_map_obj(map_holder.map) ui = new(user, src, "TacticalMap") ui.open() + RegisterSignal(user.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transferred)) /datum/tacmap/drawing/tgui_interact(mob/user, datum/tgui/ui) var/mob/living/carbon/xenomorph/xeno = user @@ -691,6 +692,11 @@ SUBSYSTEM_DEF(minimaps) if(faction == FACTION_NEUTRAL && isobserver(user)) faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + if(is_xeno && xeno.hive.see_humans_on_tacmap && targeted_ztrait != ZTRAIT_MARINE_MAIN_SHIP) + allowed_flags |= MINIMAP_FLAG_USCM|MINIMAP_FLAG_PMC|MINIMAP_FLAG_UPP|MINIMAP_FLAG_CLF + targeted_ztrait = ZTRAIT_MARINE_MAIN_SHIP + map_holder = null + new_current_map = get_unannounced_tacmap_data_png(faction) old_map = get_tacmap_data_png(faction) current_svg = get_tacmap_data_svg(faction) @@ -721,6 +727,7 @@ SUBSYSTEM_DEF(minimaps) tacmap_ready_time = SSminimaps.next_fire + 2 SECONDS addtimer(CALLBACK(src, PROC_REF(on_tacmap_fire), faction), SSminimaps.next_fire - world.time + 1 SECONDS) user.client.register_map_obj(map_holder.map) + RegisterSignal(user.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transferred)) ui = new(user, src, "TacticalMap") ui.open() @@ -806,6 +813,9 @@ SUBSYSTEM_DEF(minimaps) return data +/datum/tacmap/ui_close(mob/user) + UnregisterSignal(user.mind, COMSIG_MIND_TRANSFERRED) + /datum/tacmap/drawing/ui_close(mob/user) . = ..() action_queue_change = 0 @@ -893,8 +903,8 @@ SUBSYSTEM_DEF(minimaps) current_squad.send_maptext("Tactical map update in progress...", "Tactical Map:") var/mob/living/carbon/human/human_leader = user human_leader.visible_message(SPAN_BOLDNOTICE("Tactical map update in progress...")) - playsound_client(human_leader.client, "sound/effects/sos-morse-code.ogg") - notify_ghosts(header = "Tactical Map", message = "The USCM tactical map has been updated.", ghost_sound = "sound/effects/sos-morse-code.ogg", notify_volume = 80, action = NOTIFY_USCM_TACMAP, enter_link = "uscm_tacmap=1", enter_text = "View", source = owner) + playsound_client(human_leader.client, "sound/effects/data-transmission.ogg") + notify_ghosts(header = "Tactical Map", message = "The USCM tactical map has been updated.", ghost_sound = "sound/effects/data-transmission.ogg", notify_volume = 80, action = NOTIFY_USCM_TACMAP, enter_link = "uscm_tacmap=1", enter_text = "View", source = owner) else if(faction == XENO_HIVE_NORMAL) GLOB.xeno_flat_tacmap_data += new_current_map COOLDOWN_START(GLOB, xeno_canvas_cooldown, CANVAS_COOLDOWN_TIME) @@ -934,6 +944,11 @@ SUBSYSTEM_DEF(minimaps) return UI_INTERACTIVE +// This gets removed when the player changes bodies (i.e. xeno evolution), so re-register it when that happens. +/datum/tacmap/proc/on_mind_transferred(datum/mind/source, mob/previous_body) + SIGNAL_HANDLER + source.current.client.register_map_obj(map_holder.map) + /datum/tacmap_holder var/map_ref var/atom/movable/screen/minimap/map diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 2e11ba8a96cb..2b9812abade4 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -172,7 +172,27 @@ SUBSYSTEM_DEF(ticker) CHECK_TICK if(!mode.can_start(bypass_checks)) - to_chat(world, "Reverting to pre-game lobby.") + to_chat(world, "Requirements to start [GLOB.master_mode] not met. Reverting to pre-game lobby.") + // Make only one more attempt + if(world.time - 2 * wait > CONFIG_GET(number/lobby_countdown) SECONDS) + flash_clients() + delay_start = TRUE + var/active_admins = 0 + for(var/client/admin_client in GLOB.admins) + if(!admin_client.is_afk() && check_client_rights(admin_client, R_SERVER, FALSE)) + active_admins = TRUE + break + if(active_admins) + to_chat(world, SPAN_CENTERBOLD("The game start has been delayed.")) + message_admins(SPAN_ADMINNOTICE("Alert: Insufficent players ready to start [GLOB.master_mode].\nEither change mode and map or start round and bypass checks.")) + else + var/fallback_mode = CONFIG_GET(string/gamemode_default) + SSticker.save_mode(fallback_mode) + GLOB.master_mode = fallback_mode + to_chat(world, SPAN_BOLDNOTICE("Notice: The Gamemode for next round has been set to [fallback_mode]")) + handle_map_reboot() + else + to_chat(world, "Attempting again...") QDEL_NULL(mode) GLOB.RoleAuthority.reset_roles() return FALSE diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index e7e17876d9db..47403f3379fb 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -583,7 +583,7 @@ SUBSYSTEM_DEF(timer) be supported and may refuse to run or run with a 0 wait") if (flags & TIMER_CLIENT_TIME) // REALTIMEOFDAY has a resolution of 1 decisecond - wait = max(CEILING(wait, 1), 1) // so if we use tick_lag timers may be inserted in the "past" + wait = max(Ceiling(wait), 1) // so if we use tick_lag timers may be inserted in the "past" else wait = max(CEILING(wait, world.tick_lag), world.tick_lag) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 104bb838bbcf..6188e38e8d60 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -273,12 +273,14 @@ SUBSYSTEM_DEF(vote) question = "Gamemode vote" randomize_entries = TRUE for(var/mode_type in config.gamemode_cache) - var/datum/game_mode/M = mode_type - if(initial(M.config_tag)) - var/vote_cycle_met = !initial(M.vote_cycle) || (text2num(SSperf_logging?.round?.id) % initial(M.vote_cycle) == 0) - var/min_players_met = length(GLOB.clients) >= M.required_players - if(initial(M.votable) && vote_cycle_met && min_players_met) - choices += initial(M.config_tag) + var/datum/game_mode/cur_mode = mode_type + if(initial(cur_mode.config_tag)) + cur_mode = new mode_type + var/vote_cycle_met = !initial(cur_mode.vote_cycle) || (text2num(SSperf_logging?.round?.id) % initial(cur_mode.vote_cycle) == 0) + var/min_players_met = length(GLOB.clients) >= cur_mode.required_players + if(initial(cur_mode.votable) && vote_cycle_met && min_players_met) + choices += initial(cur_mode.config_tag) + qdel(cur_mode) if("groundmap") question = "Ground map vote" vote_sound = 'sound/voice/start_your_voting.ogg' diff --git a/code/controllers/subsystem/x_evolution.dm b/code/controllers/subsystem/x_evolution.dm index 2232147d2eb8..857af8117df2 100644 --- a/code/controllers/subsystem/x_evolution.dm +++ b/code/controllers/subsystem/x_evolution.dm @@ -47,7 +47,7 @@ SUBSYSTEM_DEF(xevolution) //Add on any bonuses from thie hivecore after applying upgrade progress boost_power_new += (0.5 * HS.has_special_structure(XENO_STRUCTURE_CORE)) - boost_power_new = Clamp(boost_power_new, BOOST_POWER_MIN, BOOST_POWER_MAX) + boost_power_new = clamp(boost_power_new, BOOST_POWER_MIN, BOOST_POWER_MAX) boost_power_new += HS.evolution_bonus if(!force_boost_power) diff --git a/code/datums/ASRS.dm b/code/datums/ASRS.dm index 57eff892fa58..dc5ebc362fd1 100644 --- a/code/datums/ASRS.dm +++ b/code/datums/ASRS.dm @@ -66,6 +66,14 @@ reference_package = /datum/supply_packs/ammo_shell_box_flechette cost = ASRS_VERY_LOW_WEIGHT +/datum/supply_packs_asrs/ammo_shell_box_breaching + reference_package = /datum/supply_packs/ammo_shell_box_breaching + cost = ASRS_VERY_LOW_WEIGHT + +/datum/supply_packs_asrs/ammo_xm51 + reference_package = /datum/supply_packs/ammo_xm51 + cost = ASRS_VERY_LOW_WEIGHT + /datum/supply_packs_asrs/ammo_smartgun reference_package = /datum/supply_packs/ammo_smartgun diff --git a/code/datums/agents/tools/stunbaton.dm b/code/datums/agents/tools/stunbaton.dm index b00f4e56f846..5e020aea8114 100644 --- a/code/datums/agents/tools/stunbaton.dm +++ b/code/datums/agents/tools/stunbaton.dm @@ -5,14 +5,3 @@ hitcost = 500 stunforce = 40 has_user_lock = FALSE - -/obj/item/weapon/baton/antag/check_user_auth(mob/user) - if(!skillcheckexplicit(user, SKILL_ANTAG, SKILL_ANTAG_AGENT)) - user.visible_message(SPAN_NOTICE("[src] beeps as [user] picks it up"), SPAN_DANGER("WARNING: Unauthorized user detected. Denying access...")) - user.apply_effect(10, DAZE) - user.visible_message(SPAN_WARNING("[src] beeps and sends a shock through [user]'s body!")) - deductcharge(hitcost) - - return FALSE - - return TRUE diff --git a/code/datums/ammo/bullet/shotgun.dm b/code/datums/ammo/bullet/shotgun.dm index 96ac4cb6ba04..e71114dc24de 100644 --- a/code/datums/ammo/bullet/shotgun.dm +++ b/code/datums/ammo/bullet/shotgun.dm @@ -311,6 +311,32 @@ penetration = ARMOR_PENETRATION_TIER_10 scatter = SCATTER_AMOUNT_TIER_4 +/* + 16 GAUGE SHOTGUN AMMO +*/ + +/datum/ammo/bullet/shotgun/light/breaching + name = "light breaching shell" + icon_state = "flechette" + handful_state = "breaching_shell" + multiple_handful_name = TRUE + bonus_projectiles_type = /datum/ammo/bullet/shotgun/light/breaching/spread + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + damage = 55 + max_range = 5 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + penetration = ARMOR_PENETRATION_TIER_1 + +/datum/ammo/bullet/shotgun/light/breaching/spread + name = "additional light breaching fragments" + bonus_projectiles_amount = 0 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + scatter = SCATTER_AMOUNT_TIER_3 + damage = 10 + //Enormous shell for Van Bandolier's superheavy double-barreled hunting gun. /datum/ammo/bullet/shotgun/twobore name = "two bore bullet" diff --git a/code/datums/ammo/energy.dm b/code/datums/ammo/energy.dm index 27d2b7d4e0c5..16cbab378438 100644 --- a/code/datums/ammo/energy.dm +++ b/code/datums/ammo/energy.dm @@ -28,16 +28,16 @@ icon_state = "stun" damage_type = OXY flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST|AMMO_ALWAYS_FF //Not that ignoring will do much right now. - stamina_damage = 45 accuracy = HIT_ACCURACY_TIER_8 shell_speed = AMMO_SPEED_TIER_1 // Slightly faster hit_effect_color = "#FFFF00" -/datum/ammo/energy/taser/on_hit_mob(mob/M, obj/projectile/P) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - H.disable_special_items() // Disables scout cloak +/datum/ammo/energy/taser/on_hit_mob(mob/mobs, obj/projectile/P) + if(ishuman(mobs)) + var/mob/living/carbon/human/humanus = mobs + humanus.disable_special_items() // Disables scout cloak + humanus.make_jittery(40) /datum/ammo/energy/taser/precise name = "precise taser bolt" diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm index 3aaba8443efb..62a78539b6a2 100644 --- a/code/datums/ammo/misc.dm +++ b/code/datums/ammo/misc.dm @@ -113,7 +113,7 @@ /datum/ammo/flare/set_bullet_traits() . = ..() LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary, stacks = 2.5) )) /datum/ammo/flare/on_hit_mob(mob/M,obj/projectile/P) @@ -156,11 +156,13 @@ name = "starshell ash" icon_state = "starshell_bullet" max_range = 5 + damage = 2.5 flare_type = /obj/item/device/flashlight/flare/on/starshell_ash /datum/ammo/flare/starshell/set_bullet_traits() LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff, /datum/element/bullet_trait_incendiary) + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff), + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary, stacks = 1) )) /datum/ammo/souto diff --git a/code/datums/ammo/rocket.dm b/code/datums/ammo/rocket.dm index 66a9f65bdcdd..7581d434c4b4 100644 --- a/code/datums/ammo/rocket.dm +++ b/code/datums/ammo/rocket.dm @@ -28,26 +28,26 @@ smoke = null . = ..() -/datum/ammo/rocket/on_hit_mob(mob/M, obj/projectile/P) - cell_explosion(get_turf(M), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, get_turf(M)) - if(ishuman_strict(M)) // No yautya or synths. Makes humans gib on direct hit. - M.ex_act(350, P.dir, P.weapon_cause_data, 100) +/datum/ammo/rocket/on_hit_mob(mob/mob, obj/projectile/projectile) + cell_explosion(get_turf(mob), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, get_turf(mob)) + if(ishuman_strict(mob)) // No yautya or synths. Makes humans gib on direct hit. + mob.ex_act(350, projectile.dir, projectile.weapon_cause_data, 100) smoke.start() -/datum/ammo/rocket/on_hit_obj(obj/O, obj/projectile/P) - cell_explosion(get_turf(O), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, get_turf(O)) +/datum/ammo/rocket/on_hit_obj(obj/object, obj/projectile/projectile) + cell_explosion(get_turf(object), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, get_turf(object)) smoke.start() -/datum/ammo/rocket/on_hit_turf(turf/T, obj/projectile/P) - cell_explosion(T, 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) +/datum/ammo/rocket/on_hit_turf(turf/turf, obj/projectile/projectile) + cell_explosion(turf, 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) smoke.start() -/datum/ammo/rocket/do_at_max_range(obj/projectile/P) - cell_explosion(get_turf(P), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, get_turf(P)) +/datum/ammo/rocket/do_at_max_range(obj/projectile/projectile) + cell_explosion(get_turf(projectile), 150, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, get_turf(projectile)) smoke.start() /datum/ammo/rocket/ap @@ -62,62 +62,65 @@ damage = 10 penetration= ARMOR_PENETRATION_TIER_10 -/datum/ammo/rocket/ap/on_hit_mob(mob/M, obj/projectile/P) - var/turf/T = get_turf(M) - M.ex_act(150, P.dir, P.weapon_cause_data, 100) - M.apply_effect(2, PARALYZE) - if(ishuman_strict(M)) // No yautya or synths. Makes humans gib on direct hit. - M.ex_act(300, P.dir, P.weapon_cause_data, 100) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) + +/datum/ammo/rocket/ap/on_hit_mob(mob/mob, obj/projectile/projectile) + var/turf/turf = get_turf(mob) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + mob.apply_effect(3, WEAKEN) + mob.apply_effect(3, PARALYZE) + if(ishuman_strict(mob)) // No yautya or synths. Makes humans gib on direct hit. + mob.ex_act(300, projectile.dir, projectile.weapon_cause_data, 100) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) smoke.start() -/datum/ammo/rocket/ap/on_hit_obj(obj/O, obj/projectile/P) - var/turf/T = get_turf(O) - O.ex_act(150, P.dir, P.weapon_cause_data, 100) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) +/datum/ammo/rocket/ap/on_hit_obj(obj/object, obj/projectile/projectile) + var/turf/turf = get_turf(object) + object.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) smoke.start() -/datum/ammo/rocket/ap/on_hit_turf(turf/T, obj/projectile/P) +/datum/ammo/rocket/ap/on_hit_turf(turf/turf, obj/projectile/projectile) var/hit_something = 0 - for(var/mob/M in T) - M.ex_act(150, P.dir, P.weapon_cause_data, 100) - M.apply_effect(4, PARALYZE) + for(var/mob/mob in turf) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + mob.apply_effect(3, WEAKEN) + mob.apply_effect(3, PARALYZE) hit_something = 1 continue if(!hit_something) - for(var/obj/O in T) - if(O.density) - O.ex_act(150, P.dir, P.weapon_cause_data, 100) + for(var/obj/object in turf) + if(object.density) + object.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) hit_something = 1 continue if(!hit_something) - T.ex_act(150, P.dir, P.weapon_cause_data, 200) + turf.ex_act(150, projectile.dir, projectile.weapon_cause_data, 200) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) smoke.start() -/datum/ammo/rocket/ap/do_at_max_range(obj/projectile/P) - var/turf/T = get_turf(P) +/datum/ammo/rocket/ap/do_at_max_range(obj/projectile/projectile) + var/turf/turf = get_turf(projectile) var/hit_something = 0 - for(var/mob/M in T) - M.ex_act(250, P.dir, P.weapon_cause_data, 100) - M.apply_effect(2, WEAKEN) - M.apply_effect(2, PARALYZE) + for(var/mob/mob in turf) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + mob.apply_effect(3, WEAKEN) + mob.apply_effect(3, PARALYZE) hit_something = 1 - continue + break if(!hit_something) - for(var/obj/O in T) - if(O.density) - O.ex_act(250, P.dir, P.weapon_cause_data, 100) + for(var/obj/object in turf) + if(object.density) + object.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) hit_something = 1 - continue + break if(!hit_something) - T.ex_act(250, P.dir, P.weapon_cause_data) - cell_explosion(T, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - smoke.set_up(1, T) + turf.ex_act(150, projectile.dir, projectile.weapon_cause_data) + cell_explosion(turf, 100, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + smoke.set_up(1, turf) smoke.start() /datum/ammo/rocket/ap/anti_tank @@ -127,16 +130,16 @@ shrapnel_chance = 5 shrapnel_type = /obj/item/large_shrapnel/at_rocket_dud -/datum/ammo/rocket/ap/anti_tank/on_hit_obj(obj/O, obj/projectile/P) - if(istype(O, /obj/vehicle/multitile)) - var/obj/vehicle/multitile/M = O - M.next_move = world.time + vehicle_slowdown_time - playsound(M, 'sound/effects/meteorimpact.ogg', 35) - M.at_munition_interior_explosion_effect(cause_data = create_cause_data("Anti-Tank Rocket")) - M.interior_crash_effect() - var/turf/T = get_turf(M.loc) - M.ex_act(150, P.dir, P.weapon_cause_data, 100) - smoke.set_up(1, T) +/datum/ammo/rocket/ap/anti_tank/on_hit_obj(obj/object, obj/projectile/projectile) + if(istype(object, /obj/vehicle/multitile)) + var/obj/vehicle/multitile/mob = object + mob.next_move = world.time + vehicle_slowdown_time + playsound(mob, 'sound/effects/meteorimpact.ogg', 35) + mob.at_munition_interior_explosion_effect(cause_data = create_cause_data("Anti-Tank Rocket")) + mob.interior_crash_effect() + var/turf/turf = get_turf(mob.loc) + mob.ex_act(150, projectile.dir, projectile.weapon_cause_data, 100) + smoke.set_up(1, turf) smoke.start() return return ..() @@ -153,21 +156,21 @@ damage = 25 shell_speed = AMMO_SPEED_TIER_3 -/datum/ammo/rocket/ltb/on_hit_mob(mob/M, obj/projectile/P) - cell_explosion(get_turf(M), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(M), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) +/datum/ammo/rocket/ltb/on_hit_mob(mob/mob, obj/projectile/projectile) + cell_explosion(get_turf(mob), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(mob), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) -/datum/ammo/rocket/ltb/on_hit_obj(obj/O, obj/projectile/P) - cell_explosion(get_turf(O), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(O), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) +/datum/ammo/rocket/ltb/on_hit_obj(obj/object, obj/projectile/projectile) + cell_explosion(get_turf(object), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(object), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) -/datum/ammo/rocket/ltb/on_hit_turf(turf/T, obj/projectile/P) - cell_explosion(get_turf(T), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(T), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) +/datum/ammo/rocket/ltb/on_hit_turf(turf/turf, obj/projectile/projectile) + cell_explosion(get_turf(turf), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(turf), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) -/datum/ammo/rocket/ltb/do_at_max_range(obj/projectile/P) - cell_explosion(get_turf(P), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) - cell_explosion(get_turf(P), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, P.weapon_cause_data) +/datum/ammo/rocket/ltb/do_at_max_range(obj/projectile/projectile) + cell_explosion(get_turf(projectile), 220, 50, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) + cell_explosion(get_turf(projectile), 200, 100, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, projectile.weapon_cause_data) /datum/ammo/rocket/wp name = "white phosphorous rocket" @@ -185,30 +188,30 @@ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) )) -/datum/ammo/rocket/wp/drop_flame(turf/T, datum/cause_data/cause_data) - playsound(T, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) - if(!istype(T)) return - smoke.set_up(1, T) +/datum/ammo/rocket/wp/drop_flame(turf/turf, datum/cause_data/cause_data) + playsound(turf, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) + if(!istype(turf)) return + smoke.set_up(1, turf) smoke.start() - var/datum/reagent/napalm/blue/R = new() - new /obj/flamer_fire(T, cause_data, R, 3) + var/datum/reagent/napalm/blue/reagent = new() + new /obj/flamer_fire(turf, cause_data, reagent, 3) var/datum/effect_system/smoke_spread/phosphorus/landingSmoke = new /datum/effect_system/smoke_spread/phosphorus - landingSmoke.set_up(3, 0, T, null, 6, cause_data) + landingSmoke.set_up(3, 0, turf, null, 6, cause_data) landingSmoke.start() landingSmoke = null -/datum/ammo/rocket/wp/on_hit_mob(mob/M, obj/projectile/P) - drop_flame(get_turf(M), P.weapon_cause_data) +/datum/ammo/rocket/wp/on_hit_mob(mob/mob, obj/projectile/projectile) + drop_flame(get_turf(mob), projectile.weapon_cause_data) -/datum/ammo/rocket/wp/on_hit_obj(obj/O, obj/projectile/P) - drop_flame(get_turf(O), P.weapon_cause_data) +/datum/ammo/rocket/wp/on_hit_obj(obj/object, obj/projectile/projectile) + drop_flame(get_turf(object), projectile.weapon_cause_data) -/datum/ammo/rocket/wp/on_hit_turf(turf/T, obj/projectile/P) - drop_flame(T, P.weapon_cause_data) +/datum/ammo/rocket/wp/on_hit_turf(turf/turf, obj/projectile/projectile) + drop_flame(turf, projectile.weapon_cause_data) -/datum/ammo/rocket/wp/do_at_max_range(obj/projectile/P) - drop_flame(get_turf(P), P.weapon_cause_data) +/datum/ammo/rocket/wp/do_at_max_range(obj/projectile/projectile) + drop_flame(get_turf(projectile), projectile.weapon_cause_data) /datum/ammo/rocket/wp/upp name = "extreme-intensity incendiary rocket" @@ -226,25 +229,25 @@ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) )) -/datum/ammo/rocket/wp/upp/drop_flame(turf/T, datum/cause_data/cause_data) - playsound(T, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) - if(!istype(T)) return - smoke.set_up(1, T) +/datum/ammo/rocket/wp/upp/drop_flame(turf/turf, datum/cause_data/cause_data) + playsound(turf, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) + if(!istype(turf)) return + smoke.set_up(1, turf) smoke.start() - var/datum/reagent/napalm/upp/R = new() - new /obj/flamer_fire(T, cause_data, R, 3) + var/datum/reagent/napalm/upp/reagent = new() + new /obj/flamer_fire(turf, cause_data, reagent, 3) -/datum/ammo/rocket/wp/upp/on_hit_mob(mob/M, obj/projectile/P) - drop_flame(get_turf(M), P.weapon_cause_data) +/datum/ammo/rocket/wp/upp/on_hit_mob(mob/mob, obj/projectile/projectile) + drop_flame(get_turf(mob), projectile.weapon_cause_data) -/datum/ammo/rocket/wp/upp/on_hit_obj(obj/O, obj/projectile/P) - drop_flame(get_turf(O), P.weapon_cause_data) +/datum/ammo/rocket/wp/upp/on_hit_obj(obj/object, obj/projectile/projectile) + drop_flame(get_turf(object), projectile.weapon_cause_data) -/datum/ammo/rocket/wp/upp/on_hit_turf(turf/T, obj/projectile/P) - drop_flame(T, P.weapon_cause_data) +/datum/ammo/rocket/wp/upp/on_hit_turf(turf/turf, obj/projectile/projectile) + drop_flame(turf, projectile.weapon_cause_data) -/datum/ammo/rocket/wp/upp/do_at_max_range(obj/projectile/P) - drop_flame(get_turf(P), P.weapon_cause_data) +/datum/ammo/rocket/wp/upp/do_at_max_range(obj/projectile/projectile) + drop_flame(get_turf(projectile), projectile.weapon_cause_data) /datum/ammo/rocket/wp/quad name = "thermobaric rocket" @@ -254,45 +257,45 @@ max_range = 32 shell_speed = AMMO_SPEED_TIER_3 -/datum/ammo/rocket/wp/quad/on_hit_mob(mob/M, obj/projectile/P) - drop_flame(get_turf(M), P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) +/datum/ammo/rocket/wp/quad/on_hit_mob(mob/mob, obj/projectile/projectile) + drop_flame(get_turf(mob), projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) -/datum/ammo/rocket/wp/quad/on_hit_obj(obj/O, obj/projectile/P) - drop_flame(get_turf(O), P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) +/datum/ammo/rocket/wp/quad/on_hit_obj(obj/object, obj/projectile/projectile) + drop_flame(get_turf(object), projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) -/datum/ammo/rocket/wp/quad/on_hit_turf(turf/T, obj/projectile/P) - drop_flame(T, P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) +/datum/ammo/rocket/wp/quad/on_hit_turf(turf/turf, obj/projectile/projectile) + drop_flame(turf, projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) -/datum/ammo/rocket/wp/quad/do_at_max_range(obj/projectile/P) - drop_flame(get_turf(P), P.weapon_cause_data) - explosion(P.loc, -1, 2, 4, 5, , , ,P.weapon_cause_data) +/datum/ammo/rocket/wp/quad/do_at_max_range(obj/projectile/projectile) + drop_flame(get_turf(projectile), projectile.weapon_cause_data) + explosion(projectile.loc, -1, 2, 4, 5, , , ,projectile.weapon_cause_data) /datum/ammo/rocket/custom name = "custom rocket" -/datum/ammo/rocket/custom/proc/prime(atom/A, obj/projectile/P) - var/obj/item/weapon/gun/launcher/rocket/launcher = P.shot_from +/datum/ammo/rocket/custom/proc/prime(atom/atom, obj/projectile/projectile) + var/obj/item/weapon/gun/launcher/rocket/launcher = projectile.shot_from var/obj/item/ammo_magazine/rocket/custom/rocket = launcher.current_mag if(rocket.locked && rocket.warhead && rocket.warhead.detonator) if(rocket.fuel && rocket.fuel.reagents.get_reagent_amount(rocket.fuel_type) >= rocket.fuel_requirement) - rocket.forceMove(P.loc) - rocket.warhead.cause_data = P.weapon_cause_data + rocket.forceMove(projectile.loc) + rocket.warhead.cause_data = projectile.weapon_cause_data rocket.warhead.prime() qdel(rocket) - smoke.set_up(1, get_turf(A)) + smoke.set_up(1, get_turf(atom)) smoke.start() -/datum/ammo/rocket/custom/on_hit_mob(mob/M, obj/projectile/P) - prime(M, P) +/datum/ammo/rocket/custom/on_hit_mob(mob/mob, obj/projectile/projectile) + prime(mob, projectile) -/datum/ammo/rocket/custom/on_hit_obj(obj/O, obj/projectile/P) - prime(O, P) +/datum/ammo/rocket/custom/on_hit_obj(obj/object, obj/projectile/projectile) + prime(object, projectile) -/datum/ammo/rocket/custom/on_hit_turf(turf/T, obj/projectile/P) - prime(T, P) +/datum/ammo/rocket/custom/on_hit_turf(turf/turf, obj/projectile/projectile) + prime(turf, projectile) -/datum/ammo/rocket/custom/do_at_max_range(obj/projectile/P) - prime(null, P) +/datum/ammo/rocket/custom/do_at_max_range(obj/projectile/projectile) + prime(null, projectile) diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm index 654ab88c7abc..7fec3cf3b9a3 100644 --- a/code/datums/ammo/xeno.dm +++ b/code/datums/ammo/xeno.dm @@ -363,7 +363,7 @@ name = "tail hook" icon_state = "none" ping = null - flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_STOPPED_BY_COVER|AMMO_IGNORE_ARMOR + flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_STOPPED_BY_COVER damage_type = BRUTE damage = XENO_DAMAGE_TIER_5 @@ -386,7 +386,8 @@ target.overlays += tail_image new /datum/effects/xeno_slow(target, fired_proj.firer, ttl = 0.5 SECONDS) - target.apply_effect(0.5, STUN) + + target.apply_effect(0.5, ROOT) INVOKE_ASYNC(target, TYPE_PROC_REF(/atom/movable, throw_atom), fired_proj.firer, get_dist(fired_proj.firer, target)-1, SPEED_VERY_FAST) qdel(tail_beam) diff --git a/code/datums/autocells/explosion.dm b/code/datums/autocells/explosion.dm index 970e5618bae3..367567a6d40d 100644 --- a/code/datums/autocells/explosion.dm +++ b/code/datums/autocells/explosion.dm @@ -23,7 +23,7 @@ That's it. There are some special rules, though, namely: - * If the explosion occured in a wall, the wave is strengthened + * If the explosion occurred in a wall, the wave is strengthened with power *= reflection_multiplier and reflected back in the direction it came from diff --git a/code/datums/balloon_alerts/balloon_alerts.dm b/code/datums/balloon_alerts/balloon_alerts.dm index 8ef770fa9d7f..59f826fbe7d2 100644 --- a/code/datums/balloon_alerts/balloon_alerts.dm +++ b/code/datums/balloon_alerts/balloon_alerts.dm @@ -37,20 +37,15 @@ if (isnull(viewer_client)) return - var/bound_width = world.icon_size - if (ismovable(src)) - var/atom/movable/movable_source = src - bound_width = movable_source.bound_width - var/image/balloon_alert = image(loc = get_atom_on_turf(src), layer = ABOVE_MOB_LAYER) balloon_alert.plane = RUNECHAT_PLANE balloon_alert.alpha = 0 balloon_alert.color = text_color balloon_alert.appearance_flags = NO_CLIENT_COLOR|KEEP_APART|RESET_COLOR|RESET_TRANSFORM|RESET_ALPHA balloon_alert.maptext = MAPTEXT("[text]") - balloon_alert.maptext_x = (BALLOON_TEXT_WIDTH - bound_width) * -0.5 balloon_alert.maptext_height = WXH_TO_HEIGHT(viewer_client?.MeasureText(text, null, BALLOON_TEXT_WIDTH)) balloon_alert.maptext_width = BALLOON_TEXT_WIDTH + balloon_alert.maptext_x = get_maxptext_x_offset(balloon_alert) if(appearance_flags & PIXEL_SCALE) balloon_alert.appearance_flags |= PIXEL_SCALE //"[text]" diff --git a/code/datums/beam.dm b/code/datums/beam.dm index e51dcafa0218..08b5ea9f9a64 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -125,11 +125,11 @@ //Position the effect so the beam is one continous line var/a if(abs(Pixel_x)>world.icon_size) - a = Pixel_x > 0 ? round(Pixel_x/32) : CEILING(Pixel_x/world.icon_size, 1) + a = Pixel_x > 0 ? round(Pixel_x/32) : Ceiling(Pixel_x/world.icon_size) X.x += a Pixel_x %= world.icon_size if(abs(Pixel_y)>world.icon_size) - a = Pixel_y > 0 ? round(Pixel_y/32) : CEILING(Pixel_y/world.icon_size, 1) + a = Pixel_y > 0 ? round(Pixel_y/32) : Ceiling(Pixel_y/world.icon_size) X.y += a Pixel_y %= world.icon_size diff --git a/code/datums/components/connect_mob_behalf.dm b/code/datums/components/connect_mob_behalf.dm index 1c1a8a652342..2eeee78bf28b 100644 --- a/code/datums/components/connect_mob_behalf.dm +++ b/code/datums/components/connect_mob_behalf.dm @@ -1,6 +1,6 @@ /// This component behaves similar to connect_loc_behalf, but working off clients and mobs instead of loc /// To be clear, we hook into a signal on a tracked client's mob -/// We retain the ability to react to that signal on a seperate listener, which makes this quite powerful +/// We retain the ability to react to that signal on a separate listener, which makes this quite powerful /datum/component/connect_mob_behalf dupe_mode = COMPONENT_DUPE_UNIQUE diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm index 00a5e86b5d60..8288453f7b24 100644 --- a/code/datums/components/overlay_lighting.dm +++ b/code/datums/components/overlay_lighting.dm @@ -194,7 +194,7 @@ get_new_turfs() -///Adds the luminosity and source for the afected movable atoms to keep track of their visibility. +///Adds the luminosity and source for the affected movable atoms to keep track of their visibility. /datum/component/overlay_lighting/proc/add_dynamic_lumi() LAZYSET(current_holder.affected_movable_lights, src, lumcount_range + 1) current_holder.underlays += visible_mask @@ -202,7 +202,7 @@ if(directional) current_holder.underlays += cone -///Removes the luminosity and source for the afected movable atoms to keep track of their visibility. +///Removes the luminosity and source for the affected movable atoms to keep track of their visibility. /datum/component/overlay_lighting/proc/remove_dynamic_lumi() LAZYREMOVE(current_holder.affected_movable_lights, src) current_holder.underlays -= visible_mask @@ -262,6 +262,9 @@ ///Used to determine the new valid current_holder from the parent's loc. /datum/component/overlay_lighting/proc/check_holder() var/atom/movable/movable_parent = GET_PARENT + if(QDELETED(movable_parent)) + set_holder(null) + return if(isturf(movable_parent.loc)) set_holder(movable_parent) return @@ -270,13 +273,21 @@ set_holder(null) return if(isturf(inside.loc)) - set_holder(inside) + // storage items block light, also don't be moving into a qdeleted item + if(QDELETED(inside) || istype(inside, /obj/item/storage)) + set_holder(null) + else + set_holder(inside) return set_holder(null) ///Called when the current_holder is qdeleted, to remove the light effect. /datum/component/overlay_lighting/proc/on_holder_qdel(atom/movable/source, force) + SIGNAL_HANDLER + if(QDELETED(current_holder)) + set_holder(null) + return UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) if(directional) UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) @@ -285,6 +296,7 @@ ///Called when current_holder changes loc. /datum/component/overlay_lighting/proc/on_holder_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER if(!(overlay_lighting_flags & LIGHTING_ON)) return make_luminosity_update() @@ -328,7 +340,7 @@ turn_off() range = clamp(CEILING(new_range, 0.5), 1, 7) var/pixel_bounds = ((range - 1) * 64) + 32 - lumcount_range = CEILING(range, 1) + lumcount_range = Ceiling(range) if(current_holder && overlay_lighting_flags & LIGHTING_ON) current_holder.underlays -= visible_mask visible_mask.icon = light_overlays["[pixel_bounds]"] @@ -443,8 +455,7 @@ . = lum_power lum_power = new_lum_power var/difference = . - lum_power - for(var/t in affected_turfs) - var/turf/lit_turf = t + for(var/turf/lit_turf as anything in affected_turfs) lit_turf.dynamic_lumcount -= difference ///Here we append the behavior associated to changing lum_power. diff --git a/code/datums/components/weed_food.dm b/code/datums/components/weed_food.dm index 2335a053412f..8737fba08db9 100644 --- a/code/datums/components/weed_food.dm +++ b/code/datums/components/weed_food.dm @@ -90,6 +90,8 @@ RegisterSignal(parent_mob, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) RegisterSignal(parent_mob, list(COMSIG_LIVING_REJUVENATED, COMSIG_HUMAN_REVIVED), PROC_REF(on_rejuv)) RegisterSignal(parent_mob, COMSIG_HUMAN_SET_UNDEFIBBABLE, PROC_REF(on_update)) + RegisterSignal(parent_mob, COMSIG_LIVING_PREIGNITION, PROC_REF(on_preignition)) + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING, PROC_REF(on_forsaken)) if(parent_turf) RegisterSignal(parent_turf, COMSIG_WEEDNODE_GROWTH, PROC_REF(on_update)) @@ -100,6 +102,7 @@ COMSIG_LIVING_REJUVENATED, COMSIG_HUMAN_REVIVED, COMSIG_HUMAN_SET_UNDEFIBBABLE, + COMSIG_LIVING_PREIGNITION, )) if(absorbing_weeds) UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING) @@ -109,6 +112,7 @@ UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE) if(parent_nest) UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING) + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) /// SIGNAL_HANDLER for COMSIG_MOVABLE_MOVED /datum/component/weed_food/proc/on_move() @@ -178,6 +182,27 @@ UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING) parent_nest = null +/// SIGNAL_HANDLER for COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING +/datum/component/weed_food/proc/on_forsaken() + SIGNAL_HANDLER + + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + + if(!merged) + return + if(!is_ground_level(parent_mob.z)) + return + + var/datum/hive_status/hive = GLOB.hive_datum[XENO_HIVE_FORSAKEN] + weed_appearance.color = hive.color + +/// SIGNAL_HANDLER for COMSIG_LIVING_PREIGNITION of weeds +/datum/component/weed_food/proc/on_preignition() + SIGNAL_HANDLER + + if(merged) + return COMPONENT_CANCEL_IGNITION + /** * Try to start the process to turn into weeds * Returns TRUE if started successfully @@ -288,6 +313,7 @@ if(!parent_nest) parent_mob.plane = FLOOR_PLANE parent_mob.remove_from_all_mob_huds() + parent_mob.ExtinguishMob() if(!weed_appearance) // Make a new sprite if we aren't re-merging var/is_flipped = parent_mob.transform.b == -1 // Technically we should check if d is 1 too, but corpses can only be rotated 90 or 270 (1/-1 or -1/1) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index d933b81eb620..8b84513169e6 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -204,9 +204,9 @@ GLOBAL_LIST_INIT(advance_cures, list( hidden = list( (properties["stealth"] > 2), (properties["stealth"] > 3) ) // The more symptoms we have, the less transmittable it is but some symptoms can make up for it. - SetSpread(Clamp(properties["transmittable"] - symptoms.len, BLOOD, AIRBORNE)) + SetSpread(clamp(properties["transmittable"] - symptoms.len, BLOOD, AIRBORNE)) permeability_mod = max(Ceiling(0.4 * properties["transmittable"]), 1) - cure_chance = 15 - Clamp(properties["resistance"], -5, 5) // can be between 10 and 20 + cure_chance = 15 - clamp(properties["resistance"], -5, 5) // can be between 10 and 20 stage_prob = max(properties["stage_rate"], 2) SetSeverity(properties["severity"]) GenerateCure(properties) @@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(advance_cures, list( // Will generate a random cure, the less resistance the symptoms have, the harder the cure. /datum/disease/advance/proc/GenerateCure(list/properties = list()) if(properties && properties.len) - var/res = Clamp(properties["resistance"] - (symptoms.len / 2), 1, GLOB.advance_cures.len) + var/res = clamp(properties["resistance"] - (symptoms.len / 2), 1, GLOB.advance_cures.len) cure_id = GLOB.advance_cures[res] // Get the cure name from the cure_id diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 8b8d46c90a61..cd7f9a1b974e 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -3,7 +3,7 @@ Coughing - Noticable. + Noticeable. Little Resistance. Doesn't increase stage speed much. Transmittable. diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm index f14f94dd2167..2802f6ebfaf2 100644 --- a/code/datums/diseases/advance/symptoms/hallucigen.dm +++ b/code/datums/diseases/advance/symptoms/hallucigen.dm @@ -3,7 +3,7 @@ Hallucigen - Very noticable. + Very noticeable. Lowers resistance considerably. Decreases stage speed. Reduced transmittable. diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm index 169085fe5911..b4a3d5939962 100644 --- a/code/datums/diseases/advance/symptoms/headache.dm +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -3,7 +3,7 @@ Headache - Noticable. + Noticeable. Highly resistant. Increases stage speed. Not transmittable. diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index a8f9cb210396..8b79fd1d6052 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -3,7 +3,7 @@ Itching - Not noticable or unnoticable. + Not noticeable or unnoticeable. Resistant. Increases stage speed. Little transmittable. diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 63f29eff93a4..74a6c3ab66c2 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -3,7 +3,7 @@ Sneezing - Very Noticable. + Very Noticeable. Increases resistance. Doesn't increase stage speed. Very transmittable. diff --git a/code/datums/diseases/advance/symptoms/voice_change.dm b/code/datums/diseases/advance/symptoms/voice_change.dm index e5af4a8eaab4..c5003ea772fb 100644 --- a/code/datums/diseases/advance/symptoms/voice_change.dm +++ b/code/datums/diseases/advance/symptoms/voice_change.dm @@ -3,7 +3,7 @@ Voice Change - Very Very noticable. + Very Very noticeable. Lowers resistance considerably. Decreases stage speed. Reduced transmittable. diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm index cb30a2aff818..47ba6625c98b 100644 --- a/code/datums/diseases/advance/symptoms/vomit.dm +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -3,7 +3,7 @@ Vomiting - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Doesn't increase stage speed. Little transmittable. @@ -51,7 +51,7 @@ Bonus Vomiting Blood - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Decreases stage speed. Little transmittable. diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index aebf8575e004..1e0dc978e392 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -3,7 +3,7 @@ Weight Gain - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Decreases stage speed. Reduced transmittable. @@ -43,7 +43,7 @@ Bonus Weight Loss - Very Very Noticable. + Very Very Noticeable. Decreases resistance. Decreases stage speed. Reduced Transmittable. @@ -84,7 +84,7 @@ Bonus Weight Even - Very Noticable. + Very Noticeable. Decreases resistance. Decreases stage speed. Reduced transmittable. diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 4b6e685e447c..d4ba54597862 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -22,7 +22,6 @@ if(!M.anchored && (M.flags_atom & CONDUCT)) step_towards(M,affected_mob) for(var/mob/living/silicon/S in orange(2,affected_mob)) - if(isAI(S)) continue step_towards(S,affected_mob) /* if(M.x > affected_mob.x) @@ -47,7 +46,6 @@ for(i=0,i[medal_type] to [chosen_recipient] for: \'[citation]\'.") + + return TRUE + +/proc/open_medal_panel(mob/living/carbon/human/user, obj/printer) var/obj/item/card/id/card = user.wear_id if(!card) to_chat(user, SPAN_WARNING("You must have an authenticated ID Card to award medals.")) return - if(!((card.paygrade in GLOB.co_paygrades) || (card.paygrade in GLOB.highcom_paygrades))) + if(!((card.paygrade in GLOB.co_paygrades) || (card.paygrade in GLOB.uscm_highcom_paygrades))) to_chat(user, SPAN_WARNING("Only a Senior Officer can award medals!")) return @@ -178,8 +271,9 @@ GLOBAL_LIST_INIT(human_medals, list(MARINE_CONDUCT_MEDAL, MARINE_BRONZE_HEART_ME user.visible_message("ERROR: ID card not registered for [user.real_name] in USCM registry. Potential medal fraud detected.") return - if(give_medal_award(get_turf(printer))) - user.visible_message(SPAN_NOTICE("[printer] prints a medal.")) + GLOB.ic_medals_panel.user_locs[WEAKREF(user)] = WEAKREF(printer) + GLOB.ic_medals_panel.tgui_interact(user) + GLOBAL_LIST_INIT(xeno_medals, list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, XENO_SABOTAGE_MEDAL, XENO_PROLIFERATION_MEDAL, XENO_REJUVENATION_MEDAL)) @@ -364,3 +458,200 @@ GLOBAL_LIST_INIT(xeno_medals, list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, message_admins("[key_name_admin(usr)] deleted [recipient_name]'s [medal_type] for: \'[citation]\'.") return TRUE + +/datum/medal_recommendation + var/recipient_rank + var/recipient_ckey + var/recipient_name + var/recommended_by_name + var/recommended_by_ckey + var/reason + var/recommended_by_rank + + +/proc/add_medal_recommendation(mob/recommendation_giver) + // Pick a marine + var/list/possible_recipients = list() + var/list/recipient_ranks = list() + for(var/datum/data/record/record in GLOB.data_core.general) + var/recipient_name = record.fields["name"] + if(recipient_name == recommendation_giver.real_name) + continue + recipient_ranks[recipient_name] = record.fields["rank"] + possible_recipients += recipient_name + var/chosen_recipient = tgui_input_list(recommendation_giver, "Who do you want to recommend a medal for?", "Medal Recommendation", possible_recipients) + if(!chosen_recipient) + return FALSE + + // Write a citation + var/reason = strip_html(tgui_input_text(recommendation_giver, "Why does this person deserve a medal?", "Medal Recommendation", null, MAX_PAPER_MESSAGE_LEN, TRUE), MAX_PAPER_MESSAGE_LEN) + if(!reason) + return FALSE + + // Get mob information + var/recipient_rank = recipient_ranks[chosen_recipient] + var/recipient_ckey + var/mob/recipient_mob + var/found_other = FALSE + + for(var/mob/mob in GLOB.mob_list) + if(mob.real_name == chosen_recipient) + // We might not get this info if gibbed, so we'd need to refactor again and find another way if we want stats always correct + recipient_ckey = mob.persistent_ckey + recipient_mob = mob + if(found_other) + break + found_other = TRUE + if(!recipient_mob) + for(var/mob/mob in GLOB.dead_mob_list) + if(mob.real_name == chosen_recipient) + // Recipient: Check if they are dead?, and get some info + // We might not get this info if gibbed, so we'd need to refactor again and find another way if we want stats always correct + recipient_ckey = mob.persistent_ckey + recipient_mob = mob + break + + // Create the recipient_award + var/datum/medal_recommendation/recommendation = new /datum/medal_recommendation() + GLOB.medal_recommendations += recommendation + + recommendation.recipient_rank = recipient_rank + recommendation.recipient_ckey = recipient_ckey + recommendation.recipient_name = recipient_mob.real_name + recommendation.recommended_by_name = recommendation_giver.real_name + recommendation.recommended_by_ckey = recommendation_giver.ckey + recommendation.recommended_by_rank = recipient_ranks[recommendation_giver.real_name] + + + recommendation.reason = reason + + return TRUE + + +GLOBAL_DATUM_INIT(ic_medals_panel, /datum/ic_medal_panel, new) + +/datum/ic_medal_panel + var/name = "Medals Panel" + var/list/datum/weakref/user_locs = list() + +/datum/ic_medal_panel/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "IcMedalsPanel", "Medals Panel") + ui.open() + ui.set_autoupdate(FALSE) + +/datum/ic_medal_panel/ui_state(mob/user) + var/datum/weakref/user_reference = WEAKREF(user) + var/datum/weakref/loc_reference = user_locs[user_reference] + if(istype(loc_reference?.resolve(), /obj/item)) + return GLOB.not_incapacitated_and_inventory_state + else + return GLOB.not_incapacitated_and_adjacent_state + +/datum/ic_medal_panel/ui_host(mob/user) + . = ..() + var/datum/weakref/user_reference = WEAKREF(user) + var/datum/weakref/loc_reference = user_locs[user_reference] + . = loc_reference?.resolve() + +/datum/ic_medal_panel/ui_data(mob/user) + var/list/data = list() + data["recommendations"] = list() + + for(var/datum/medal_recommendation/recommendation in GLOB.medal_recommendations) + var/recommendation_list = list() + + recommendation_list["rank"] = recommendation.recipient_rank + recommendation_list["name"] = recommendation.recipient_name + recommendation_list["ref"] = REF(recommendation) + recommendation_list["recommender_name"] = recommendation.recommended_by_name + recommendation_list["reason"] = recommendation.reason + recommendation_list["recommender_rank"] = recommendation.recommended_by_rank + + data["recommendations"] += list(recommendation_list) + return data + +/datum/ic_medal_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/mob/living/carbon/human/user = usr + var/obj/item/card/id/card = user.wear_id + if(!card) + to_chat(user, SPAN_WARNING("You must have an authenticated ID Card to award medals.")) + return + + if(!((card.paygrade in GLOB.co_paygrades) || (card.paygrade in GLOB.uscm_highcom_paygrades))) + to_chat(user, SPAN_WARNING("Only a Senior Officer can award medals!")) + return + + if(!card.registered_ref) + user.visible_message("ERROR: ID card not registered in USCM registry. Potential medal fraud detected.") + return + + var/real_owner_ref = card.registered_ref + + if(real_owner_ref != WEAKREF(user)) + user.visible_message("ERROR: ID card not registered for [user.real_name] in USCM registry. Potential medal fraud detected.") + return + + var/datum/weakref/user_ref = WEAKREF(user) + var/datum/weakref/loc_ref = user_locs[user_ref] + var/atom/actual_loc = loc_ref?.resolve() + if(!actual_loc) + return + + switch(action) + if("grant_new_medal") + if(give_medal_award(get_turf(actual_loc))) + actual_loc.visible_message(SPAN_NOTICE("[actual_loc] prints a medal.")) + . = TRUE + + if("approve_medal") + var/recommendation_ref = params["ref"] + var/medal_type = params["medal_type"] + if(!(medal_type in GLOB.human_medals)) + return + var/datum/medal_recommendation/recommendation = locate(recommendation_ref) in GLOB.medal_recommendations + if(!recommendation) + return + if(recommendation.recipient_name == user.real_name) + to_chat(user, SPAN_WARNING("You cannot give medals to yourself!")) + return + + var/choice = tgui_alert(user, "Would you like to change the medal text?", "Medal Citation", list("Yes", "No")) + var/medal_citation = recommendation.reason + if(choice == "Yes") + medal_citation = strip_html(tgui_input_text(user, "What should the medal citation read?", "Medal Citation", null, MAX_PAPER_MESSAGE_LEN, TRUE), MAX_PAPER_MESSAGE_LEN) + + var/confirm_choice = tgui_alert(user, "Are you sure you want to give a medal to [recommendation.recipient_name]?", "Medal Confirmation", list("Yes", "No")) + if(confirm_choice != "Yes") + return + + if(give_medal_award_prefilled(get_turf(actual_loc), user, recommendation.recipient_name, recommendation.recipient_rank, recommendation.recipient_ckey, medal_citation, medal_type, recommendation.recommended_by_ckey, recommendation.recommended_by_name)) + GLOB.medal_recommendations -= recommendation + qdel(recommendation) + user.visible_message(SPAN_NOTICE("[actual_loc] prints a medal.")) + . = TRUE + + if("deny_medal") + var/recommendation_ref = params["ref"] + var/datum/medal_recommendation/recommendation = locate(recommendation_ref) in GLOB.medal_recommendations + if(!recommendation) + return + var/confirm = tgui_alert(user, "Are you sure you want to deny this medal recommendation?", "Medal Confirmation", list("Yes", "No")) + if(confirm != "Yes") + return + GLOB.medal_recommendations -= recommendation + qdel(recommendation) + . = TRUE + +/datum/ic_medal_panel/ui_close(mob/user) + . = ..() + user_locs -= WEAKREF(user) + +/datum/ic_medal_panel/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/medal) + ) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 74f445f21597..945f4d0a5351 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -44,9 +44,11 @@ msg_admin_niche("[key]/[ckey] has tried to transfer to deleted [new_character].") return + var/mob/old_current = current if(current) current.mind = null //remove ourself from our old body's mind variable SSnano.nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user + SStgui.on_transfer(current, new_character) // and active TGUI instances if(key) if(new_character.key != key) @@ -76,6 +78,7 @@ continue player_entity = setup_player_entity(ckey) + SEND_SIGNAL(src, COMSIG_MIND_TRANSFERRED, old_current) SEND_SIGNAL(new_character, COMSIG_MOB_NEW_MIND, current.client) new_character.refresh_huds(current) //inherit the HUDs from the old body diff --git a/code/datums/paygrades/factions/other/civilian.dm b/code/datums/paygrades/factions/other/civilian.dm index 6587a82a54d6..95213542f33b 100644 --- a/code/datums/paygrades/factions/other/civilian.dm +++ b/code/datums/paygrades/factions/other/civilian.dm @@ -23,6 +23,7 @@ name = "Professor" prefix = "Prof." pay_multiplier = 1 + officer_grade = GRADE_OFFICER /datum/paygrade/civillian/representative paygrade = PAY_SHORT_CREP @@ -41,6 +42,7 @@ name = "Senior Officer" prefix = "Sr. Off." pay_multiplier = 0.8 + officer_grade = GRADE_OFFICER /datum/paygrade/civilian/rebel paygrade = PAY_SHORT_REB @@ -50,3 +52,4 @@ paygrade = PAY_SHORT_REBC name = "Rebel Commander" prefix = "CMDR." + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/cmb.dm b/code/datums/paygrades/factions/other/cmb.dm index eeeb061ea335..88af3f9ef78c 100644 --- a/code/datums/paygrades/factions/other/cmb.dm +++ b/code/datums/paygrades/factions/other/cmb.dm @@ -11,6 +11,7 @@ paygrade = PAY_SHORT_CMBM name = "CMB Marshal" prefix = "Marshal" + officer_grade = GRADE_OFFICER /datum/paygrade/cmb/syn paygrade = PAY_SHORT_CMBS diff --git a/code/datums/paygrades/factions/other/contractors.dm b/code/datums/paygrades/factions/other/contractors.dm index c83a5cb10870..a63e46bb47f2 100644 --- a/code/datums/paygrades/factions/other/contractors.dm +++ b/code/datums/paygrades/factions/other/contractors.dm @@ -1,38 +1,39 @@ /datum/paygrade/contractors name = "Contractor Paygrade" + fprefix = "VAI" pay_multiplier = 1.5 /datum/paygrade/contractors/standard - paygrade = "VAI" + paygrade = PAY_SHORT_VAI_S name = "VAI Mercenary" - prefix = "VAI" + prefix = "Merc." /datum/paygrade/contractors/med - paygrade = "VAI-M" + paygrade = PAY_SHORT_VAI_M name = "VAI Medical Specialist" - prefix = "VAI MED" + prefix = "Med." pay_multiplier = 1.75 /datum/paygrade/contractors/mg - paygrade = "VAI-G" + paygrade = PAY_SHORT_VAI_G name = "VAI Machinegunner" - prefix = "VAI MG" + prefix = "MG." pay_multiplier = 1.75 /datum/paygrade/contractors/engi - paygrade = "VAI-E" + paygrade = PAY_SHORT_VAI_E name = "VAI Engineering Specialist" - prefix = "VAI ENG" + prefix = "Eng." pay_multiplier = 1.75 /datum/paygrade/contractors/syn - paygrade = "VAI-S" + paygrade = PAY_SHORT_VAI_SN name = "VAI Synthetic" - prefix = "VAI Syn" pay_multiplier = 0 /datum/paygrade/contractors/lead - paygrade = "VAI-L" + paygrade = PAY_SHORT_VAI_L name = "VAI Team Leader" - prefix = "VAI TL" + prefix = "TL." pay_multiplier = 2.25 + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/dutch_dozen.dm b/code/datums/paygrades/factions/other/dutch_dozen.dm index 8877bd11afbb..2927d6b80d29 100644 --- a/code/datums/paygrades/factions/other/dutch_dozen.dm +++ b/code/datums/paygrades/factions/other/dutch_dozen.dm @@ -30,4 +30,5 @@ name = "Major" prefix = "LDR." pay_multiplier = 9 + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/freelancer.dm b/code/datums/paygrades/factions/other/freelancer.dm index 6de82b5bb344..2d7db7b0e042 100644 --- a/code/datums/paygrades/factions/other/freelancer.dm +++ b/code/datums/paygrades/factions/other/freelancer.dm @@ -1,49 +1,53 @@ /datum/paygrade/freelancer name = "Freelancer Paygrade" + fprefix = "Frl." pay_multiplier = 0.75 //these are shitty mercs. /datum/paygrade/freelancer/standard - paygrade = "Freelancer Standard" - name = "Freelancer Standard" + name = "Freelancer" + paygrade = PAY_SHORT_FL_S prefix = "Merc." /datum/paygrade/freelancer/medic - paygrade = "Freelancer Medic" name = "Freelancer Medic" + paygrade = PAY_SHORT_FL_M prefix = "Med." /datum/paygrade/freelancer/leader - paygrade = "Freelancer Leader" name = "Freelancer Leader" + paygrade = PAY_SHORT_FL_WL prefix = "Warlord" pay_multiplier = 1 + officer_grade = GRADE_OFFICER /datum/paygrade/freelancer/elite name = "Elite Freelancer Paygrade" + fprefix = "Elt." pay_multiplier = 1.25 /datum/paygrade/freelancer/elite/standard - paygrade = "Elite Freelancer Standard" - name = "Elite Freelancer Standard" - prefix = "MRC." + name = "Elite Freelancer" + paygrade = PAY_SHORT_EFL_S + prefix = "Merc." /datum/paygrade/freelancer/elite/heavy - paygrade = "Elite Freelancer Heavy" name = "Elite Freelancer Heavy" - prefix = "HVY." + paygrade = PAY_SHORT_EFL_H + prefix = "Hvy." /datum/paygrade/freelancer/elite/engineer - paygrade = "Elite Freelancer Engineer" name = "Elite Freelancer Engineer" - prefix = "ENGI." + paygrade = PAY_SHORT_EFL_E + prefix = "Eng." /datum/paygrade/freelancer/elite/medic - paygrade = "Elite Freelancer Medic" name = "Elite Freelancer Medic" - prefix = "MED." + paygrade = PAY_SHORT_EFL_M + prefix = "Med." /datum/paygrade/freelancer/elite/leader - paygrade = "Elite Freelancer Leader" name = "Elite Freelancer Leader" + paygrade = PAY_SHORT_EFL_TL prefix = "Warlord" pay_multiplier = 1.5 + officer_grade = GRADE_OFFICER diff --git a/code/datums/paygrades/factions/other/misc.dm b/code/datums/paygrades/factions/other/misc.dm index 04e522580b50..cc07e97b94da 100644 --- a/code/datums/paygrades/factions/other/misc.dm +++ b/code/datums/paygrades/factions/other/misc.dm @@ -1,8 +1,14 @@ /datum/paygrade/misc/operative - name = "Operative" + name = "Operator" + prefix = "OPR." paygrade = PAY_SHORT_OPR pay_multiplier = 1 //???? +/datum/paygrade/misc/codenamed + name = "Operative" + paygrade = PAY_SHORT_CDNM + pay_multiplier = 1 //???? + /datum/paygrade/misc/synth name = "Synthetic" paygrade = PAY_SHORT_SYN diff --git a/code/datums/paygrades/factions/twe/twe.dm b/code/datums/paygrades/factions/twe/twe.dm index 9707e89e6171..582030f9f80a 100644 --- a/code/datums/paygrades/factions/twe/twe.dm +++ b/code/datums/paygrades/factions/twe/twe.dm @@ -1,85 +1,86 @@ /datum/paygrade/twe name = "TWE Paygrade" pay_multiplier = 2 // less people = more to pay them + default_faction = FACTION_TWE //RMC Emlisted /datum/paygrade/twe/e1 - paygrade = "RMC E1" + paygrade = PAY_SHORT_RMC1 name = "Heitai-Marine" prefix = "Hti-Mne." /datum/paygrade/twe/e2 - paygrade = "RMC E2" + paygrade = PAY_SHORT_RMC2 name = "Santo-Lance Corporal" prefix = "St-LCpl." pay_multiplier = 2.1 /datum/paygrade/twe/e3 - paygrade = "RMC E3" + paygrade = PAY_SHORT_RMC3 name = "Nito-Corporal" prefix = "Nt-Cpl." pay_multiplier = 2.2 /datum/paygrade/twe/e4 - paygrade = "RMC E4" + paygrade = PAY_SHORT_RMC4 name = "Itto-Sergeant" prefix = "Sgt." pay_multiplier = 2.3 -//RMC Officer - -/datum/paygrade/twe/o1/rmc - paygrade = "RMC O1" - name = "Second Lieutenant" - prefix = "2nd LT." - pay_multiplier = 3 - //TWE Warrent Officer /datum/paygrade/twe/wo1 - paygrade = "TWE WO." + paygrade = PAY_SHORT_RNOW name = "Warrant Officer" prefix = "WO." pay_multiplier = 3.5 + officer_grade = GRADE_OFFICER //TWE Naval Officers /datum/paygrade/twe/o1 - paygrade = "TWE O1" + paygrade = PAY_SHORT_RNO1 name = "Second Lieutenant" prefix = "2nd LT" pay_multiplier = 3 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o2 - paygrade = "RMC O2" + paygrade = PAY_SHORT_RNO2 name = "First Lieutenant" prefix = "1st LT" pay_multiplier = 3.25 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o3 - paygrade = "TO3" - name = "Standing Officer" - prefix = "SO." + paygrade = PAY_SHORT_RNO3 + name = "Commander" + prefix = "Cdr." pay_multiplier = 3.5 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o4 - paygrade = "TO4" + paygrade = PAY_SHORT_RNO4 name = "Captain" prefix = "Cpt." pay_multiplier = 5 + officer_grade = GRADE_OFFICER /datum/paygrade/twe/o5 - paygrade = "TO5" + paygrade = PAY_SHORT_RNO5 name = "Admiral" - prefix = "ADM." + prefix = "Adm." pay_multiplier = 7 + officer_grade = GRADE_FLAG /datum/paygrade/twe/o6 - paygrade = "TO6" + paygrade = PAY_SHORT_RNO6 name = "Grand Admiral" - prefix = "GADM." + prefix = "GAdm." pay_multiplier = 9 + officer_grade = GRADE_FLAG /datum/paygrade/twe/o7 - paygrade = "TO7" + paygrade = PAY_SHORT_EMP name = "Emperor" - prefix = "ER." + prefix = "HRH." pay_multiplier = 1000 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/upp/upp.dm b/code/datums/paygrades/factions/upp/upp.dm index 8670f99269dc..b9ce691fdb8d 100644 --- a/code/datums/paygrades/factions/upp/upp.dm +++ b/code/datums/paygrades/factions/upp/upp.dm @@ -1,6 +1,7 @@ /datum/paygrade/upp name = "UPP Paygrade" pay_multiplier = 0.1 //lol. lmao + default_faction = FACTION_UPP //UPP Enlisted @@ -56,12 +57,14 @@ name = "2nd Kommando" prefix = "2ndKdo." pay_multiplier = 2 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uc3 paygrade = PAY_SHORT_UC3 name = "1st Kommando" prefix = "1stKdo." pay_multiplier = 2.5 + officer_grade = GRADE_OFFICER //UPP Officers /datum/paygrade/upp/uo1 @@ -69,51 +72,60 @@ name = "Leytenant" prefix = "Lt." pay_multiplier = 1.25 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uo2 paygrade = PAY_SHORT_UO2 name = "Senior Leytenant" prefix = "Sr. LT." pay_multiplier = 1.5 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uo3 paygrade = PAY_SHORT_UO3 name = "Kapitan" prefix = "Kpt." pay_multiplier = 2 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uo4 paygrade = PAY_SHORT_UO4 name = "Mayjor" prefix = "May." pay_multiplier = 2.5 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uo5 paygrade = PAY_SHORT_UO5 name = "Leytenant Kolonel" prefix = "Lt. Kol." pay_multiplier = 3 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uo6 paygrade = PAY_SHORT_UO6 name = "Kolonel" prefix = "Kol." pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/upp/uo7 paygrade = PAY_SHORT_UO7 name = "Mayjor General" prefix = "May. Gen." pay_multiplier = 5 + officer_grade = GRADE_FLAG /datum/paygrade/upp/uo8 paygrade = PAY_SHORT_UO8 name = "Leytenant General" prefix = "Lt. Gen." pay_multiplier = 6 + officer_grade = GRADE_FLAG /datum/paygrade/upp/uo9 paygrade = PAY_SHORT_UO9 name = "Army General" prefix = "Gen." pay_multiplier = 7 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/uscm/marine.dm b/code/datums/paygrades/factions/uscm/marine.dm index 7d315f364025..6a1446dd6b60 100644 --- a/code/datums/paygrades/factions/uscm/marine.dm +++ b/code/datums/paygrades/factions/uscm/marine.dm @@ -2,6 +2,7 @@ name = "Marine Paygrade" rank_pin = /obj/item/clothing/accessory/ranks/marine pay_multiplier = 1.6 + default_faction = FACTION_MARINE // ENLISTED PAYGRADES @@ -110,6 +111,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o1 ranking = 12 pay_multiplier = 3 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o2 paygrade = PAY_SHORT_MO2 @@ -118,6 +120,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o2 ranking = 13 pay_multiplier = 3.2 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o3 paygrade = PAY_SHORT_MO3 @@ -126,6 +129,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o3 ranking = 14 pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o4 paygrade = PAY_SHORT_MO4 @@ -134,6 +138,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o4 ranking = 15 pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o5 paygrade = PAY_SHORT_MO5 @@ -142,6 +147,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o5 ranking = 16 pay_multiplier = 4.2 + officer_grade = GRADE_OFFICER //Platoon Commander /datum/paygrade/marine/o6 @@ -151,6 +157,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o6 ranking = 17 pay_multiplier = 4.4 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o6e paygrade = PAY_SHORT_MO6E @@ -159,6 +166,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o6e ranking = 18 pay_multiplier = 4.6 + officer_grade = GRADE_OFFICER /datum/paygrade/marine/o6c paygrade = PAY_SHORT_MO6C @@ -167,6 +175,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o6c ranking = 19 pay_multiplier = 4.8 + officer_grade = GRADE_OFFICER //High Command /datum/paygrade/marine/o7 @@ -176,6 +185,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o7 ranking = 20 pay_multiplier = 6 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o8 paygrade = PAY_SHORT_MO8 @@ -184,6 +194,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o8 ranking = 21 pay_multiplier = 6.2 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o9 paygrade = PAY_SHORT_MO9 @@ -192,6 +203,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o9 ranking = 22 pay_multiplier = 6.4 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o10 paygrade = PAY_SHORT_MO10 @@ -200,6 +212,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o10 ranking = 23 pay_multiplier = 6.6 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o10c paygrade = PAY_SHORT_MO10C @@ -208,6 +221,7 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o10c ranking = 24 pay_multiplier = 6.8 + officer_grade = GRADE_FLAG /datum/paygrade/marine/o10s paygrade = PAY_SHORT_MO10S @@ -216,3 +230,4 @@ rank_pin = /obj/item/clothing/accessory/ranks/marine/o10c ranking = 25 pay_multiplier = 7 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/uscm/navy.dm b/code/datums/paygrades/factions/uscm/navy.dm index 9e22c72fe566..69fb63676bce 100644 --- a/code/datums/paygrades/factions/uscm/navy.dm +++ b/code/datums/paygrades/factions/uscm/navy.dm @@ -1,6 +1,7 @@ /datum/paygrade/navy name = "Navy Paygrade" rank_pin = /obj/item/clothing/accessory/ranks/navy + default_faction = FACTION_MARINE //someone else can do the multipliers for this one // ENLISTED PAYGRADES @@ -90,6 +91,7 @@ prefix = "ENS." rank_pin = /obj/item/clothing/accessory/ranks/navy/o1 ranking = 11 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o2 paygrade = PAY_SHORT_NO2 @@ -97,6 +99,7 @@ prefix = "LTJG." rank_pin = /obj/item/clothing/accessory/ranks/navy/o2 ranking = 12 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o3 paygrade = PAY_SHORT_NO3 @@ -104,6 +107,7 @@ prefix = "LT." rank_pin = /obj/item/clothing/accessory/ranks/navy/o3 ranking = 13 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o4 paygrade = PAY_SHORT_NO4 @@ -111,6 +115,7 @@ prefix = "LCDR." rank_pin = /obj/item/clothing/accessory/ranks/navy/o4 ranking = 14 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o5 paygrade = PAY_SHORT_NO5 @@ -118,6 +123,7 @@ prefix = "CDR." rank_pin = /obj/item/clothing/accessory/ranks/navy/o5 ranking = 15 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6 paygrade = PAY_SHORT_NO6 @@ -125,6 +131,7 @@ prefix = "CAPT." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6 ranking = 16 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6e paygrade = PAY_SHORT_NO6E @@ -132,6 +139,7 @@ prefix = "CDRE." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6e ranking = 17 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6c paygrade = PAY_SHORT_NO6C @@ -139,6 +147,7 @@ prefix = "Snr CDRE." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6e ranking = 18 + officer_grade = GRADE_OFFICER /datum/paygrade/navy/o7 paygrade = PAY_SHORT_NO7 @@ -146,6 +155,7 @@ prefix = "RDML." rank_pin = /obj/item/clothing/accessory/ranks/navy/o7 ranking = 19 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o8 paygrade = PAY_SHORT_NO8 @@ -153,6 +163,7 @@ prefix = "RADM." rank_pin = /obj/item/clothing/accessory/ranks/navy/o8 ranking = 20 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o9 paygrade = PAY_SHORT_NO9 @@ -160,6 +171,7 @@ prefix = "VADM." rank_pin = /obj/item/clothing/accessory/ranks/navy/o9 ranking = 21 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o10 paygrade = PAY_SHORT_NO10 @@ -167,6 +179,7 @@ prefix = "ADM." rank_pin = /obj/item/clothing/accessory/ranks/navy/o10 ranking = 22 + officer_grade = GRADE_FLAG /datum/paygrade/navy/o10c paygrade = PAY_SHORT_NO10C @@ -174,3 +187,4 @@ prefix = "CNO." rank_pin = /obj/item/clothing/accessory/ranks/navy/o10c ranking = 23 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/uscm/provost.dm b/code/datums/paygrades/factions/uscm/provost.dm index e378bd7beb61..c7e529d9fcb4 100644 --- a/code/datums/paygrades/factions/uscm/provost.dm +++ b/code/datums/paygrades/factions/uscm/provost.dm @@ -1,24 +1,29 @@ /datum/paygrade/provost name = "Provost Paygrade" pay_multiplier = 2 + default_faction = FACTION_MARINE /datum/paygrade/provost/inspector paygrade = PAY_SHORT_PVI name = "Provost Inspector" prefix = "Insp." rank_pin = /obj/item/clothing/accessory/ranks/special/insp + officer_grade = GRADE_FLAG //Not really a flag officer, but they have special access to things for their job. /datum/paygrade/provost/marshal paygrade = PAY_SHORT_PVM name = "Provost Marshal" prefix = "Marshal" + officer_grade = GRADE_FLAG /datum/paygrade/provost/sectormarshal paygrade = PAY_SHORT_PVSM name = "Provost Sector Marshal" prefix = "S. Marshal" + officer_grade = GRADE_FLAG /datum/paygrade/provost/chiefmarshal paygrade = PAY_SHORT_PVCM name = "Provost Chief Marshal" prefix = "Chief Marshal" + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/wy/pmc.dm b/code/datums/paygrades/factions/wy/pmc.dm index fc8e55f5eee2..b6acf2864578 100644 --- a/code/datums/paygrades/factions/wy/pmc.dm +++ b/code/datums/paygrades/factions/wy/pmc.dm @@ -2,96 +2,106 @@ name = "PMC Paygrade" fprefix = "PMC." pay_multiplier = 2.5 // they have money. but they sold their soul to the company. is it really worth it + default_faction = FACTION_PMC //Standard PMCs /datum/paygrade/pmc/standard - paygrade = "PMC-OP" + paygrade = PAY_SHORT_PMC_OP name = "Operator" prefix = "OPR." /datum/paygrade/pmc/enforcer - paygrade = "PMC-EN" + paygrade = PAY_SHORT_PMC_EN name = "Enforcer" prefix = "ENF." pay_multiplier = 2.6 //PMC Field Specialists /datum/paygrade/pmc/vehicle - paygrade = "PMC-VS" + paygrade = PAY_SHORT_PMC_VS name = "Vehicle Specialist" - prefix = "CRW." + prefix = "SPV." pay_multiplier = 2.8 /datum/paygrade/pmc/support - paygrade = "PMC-SS" + paygrade = PAY_SHORT_PMC_SS name = "Support Specialist" prefix = "SPS." pay_multiplier = 2.8 /datum/paygrade/pmc/medic - paygrade = "PMC-MS" + paygrade = PAY_SHORT_PMC_MS name = "Medical Specialist" prefix = "SPM." pay_multiplier = 2.8 /datum/paygrade/pmc/spec - paygrade = "PMC-WS" + paygrade = PAY_SHORT_PMC_WS name = "Weapon Specialist" prefix = "SPW." pay_multiplier = 3 /datum/paygrade/pmc/handler - paygrade = "PMC-XS" + paygrade = PAY_SHORT_PMC_XS name = "Xeno Specialist" prefix = "SPX." pay_multiplier = 4 + officer_grade = GRADE_OFFICER + +//PMC Support Staff +/datum/paygrade/pmc/doctor + paygrade = PAY_SHORT_PMC_DOC + name = "Trauma Surgeon" + prefix = "Dr." + pay_multiplier = 4 + officer_grade = GRADE_OFFICER + +/datum/paygrade/pmc/engineer + paygrade = PAY_SHORT_PMC_TEC + name = "Corporate Technician" + prefix = "TEC." + pay_multiplier = 4 //PMC Elite /datum/paygrade/pmc/elite - paygrade = "PMC-ELR" + paygrade = PAY_SHORT_PMC_ELR name = "Elite Responder" prefix = "ELR." pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/medic/elite - paygrade = "PMC-ELM" + paygrade = PAY_SHORT_PMC_ELM name = "Elite Medic" prefix = "ELM." pay_multiplier = 4.5 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/spec/elite - paygrade = "PMC-ELG" + paygrade = PAY_SHORT_PMC_ELG name = "Elite Gunner" prefix = "ELG." pay_multiplier = 5 + officer_grade = GRADE_OFFICER //PMC Command /datum/paygrade/pmc/teamlead - paygrade = "PMC-TL" + paygrade = PAY_SHORT_PMC_TL name = "Team Leader" prefix = "TML." pay_multiplier = 3.5 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/elitelead - paygrade = "PMC-ETL" + paygrade = PAY_SHORT_PMC_ETL name = "Elite Team Leader" prefix = "ETML." pay_multiplier = 5.5 - -/datum/paygrade/pmc/doctor - paygrade = "PMC-DOC" - name = "Trauma Surgeon" - prefix = "TRI." - pay_multiplier = 4 - -/datum/paygrade/pmc/engineer - paygrade = "PMC-TECH" - name = "Corporate Technician" - prefix = "TEC." - pay_multiplier = 4 + officer_grade = GRADE_OFFICER /datum/paygrade/pmc/director - paygrade = "PMC-DIR" + paygrade = PAY_SHORT_PMC_DIR name = "Site Director" prefix = "DIR." pay_multiplier = 10 //it's a corpo director. money is what they care about. + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/factions/wy/wy.dm b/code/datums/paygrades/factions/wy/wy.dm index 58ec9eb3f197..b3ff70830603 100644 --- a/code/datums/paygrades/factions/wy/wy.dm +++ b/code/datums/paygrades/factions/wy/wy.dm @@ -1,6 +1,7 @@ /datum/paygrade/wy_ranks name = "WYC Paygrade" pay_multiplier = 1 + default_faction = FACTION_WEYLAND /datum/paygrade/wy_ranks/wyc1 paygrade = PAY_SHORT_WYC1 @@ -35,6 +36,7 @@ prefix = "Exec. Spc." ranking = 4 pay_multiplier = 5 + officer_grade = GRADE_OFFICER /datum/paygrade/wy_ranks/wyc6 paygrade = PAY_SHORT_WYC6 @@ -42,6 +44,7 @@ prefix = "Exec. Suvp." ranking = 5 pay_multiplier = 6 + officer_grade = GRADE_OFFICER /datum/paygrade/wy_ranks/wyc7 paygrade = PAY_SHORT_WYC7 @@ -49,6 +52,7 @@ prefix = "Assis. Mng." ranking = 6 pay_multiplier = 7 + officer_grade = GRADE_OFFICER /datum/paygrade/wy_ranks/wyc8 paygrade = PAY_SHORT_WYC8 @@ -56,6 +60,7 @@ prefix = "Div. Mng." ranking = 7 pay_multiplier = 8 + officer_grade = GRADE_FLAG /datum/paygrade/wy_ranks/wyc9 paygrade = PAY_SHORT_WYC9 @@ -63,6 +68,7 @@ prefix = "Chief. Exec." ranking = 8 pay_multiplier = 9 + officer_grade = GRADE_FLAG /datum/paygrade/wy_ranks/wyc10 paygrade = PAY_SHORT_WYC10 @@ -70,3 +76,4 @@ prefix = "Director" ranking = 9 pay_multiplier = 10 + officer_grade = GRADE_FLAG diff --git a/code/datums/paygrades/paygrade.dm b/code/datums/paygrades/paygrade.dm index cc336319278a..862dce0dfb0c 100644 --- a/code/datums/paygrades/paygrade.dm +++ b/code/datums/paygrades/paygrade.dm @@ -1,10 +1,13 @@ +GLOBAL_LIST_EMPTY(uscm_highcom_paygrades) +GLOBAL_LIST_EMPTY(uscm_officer_paygrades) +GLOBAL_LIST_EMPTY(wy_highcom_paygrades) GLOBAL_LIST_INIT_TYPED(paygrades, /datum/paygrade, setup_paygrades()) /datum/paygrade var/paygrade var/name var/prefix - ///Factional prefix, currently only used by PMCs. In essence, a pre-prefix. + /// Factional prefix, currently only used by PMCs. In essence, a pre-prefix. var/fprefix var/rank_pin @@ -13,33 +16,10 @@ GLOBAL_LIST_INIT_TYPED(paygrades, /datum/paygrade, setup_paygrades()) /// Actually gives you the fucking money from your paygrade in your ATM account. Multiplier of 1 equals PFC pay. var/pay_multiplier = 1 -/proc/setup_paygrades() - . = list() - for(var/I in subtypesof(/datum/paygrade)) - var/datum/paygrade/PG = I - var/pg_id = initial(PG.paygrade) - if(pg_id) - if(pg_id in .) - log_debug("Duplicate paygrade: '[pg_id]'.") - else - .[pg_id] = new PG - -GLOBAL_LIST_INIT(highcom_paygrades, list( - "PvI", - PAY_SHORT_NO7, - PAY_SHORT_MO7, - PAY_SHORT_NO8, - PAY_SHORT_MO8, - PAY_SHORT_NO9, - PAY_SHORT_MO9, - PAY_SHORT_NO10, - PAY_SHORT_MO10, - PAY_SHORT_NO10C, - PAY_SHORT_MO10C, - "PvO8", - "PvO9", - "PvCM" -)) + /// The faction this paygrade is usually assigned to. + var/default_faction + /// If the grade refers to an officer equivalent or not. + var/officer_grade = GRADE_ENLISTED GLOBAL_LIST_INIT(co_paygrades, list( PAY_SHORT_NO6, @@ -54,8 +34,24 @@ GLOBAL_LIST_INIT(co_paygrades, list( PAY_SHORT_MO4 )) -GLOBAL_LIST_INIT(wy_paygrades, list( - PAY_SHORT_WYC8, - PAY_SHORT_WYC9, - PAY_SHORT_WYC10 -)) +/datum/paygrade/New() + . = ..() + switch(default_faction) + if(FACTION_MARINE) + if(officer_grade) + GLOB.uscm_officer_paygrades += paygrade + if(officer_grade >= GRADE_FLAG) + GLOB.uscm_highcom_paygrades += paygrade + if(FACTION_WEYLAND,FACTION_PMC) + if(officer_grade >= GRADE_FLAG) + GLOB.wy_highcom_paygrades += paygrade + +/proc/setup_paygrades() + . = list() + for(var/datum/paygrade/PG as anything in subtypesof(/datum/paygrade)) + var/pg_id = initial(PG.paygrade) + if(pg_id) + if(pg_id in .) + log_debug("Duplicate paygrade: '[pg_id]'.") + else + .[pg_id] = new PG diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 47752fd59400..b4b6c45a0c2c 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -184,13 +184,6 @@ ) result = /obj/item/reagent_container/food/snacks/roburger -/datum/recipe/roburger_unsafe - items = list( - /obj/item/reagent_container/food/snacks/bun, - /obj/item/robot_parts/head, - ) - result = /obj/item/reagent_container/food/snacks/roburger/unsafe - /datum/recipe/clownburger items = list( /obj/item/reagent_container/food/snacks/bun, diff --git a/code/datums/redis/callbacks/_redis_callback.dm b/code/datums/redis/callbacks/_redis_callback.dm index fd786db056c3..af63f53bd0b3 100644 --- a/code/datums/redis/callbacks/_redis_callback.dm +++ b/code/datums/redis/callbacks/_redis_callback.dm @@ -19,7 +19,7 @@ * * message - The message received on the redis channel. */ /datum/redis_callback/proc/on_message(message) - CRASH("on_message not overriden for [type]!") + CRASH("on_message not overridden for [type]!") /datum/redis_callback/vv_edit_var(var_name, var_value) return FALSE diff --git a/code/datums/stamina/_stamina.dm b/code/datums/stamina/_stamina.dm index e233aaa81676..80e7df74e86b 100644 --- a/code/datums/stamina/_stamina.dm +++ b/code/datums/stamina/_stamina.dm @@ -34,7 +34,7 @@ if(!has_stamina) return - current_stamina = Clamp(current_stamina - amount, 0, max_stamina) + current_stamina = clamp(current_stamina - amount, 0, max_stamina) if(current_stamina < max_stamina) START_PROCESSING(SSobj, src) diff --git a/code/datums/statistics/entities/medal_stats.dm b/code/datums/statistics/entities/medal_stats.dm index 8a428e2d3cf4..c5684e3cd9a4 100644 --- a/code/datums/statistics/entities/medal_stats.dm +++ b/code/datums/statistics/entities/medal_stats.dm @@ -57,7 +57,7 @@ return var/datum/entity/statistic/medal/new_medal = DB_ENTITY(/datum/entity/statistic/medal) - var/datum/entity/player/player_entity = get_player_from_key(new_recipient.ckey) + var/datum/entity/player/player_entity = get_player_from_key(new_recipient.persistent_ckey) if(player_entity) new_medal.player_id = player_entity.id diff --git a/code/datums/status_effects/stacking_effect.dm b/code/datums/status_effects/stacking_effect.dm index 3ef5855938f7..5812bcaacd48 100644 --- a/code/datums/status_effects/stacking_effect.dm +++ b/code/datums/status_effects/stacking_effect.dm @@ -7,7 +7,7 @@ /// How many stacks are currently accumulated. /// Also, the default stacks number given on application. var/stacks = 0 - // Deciseconds until ticks start occuring, which removes stacks + // Deciseconds until ticks start occurring, which removes stacks /// (first stack will be removed at this time plus tick_interval) var/delay_before_decay /// How many stacks are lost per tick (decay trigger) @@ -74,7 +74,7 @@ return FALSE stacks += stacks_added if(stacks > 0) - if(stacks >= stack_threshold && !threshold_crossed) //threshold_crossed check prevents threshold effect from occuring if changing from above threshold to still above threshold + if(stacks >= stack_threshold && !threshold_crossed) //threshold_crossed check prevents threshold effect from occurring if changing from above threshold to still above threshold threshold_crossed = TRUE on_threshold_cross() if(consumed_on_threshold) diff --git a/code/datums/supply_packs/ammo.dm b/code/datums/supply_packs/ammo.dm index 164511c25cc0..326ca075a343 100644 --- a/code/datums/supply_packs/ammo.dm +++ b/code/datums/supply_packs/ammo.dm @@ -240,6 +240,16 @@ containername = "\improper shotgun flechette crate" group = "Ammo" +/datum/supply_packs/ammo_shell_box_breaching + name = "Shell box (16g) (120x breaching shells)" + contains = list( + /obj/item/ammo_box/magazine/shotgun/light/breaching, + ) + cost = 40 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper shotgun breaching crate" + group = "Ammo" + //------------------------For 88M4 ---------------- /datum/supply_packs/ammo_mod88_mag_box_ap @@ -296,6 +306,18 @@ containername = "\improper M41AE2 HPR holo-target magazines crate" group = "Ammo" +/datum/supply_packs/ammo_xm51 + contains = list( + /obj/item/ammo_magazine/rifle/xm51, + /obj/item/ammo_magazine/rifle/xm51, + /obj/item/ammo_magazine/shotgun/light/breaching, + ) + name = "XM51 Ammo (2x mags) (1x small breaching shell box)" + cost = 20 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper XM51 ammo crate" + group = "Ammo" + //------------------------Smartgunner stuff---------------- /datum/supply_packs/ammo_smartgun_battery_pack diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index 43e0358a96f9..14ad047c7edb 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -642,7 +642,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted . = ..() var/obj/item/paper/nope = new(src) nope.name = "automated ASRS note" - nope.info = "Sorry! Your requested order of USCM PONCHO (X2) was not succesfully delivered because: 'No items of that type found in storage.'" + nope.info = "Sorry! Your requested order of USCM PONCHO (X2) was not successfully delivered because: 'No items of that type found in storage.'" nope.color = "green" nope.update_icon() @@ -656,7 +656,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted . = ..() var/obj/item/paper/nope = new(src) nope.name = "automated ASRS note" - nope.info = "Sorry! Your requested order of HIGH-EXPLOSIVE ARMOR-PIERCING M41A MAGAZINE (X3) was not succesfully delivered because: 'ERROR: UNABLE TO ENTER COMPARTMENT EXIT CODE 2342: EXPLOSION HAZARD'" + nope.info = "Sorry! Your requested order of HIGH-EXPLOSIVE ARMOR-PIERCING M41A MAGAZINE (X3) was not successfully delivered because: 'ERROR: UNABLE TO ENTER COMPARTMENT EXIT CODE 2342: EXPLOSION HAZARD'" nope.color = "green" nope.update_icon() diff --git a/code/datums/supply_packs/explosives.dm b/code/datums/supply_packs/explosives.dm index 22458ef3fa6b..032ef047c78a 100644 --- a/code/datums/supply_packs/explosives.dm +++ b/code/datums/supply_packs/explosives.dm @@ -1,7 +1,7 @@ // Group to populate with all the explosives exept OB and mortar shell /datum/supply_packs/explosives - name = "surplus explosives crate (claymore mine x5, M40 HIDP x2, M40 HEDP x2, M15 Frag x2, M12 Blast x2)" + name = "surplus explosives crate (claymore mine x5, M40 HIDP x2, M40 HEDP x2, M15 Frag x2, M12 Blast x2, M40 MFHS x2)" contains = list( /obj/item/storage/box/explosive_mines, /obj/item/explosive/grenade/high_explosive, @@ -12,6 +12,8 @@ /obj/item/explosive/grenade/high_explosive/m15, /obj/item/explosive/grenade/high_explosive/pmc, /obj/item/explosive/grenade/high_explosive/pmc, + /obj/item/explosive/grenade/metal_foam, + /obj/item/explosive/grenade/metal_foam, ) cost = 40 containertype = /obj/structure/closet/crate/explosives diff --git a/code/datums/supply_packs/medical.dm b/code/datums/supply_packs/medical.dm index 05cb4d2f34c0..097642eb163f 100644 --- a/code/datums/supply_packs/medical.dm +++ b/code/datums/supply_packs/medical.dm @@ -22,8 +22,33 @@ containername = "medical crate" group = "Medical" +/datum/supply_packs/pillbottle + name = "pill bottle crate (x2 each)" + contains = list( + /obj/item/storage/pill_bottle/inaprovaline, + /obj/item/storage/pill_bottle/antitox, + /obj/item/storage/pill_bottle/bicaridine, + /obj/item/storage/pill_bottle/dexalin, + /obj/item/storage/pill_bottle/kelotane, + /obj/item/storage/pill_bottle/tramadol, + /obj/item/storage/pill_bottle/peridaxon, + /obj/item/storage/pill_bottle/inaprovaline, + /obj/item/storage/pill_bottle/antitox, + /obj/item/storage/pill_bottle/bicaridine, + /obj/item/storage/pill_bottle/dexalin, + /obj/item/storage/pill_bottle/kelotane, + /obj/item/storage/pill_bottle/tramadol, + /obj/item/storage/pill_bottle/peridaxon, + /obj/item/storage/box/pillbottles, + /obj/item/storage/box/pillbottles, + ) + cost = 20 + containertype = /obj/structure/closet/crate/medical + containername = "medical crate" + group = "Medical" + /datum/supply_packs/firstaid - name = "first aid kit crate (2x each)" + name = "first aid kit crate (x2 each)" contains = list( /obj/item/storage/firstaid/regular, /obj/item/storage/firstaid/regular, @@ -36,7 +61,7 @@ /obj/item/storage/firstaid/adv, /obj/item/storage/firstaid/adv, ) - cost = 20 + cost = 16 containertype = /obj/structure/closet/crate/medical containername = "medical crate" group = "Medical" @@ -49,7 +74,7 @@ /obj/item/storage/box/bodybags, /obj/item/storage/box/bodybags, ) - cost = 20 + cost = 12 containertype = /obj/structure/closet/crate/medical containername = "body bag crate" group = "Medical" @@ -61,7 +86,7 @@ /obj/item/bodybag/cryobag, /obj/item/bodybag/cryobag, ) - cost = 40 + cost = 20 containertype = /obj/structure/closet/crate/medical containername = "stasis bag crate" group = "Medical" diff --git a/code/datums/supply_packs/weapons.dm b/code/datums/supply_packs/weapons.dm index 927db853e9fd..8939b80e52d6 100644 --- a/code/datums/supply_packs/weapons.dm +++ b/code/datums/supply_packs/weapons.dm @@ -60,7 +60,18 @@ ) cost = 30 containertype = /obj/structure/closet/crate/weapon - containername = "MOU-53 Breack Action Shotgun Crate" + containername = "MOU-53 Break Action Shotgun Crate" + group = "Weapons" + +/datum/supply_packs/xm51 + name = "XM51 Breaching Scattergun Crate (x2)" + contains = list( + /obj/item/storage/box/guncase/xm51, + /obj/item/storage/box/guncase/xm51, + ) + cost = 30 + containertype = /obj/structure/closet/crate/weapon + containername = "XM51 Breaching Scattergun Crate" group = "Weapons" /datum/supply_packs/smartpistol diff --git a/code/datums/tutorial/xenomorph/_xenomorph.dm b/code/datums/tutorial/xenomorph/_xenomorph.dm new file mode 100644 index 000000000000..bd85cdb35f44 --- /dev/null +++ b/code/datums/tutorial/xenomorph/_xenomorph.dm @@ -0,0 +1,31 @@ +/datum/tutorial/xenomorph + category = TUTORIAL_CATEGORY_XENO + parent_path = /datum/tutorial/xenomorph + icon_state = "xeno" + ///Starting xenomorph type (caste) of type /mob/living/carbon/xenomorph/... + var/mob/living/carbon/xenomorph/starting_xenomorph_type = /mob/living/carbon/xenomorph/drone + ///Reference to the actual xenomorph mob + var/mob/living/carbon/xenomorph/xeno + ///If TRUE remove all actions from the tutorial xenomorph. If FALSE none will be removed. You can give actions back in the tutorial with give_action() + var/remove_all_actions = TRUE + +/datum/tutorial/xenomorph/init_mob() + var/mob/living/carbon/xenomorph/new_character = new starting_xenomorph_type(bottom_left_corner, null, XENO_HIVE_TUTORIAL) + new_character.lastarea = get_area(bottom_left_corner) + + //Remove all actions from the tutorial xenomorph if remove_all_actions is TRUE + if(remove_all_actions) + for(var/datum/action/action_path as anything in new_character.base_actions) + remove_action(new_character, action_path) + + setup_xenomorph(new_character, tutorial_mob, is_late_join = FALSE) + + // We don't want people talking to other xenomorphs across tutorials + new_character.can_hivemind_speak = FALSE + + tutorial_mob = new_character + xeno = new_character + RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost)) + RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_MOB_END_TUTORIAL), PROC_REF(signal_end_tutorial)) + RegisterSignal(tutorial_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + return ..() diff --git a/code/datums/tutorial/xenomorph/xenomorph_basic.dm b/code/datums/tutorial/xenomorph/xenomorph_basic.dm new file mode 100644 index 000000000000..0415977835aa --- /dev/null +++ b/code/datums/tutorial/xenomorph/xenomorph_basic.dm @@ -0,0 +1,229 @@ +#define WAITING_HEALTH_THRESHOLD 300 + +/datum/tutorial/xenomorph/basic + name = "Xenomorph - Basic" + desc = "A tutorial to get you acquainted with the very basics of how to play a xenomorph." + icon_state = "xeno" + tutorial_template = /datum/map_template/tutorial/s12x12 + starting_xenomorph_type = /mob/living/carbon/xenomorph/drone + +// START OF SCRITPING + +/datum/tutorial/xenomorph/basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + + xeno.plasma_stored = 0 + xeno.plasma_max = 0 + xeno.melee_damage_lower = 40 + xeno.melee_damage_upper = 40 + + message_to_player("Welcome to the Xenomorph basic tutorial. You are [xeno.name], a drone, the workhorse of the hive.") + + addtimer(CALLBACK(src, PROC_REF(on_stretch_legs)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_stretch_legs() + message_to_player("As a drone you can perform most basic functions of the Xenomorph Hive. Such as weeding, building, planting eggs and nesting captured humans.") + addtimer(CALLBACK(src, PROC_REF(on_inform_health)), 5 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_inform_health() + message_to_player("The green icon on the right of your screen and green bar next to your character represents your health.") + addtimer(CALLBACK(src, PROC_REF(on_give_plasma)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_give_plasma() + message_to_player("You have been given plasma, a resource used for casting your abilities. This is represented by the blue icon at the right of your screen and the blue bar next to your character.") + xeno.plasma_max = 200 + xeno.plasma_stored = 200 + addtimer(CALLBACK(src, PROC_REF(on_damage_xenomorph)), 15 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/on_damage_xenomorph() + xeno.apply_damage(350) + xeno.emote("hiss") + message_to_player("Oh no! You've been damaged. Notice your green health bars have decreased. Xenomorphs can recover their health by standing or resting on weeds.") + addtimer(CALLBACK(src, PROC_REF(request_player_plant_weed)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/request_player_plant_weed() + update_objective("Plant a weed node using the new ability Plant Weeds you've just been given.") + give_action(xeno, /datum/action/xeno_action/onclick/plant_weeds) + message_to_player("Plant a weed node to spread weeds using your new ability at the top of the screen. Weeds heal xenomorphs and regenerate their plasma. They also slow humans, making them easier to fight.") + RegisterSignal(xeno, COMSIG_XENO_PLANT_RESIN_NODE, PROC_REF(on_plant_resinode)) + +/datum/tutorial/xenomorph/basic/proc/on_plant_resinode() + SIGNAL_HANDLER + UnregisterSignal(xeno, COMSIG_XENO_PLANT_RESIN_NODE) + message_to_player("Well done. You can rest on the weeds to heal faster using the Rest ability or with the [retrieve_bind("rest")] key.") + message_to_player("We have increased your plasma reserves. Notice also your plasma will regenerate while you are on weeds.") + give_action(xeno, /datum/action/xeno_action/onclick/xeno_resting) + update_objective("Rest or wait until you are at least [WAITING_HEALTH_THRESHOLD] health.") + xeno.plasma_max = 500 + RegisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS, PROC_REF(on_xeno_gain_health)) + +/datum/tutorial/xenomorph/basic/proc/on_xeno_gain_health() + SIGNAL_HANDLER + UnregisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS) + message_to_player("Even on weeds. Healing is a slow process. This can be sped up using pheromones. Emit \"Recovery\" pheromones now using your new ability to speed up your healing.") + give_action(xeno, /datum/action/xeno_action/onclick/emit_pheromones) + update_objective("Emit recovery pheromones.") + RegisterSignal(xeno, COMSIG_XENO_START_EMIT_PHEROMONES, PROC_REF(on_xeno_emit_pheromone)) + +/datum/tutorial/xenomorph/basic/proc/on_xeno_emit_pheromone(emitter, pheromone) + SIGNAL_HANDLER + if(!(pheromone == "recovery")) + message_to_player("These are not recovery pheromones. Click your ability again to stop emitting, and choose Recovery instead.") + else if(xeno.health > WAITING_HEALTH_THRESHOLD) + reach_health_threshold() + UnregisterSignal(xeno, COMSIG_XENO_START_EMIT_PHEROMONES) + else + UnregisterSignal(xeno, COMSIG_XENO_START_EMIT_PHEROMONES) + message_to_player("Well done. Recovery Pheromones will significantly speed up your health regeneration. Rest or wait until your health is at least [WAITING_HEALTH_THRESHOLD].") + message_to_player("Pheromones also provide their effects to other xenomorph sisters nearby!") + RegisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS, PROC_REF(reach_health_threshold)) + +/datum/tutorial/xenomorph/basic/proc/reach_health_threshold() + SIGNAL_HANDLER + if(xeno.health < WAITING_HEALTH_THRESHOLD) + return + + UnregisterSignal(xeno, COMSIG_XENO_ON_HEAL_WOUNDS) + + message_to_player("Good. Well done.") + message_to_player("A hostile human or \"tallhost\" has appeared. Use your harm intent to kill it in melee!") + update_objective("Kill the human!") + + var/mob/living/carbon/human/human_dummy = new(loc_from_corner(7,7)) + add_to_tracking_atoms(human_dummy) + add_highlight(human_dummy, COLOR_RED) + RegisterSignal(human_dummy, COMSIG_MOB_DEATH, PROC_REF(on_human_death_phase_one)) + +/datum/tutorial/xenomorph/basic/proc/on_human_death_phase_one() + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + + UnregisterSignal(human_dummy, COMSIG_MOB_DEATH) + message_to_player("Well done. Killing humans is one of many ways to help the hive.") + message_to_player("Another way is to capture them. This will grow a new xenomorph inside them which will eventually burst into a new playable xenomorph!") + addtimer(CALLBACK(human_dummy, TYPE_PROC_REF(/mob/living, rejuvenate)), 8 SECONDS) + addtimer(CALLBACK(src, PROC_REF(proceed_to_tackle_phase)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/proceed_to_tackle_phase() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + remove_highlight(human_dummy) + RegisterSignal(human_dummy, COMSIG_MOB_TAKE_DAMAGE, PROC_REF(on_tackle_phase_human_damage)) + RegisterSignal(human_dummy, COMSIG_MOB_TACKLED_DOWN, PROC_REF(proceed_to_cap_phase)) + message_to_player("Tackle the human to the ground using your disarm intent. This can take up to four tries as a drone.") + update_objective("Tackle the human to the ground!") + +/datum/tutorial/xenomorph/basic/proc/on_tackle_phase_human_damage(source, damagedata) + SIGNAL_HANDLER + if(damagedata["damage"] <= 0) + return + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + // Rejuvenate the dummy if it's less than half health so our player can't kill it and softlock themselves. + if(human_dummy.health < (human_dummy.maxHealth / 2)) + message_to_player("Don't harm the human!") + human_dummy.rejuvenate() + +/datum/tutorial/xenomorph/basic/proc/proceed_to_cap_phase() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + + UnregisterSignal(human_dummy, COMSIG_MOB_TACKLED_DOWN) + + ADD_TRAIT(human_dummy, TRAIT_KNOCKEDOUT, TRAIT_SOURCE_TUTORIAL) + ADD_TRAIT(human_dummy, TRAIT_FLOORED, TRAIT_SOURCE_TUTORIAL) + xeno.melee_damage_lower = 0 + xeno.melee_damage_upper = 0 + message_to_player("Well done. Under normal circumstances, you would have to keep tackling the human to keep them down, but for the purposes of this tutorial they will stay down forever.") + addtimer(CALLBACK(src, PROC_REF(cap_phase)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/cap_phase() + var/obj/effect/alien/resin/special/eggmorph/morpher = new(loc_from_corner(2,2), GLOB.hive_datum[XENO_HIVE_TUTORIAL]) + morpher.stored_huggers = 1 + add_to_tracking_atoms(morpher) + add_highlight(morpher, COLOR_YELLOW) + message_to_player("In the south west is an egg morpher. Click the egg morpher to take a facehugger.") + RegisterSignal(xeno, COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER, PROC_REF(take_facehugger_phase)) + +/datum/tutorial/xenomorph/basic/proc/take_facehugger_phase(source, hugger) + SIGNAL_HANDLER + UnregisterSignal(xeno, COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER) + TUTORIAL_ATOM_FROM_TRACKING(/obj/effect/alien/resin/special/eggmorph, morpher) + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + add_to_tracking_atoms(hugger) + remove_highlight(morpher) + + add_highlight(hugger, COLOR_YELLOW) + message_to_player("This is a facehugger, highlighted in yellow. Pick up the facehugger by clicking it.") + message_to_player("Stand next to the downed human and click them to apply the facehugger. Or drop the facehugger near them to see it leap onto their face automatically.") + RegisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE, PROC_REF(nest_cap_phase)) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase() + SIGNAL_HANDLER + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/clothing/mask/facehugger, hugger) + UnregisterSignal(human_dummy, COMSIG_MOB_TAKE_DAMAGE) + UnregisterSignal(human_dummy, COMSIG_HUMAN_IMPREGNATE) + remove_highlight(hugger) + + message_to_player("We should nest the infected human to make sure they don't get away.") + message_to_player("Humans cannot escape nests without help, and the nest will keep them alive long enough for our new sister to burst forth.") + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_two)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_two() + + loc_from_corner(8,0).ChangeTurf(/turf/closed/wall/resin/tutorial) + loc_from_corner(8,1).ChangeTurf(/turf/closed/wall/resin/tutorial) + loc_from_corner(9,1).ChangeTurf(/turf/closed/wall/resin/tutorial) + + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_three)), 5 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_three() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + message_to_player("Grab the human using your grab intent. Or use control + click.") + RegisterSignal(human_dummy, COMSIG_MOVABLE_XENO_START_PULLING, PROC_REF(nest_cap_phase_four)) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_four() + SIGNAL_HANDLER + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + UnregisterSignal(human_dummy, COMSIG_MOVABLE_XENO_START_PULLING) + message_to_player("Well done. Now devour the human by clicking on your character with the grab selected in your hand. You must not move during this process.") + RegisterSignal(human_dummy, COMSIG_MOB_DEVOURED, PROC_REF(nest_cap_phase_five)) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_five() + SIGNAL_HANDLER + message_to_player("Well done, you can reguritate the human using the new ability you have gained.") + message_to_player("Be careful. Real humans may put up a fight and can try to cut out of you from inside!") + give_action(xeno, /datum/action/xeno_action/onclick/regurgitate) + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_six)), 15 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_six() + message_to_player("Humans can only be nested on hive weeds. These are special weeds created by structures such as the hive core, or hive clusters.") + message_to_player("We have set up hive weeds and walls for you in the south east.") + addtimer(CALLBACK(src, PROC_REF(nest_cap_phase_seven)), 10 SECONDS) + +/datum/tutorial/xenomorph/basic/proc/nest_cap_phase_seven() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + UnregisterSignal(human_dummy, COMSIG_MOB_DEVOURED) + RegisterSignal(human_dummy, COMSIG_MOB_NESTED, PROC_REF(on_mob_nested)) + message_to_player("Nest the captive human!") + update_objective("Nest the captive human!") + message_to_player("Drag the human next to the wall so both you and human are directly adjacent to the wall.") + message_to_player("With the grab selected in your hand. Click on the wall. Or click and drag the mouse from the human onto the wall. You must not move during this process.") + new /obj/effect/alien/resin/special/cluster(loc_from_corner(9,0), GLOB.hive_datum[XENO_HIVE_TUTORIAL]) + +/datum/tutorial/xenomorph/basic/proc/on_mob_nested() + SIGNAL_HANDLER + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human, human_dummy) + UnregisterSignal(human_dummy, COMSIG_MOB_NESTED) + + message_to_player("Well done, this concludes the basic Xenomorph tutorial.") + message_to_player("This tutorial will end shortly.") + tutorial_end_in(10 SECONDS) + +// END OF SCRIPTING + +/datum/tutorial/xenomorph/basic/init_map() + loc_from_corner(9,0).ChangeTurf(/turf/closed/wall/resin/tutorial) diff --git a/code/defines/procs/announcement.dm b/code/defines/procs/announcement.dm index 3dd918abbc6b..3eae6076f610 100644 --- a/code/defines/procs/announcement.dm +++ b/code/defines/procs/announcement.dm @@ -145,7 +145,7 @@ for(var/mob/T in targets) if(isobserver(T)) continue - if(!ishuman(T) || isyautja(T) || !is_mainship_level(T.z)) + if(!ishuman(T) || isyautja(T) || !is_mainship_level((get_turf(T))?.z)) targets.Remove(T) log_ares_announcement("[title] Shipwide Update", message) diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index 5267798cfe3b..8acad9821cdd 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -1,15 +1,16 @@ //ALMAYER AREAS--------------------------------------// // Fore = West | Aft = East // // Port = South | Starboard = North // +// Bow = Western|Stern = Eastern //(those are the front and back small sections) /area/almayer icon = 'icons/turf/area_almayer.dmi' - //ambience = list('sound/ambience/shipambience.ogg') + // ambience = list('sound/ambience/shipambience.ogg') icon_state = "almayer" ceiling = CEILING_METAL powernet_name = "almayer" sound_environment = SOUND_ENVIRONMENT_ROOM soundscape_interval = 30 - //soundscape_playlist = list('sound/effects/xylophone1.ogg', 'sound/effects/xylophone2.ogg', 'sound/effects/xylophone3.ogg') + // soundscape_playlist = list('sound/effects/xylophone1.ogg', 'sound/effects/xylophone2.ogg', 'sound/effects/xylophone3.ogg') ambience_exterior = AMBIENCE_ALMAYER ceiling_muffle = FALSE @@ -414,59 +415,120 @@ icon_state = "stairs_upperdeck" fake_zlevel = 1 // upperdeck -// hull areas. +// maintenance areas -// lower deck hull areas +/area/almayer/maint + +//lower maintenance areas + +/area/almayer/maint/lower + name = "\improper Lower Deck Maintenance" + icon_state = "lowerhull" + fake_zlevel = 2 // lowerdeck + +/area/almayer/maint/lower/constr + name = "\improper Lower Deck Construction Site" + +/area/almayer/maint/lower/s_bow + name = "\improper Lower Deck Starboard-Bow Maintenance" + +/area/almayer/maint/lower/cryo_cells + name = "\improper Lower Deck Cryo Cells Maintenance" + +// Upper maintainance areas +/area/almayer/maint/upper + name = "\improper Upper Deck Maintenance" + icon_state = "upperhull" + fake_zlevel = 1 // upperdeck + +/area/almayer/maint/upper/mess + name = "\improper Upper Deck Mess Maintenance" -/area/almayer/hull/lower_hull +/area/almayer/maint/upper/u_m_p + name = "\improper Upper Deck Port-Midship Maintenance" + +/area/almayer/maint/upper/u_m_s + name = "\improper Upper Deck Starboard-Midship Maintenance" + +// hull areas +/area/almayer/maint/hull + +// lower deck hull areas +/area/almayer/maint/hull/lower name = "\improper Lower Deck Hull" icon_state = "lowerhull" fake_zlevel = 2 // lowerdeck +// stairs. + +/area/almayer/maint/hull/lower/stairs + name = "\improper Lower Deck Stairs Hull" -/area/almayer/hull/lower_hull/stern +/area/almayer/maint/hull/lower/stern name = "\improper Lower Deck Stern Hull" -/area/almayer/hull/lower_hull/l_f_s +/area/almayer/maint/hull/lower/p_bow + name = "\improper Lower Deck Port-Bow Hull" + +/area/almayer/maint/hull/lower/s_bow + name = "\improper Lower Deck Starboard-Bow Hull" + +/area/almayer/maint/hull/lower/l_f_s name = "\improper Lower Deck Starboard-Fore Hull" -/area/almayer/hull/lower_hull/l_m_s +/area/almayer/maint/hull/lower/l_m_s name = "\improper Lower Deck Starboard-Midship Hull" -/area/almayer/hull/lower_hull/l_a_s - name = "\improper Lower Deck Starboard Hull" +/area/almayer/maint/hull/lower/l_a_s + name = "\improper Lower Deck Starboard-Aft Hull" -/area/almayer/hull/lower_hull/l_f_p +/area/almayer/maint/hull/lower/l_f_p name = "\improper Lower Deck Port-Fore Hull" -/area/almayer/hull/lower_hull/l_m_p +/area/almayer/maint/hull/lower/l_m_p name = "\improper Lower Deck Port-Midship Hull" -/area/almayer/hull/lower_hull/l_a_p +/area/almayer/maint/hull/lower/l_a_p name = "\improper Lower Deck Port-Aft Hull" // upper deck hull areas -/area/almayer/hull/upper_hull +/area/almayer/maint/hull/upper name = "\improper Upper Deck Hull" icon_state = "upperhull" fake_zlevel = 1 // upperdeck -/area/almayer/hull/upper_hull/u_f_s +// Stairs. +/area/almayer/maint/hull/upper/stairs + name = "\improper Upper Deck Stairs Hull" + +/area/almayer/maint/hull/upper/p_bow + name = "\improper Upper Deck Port-Bow Hull" + +/area/almayer/maint/hull/upper/s_bow + name = "\improper Upper Deck Starboard-Bow Hull" + +/area/almayer/maint/hull/upper/p_stern + name = "\improper Upper Deck Port-Stern Hull" + +/area/almayer/maint/hull/upper/s_stern + name = "\improper Upper Deck Starboard-Stern Hull" + +/area/almayer/maint/hull/upper/u_f_s name = "\improper Upper Deck Fore-Starboard Hull" -/area/almayer/hull/upper_hull/u_m_s +/area/almayer/maint/hull/upper/u_m_s name = "\improper Upper Deck Starboard-Midship Hull" -/area/almayer/hull/upper_hull/u_a_s +/area/almayer/maint/hull/upper/u_a_s name = "\improper Upper Deck Starboard-Aft Hull" -/area/almayer/hull/upper_hull/u_f_p +/area/almayer/maint/hull/upper/u_f_p name = "\improper Upper Deck Port-Fore Hull" -/area/almayer/hull/upper_hull/u_m_p +/area/almayer/maint/hull/upper/u_m_p name = "\improper Upper Deck Port-Midship Hull" -/area/almayer/hull/upper_hull/u_a_p +/area/almayer/maint/hull/upper/u_a_p name = "\improper Upper Deck Port-Aft Hull" /area/almayer/living/cryo_cells diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 9699db527102..732bce1fc3ee 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -66,7 +66,7 @@ var/powernet_name = "default" //Default powernet name. Change to something else to make completely separate powernets var/requires_power = 1 var/unlimited_power = 0 - var/always_unpowered = 0 //this gets overriden to 1 for space in area/New() + var/always_unpowered = 0 //this gets overridden to 1 for space in area/New() //which channels are powered var/power_equip = TRUE @@ -142,12 +142,6 @@ C.network.Remove(CAMERA_NET_POWER_ALARMS) else C.network.Add(CAMERA_NET_POWER_ALARMS) - for (var/mob/living/silicon/aiPlayer in GLOB.ai_mob_list) - if(aiPlayer.z == source.z) - if (state == 1) - aiPlayer.cancelAlarm("Power", src, source) - else - aiPlayer.triggerAlarm("Power", src, cameras, source) for(var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) if(a.z == source.z) if(state == 1) @@ -173,8 +167,6 @@ if (danger_level < 2 && atmosalm >= 2) for(var/obj/structure/machinery/camera/C in src) C.network.Remove(CAMERA_NET_ATMOSPHERE_ALARMS) - for(var/mob/living/silicon/aiPlayer in GLOB.ai_mob_list) - aiPlayer.cancelAlarm("Atmosphere", src, src) for(var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.cancelAlarm("Atmosphere", src, src) @@ -184,8 +176,6 @@ for(var/obj/structure/machinery/camera/C in src) cameras += C C.network.Add(CAMERA_NET_ATMOSPHERE_ALARMS) - for(var/mob/living/silicon/aiPlayer in GLOB.ai_mob_list) - aiPlayer.triggerAlarm("Atmosphere", src, cameras, src) for(var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.triggerAlarm("Atmosphere", src, cameras, src) air_doors_close() @@ -235,8 +225,6 @@ for (var/obj/structure/machinery/camera/C in src) cameras.Add(C) C.network.Add(CAMERA_NET_FIRE_ALARMS) - for (var/mob/living/silicon/ai/aiPlayer in GLOB.ai_mob_list) - aiPlayer.triggerAlarm("Fire", src, cameras, src) for (var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.triggerAlarm("Fire", src, cameras, src) @@ -253,8 +241,6 @@ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/structure/machinery/door, open)) for (var/obj/structure/machinery/camera/C in src) C.network.Remove(CAMERA_NET_FIRE_ALARMS) - for (var/mob/living/silicon/ai/aiPlayer in GLOB.ai_mob_list) - aiPlayer.cancelAlarm("Fire", src, src) for (var/obj/structure/machinery/computer/station_alert/a in GLOB.machines) a.cancelAlarm("Fire", src, src) diff --git a/code/game/camera_manager/camera_manager.dm b/code/game/camera_manager/camera_manager.dm index 93d56aca443c..95292830d49b 100644 --- a/code/game/camera_manager/camera_manager.dm +++ b/code/game/camera_manager/camera_manager.dm @@ -25,13 +25,16 @@ . = ..() map_name = "camera_manager_[REF(src)]_map" cam_screen = new + cam_screen.icon = null cam_screen.name = "screen" cam_screen.assigned_map = map_name cam_screen.del_on_map_removal = FALSE cam_screen.screen_loc = "[map_name]:1,1" + cam_screen.appearance_flags |= TILE_BOUND cam_background = new cam_background.assigned_map = map_name cam_background.del_on_map_removal = FALSE + cam_background.appearance_flags |= TILE_BOUND cam_plane_masters = list() for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) @@ -42,14 +45,17 @@ . = ..() range_turfs = null current_area = null - cam_plane_masters = null + QDEL_LIST_ASSOC_VAL(cam_plane_masters) QDEL_NULL(cam_background) QDEL_NULL(cam_screen) if(current) UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current = null + last_camera_turf = null /datum/component/camera_manager/proc/add_plane(atom/movable/screen/plane_master/instance) instance.assigned_map = map_name + instance.appearance_flags |= TILE_BOUND instance.del_on_map_removal = FALSE if(instance.blend_mode_override) instance.blend_mode = instance.blend_mode_override @@ -61,8 +67,8 @@ var/client/user_client = user.client if(!user_client) return - user_client.register_map_obj(cam_background) user_client.register_map_obj(cam_screen) + user_client.register_map_obj(cam_background) for(var/plane_id in cam_plane_masters) user_client.register_map_obj(cam_plane_masters[plane_id]) @@ -71,14 +77,10 @@ var/client/user_client = user.client if(!user_client) return - user_client.clear_map(cam_background) - user_client.clear_map(cam_screen) - for(var/plane_id in cam_plane_masters) - user_client.clear_map(cam_plane_masters[plane_id]) + user_client.clear_map(map_name) /datum/component/camera_manager/RegisterWithParent() . = ..() - START_PROCESSING(SSdcs, src) SEND_SIGNAL(parent, COMSIG_CAMERA_MAPNAME_ASSIGNED, map_name) RegisterSignal(parent, COMSIG_CAMERA_REGISTER_UI, PROC_REF(register)) RegisterSignal(parent, COMSIG_CAMERA_UNREGISTER_UI, PROC_REF(unregister)) @@ -87,11 +89,10 @@ RegisterSignal(parent, COMSIG_CAMERA_SET_AREA, PROC_REF(set_camera_rect)) RegisterSignal(parent, COMSIG_CAMERA_SET_TARGET, PROC_REF(set_camera)) RegisterSignal(parent, COMSIG_CAMERA_CLEAR, PROC_REF(clear_camera)) + RegisterSignal(parent, COMSIG_CAMERA_REFRESH, PROC_REF(refresh_camera)) /datum/component/camera_manager/UnregisterFromParent() . = ..() - STOP_PROCESSING(SSdcs, src) - UnregisterSignal(parent, COMSIG_CAMERA_REGISTER_UI) UnregisterSignal(parent, COMSIG_CAMERA_UNREGISTER_UI) UnregisterSignal(parent, COMSIG_CAMERA_SET_NVG) @@ -99,6 +100,7 @@ UnregisterSignal(parent, COMSIG_CAMERA_SET_AREA) UnregisterSignal(parent, COMSIG_CAMERA_SET_TARGET) UnregisterSignal(parent, COMSIG_CAMERA_CLEAR) + UnregisterSignal(parent, COMSIG_CAMERA_REFRESH) /datum/component/camera_manager/proc/clear_camera() SIGNAL_HANDLER @@ -113,6 +115,13 @@ target_height = null show_camera_static() +/datum/component/camera_manager/proc/refresh_camera() + SIGNAL_HANDLER + if(render_mode == RENDER_MODE_AREA) + update_area_camera() + return + update_target_camera() + /datum/component/camera_manager/proc/set_camera(source, atom/target, w, h) SIGNAL_HANDLER render_mode = RENDER_MODE_TARGET @@ -134,6 +143,8 @@ target_x = x target_y = y target_z = z + target_width = w + target_height = h update_area_camera() /datum/component/camera_manager/proc/enable_nvg(source, power, matrixcol) @@ -152,10 +163,10 @@ /datum/component/camera_manager/proc/sync_lighting_plane_alpha(lighting_alpha) var/atom/movable/screen/plane_master/lighting/lighting = cam_plane_masters["[LIGHTING_PLANE]"] - if (lighting) + if(lighting) lighting.alpha = lighting_alpha var/atom/movable/screen/plane_master/lighting/exterior_lighting = cam_plane_masters["[EXTERIOR_LIGHTING_PLANE]"] - if (exterior_lighting) + if(exterior_lighting) exterior_lighting.alpha = min(GLOB.minimum_exterior_lighting_alpha, lighting_alpha) /** @@ -215,7 +226,7 @@ var/turf/target = locate(current_area.center_x, current_area.center_y, target_z) var/list/visible_things = isXRay ? range("[x_size]x[y_size]", target) : view("[x_size]x[y_size]", target) - src.render_objects(visible_things) + render_objects(visible_things) /datum/component/camera_manager/proc/render_objects(list/visible_things) var/list/visible_turfs = list() diff --git a/code/game/cas_manager/datums/cas_fire_envelope.dm b/code/game/cas_manager/datums/cas_fire_envelope.dm index 04cd688194dd..cc38b034c764 100644 --- a/code/game/cas_manager/datums/cas_fire_envelope.dm +++ b/code/game/cas_manager/datums/cas_fire_envelope.dm @@ -19,7 +19,7 @@ var/datum/cas_signal/recorded_loc = null var/obj/effect/firemission_guidance/guidance - + var/atom/tracked_object /datum/cas_fire_envelope/New() ..() @@ -27,6 +27,7 @@ /datum/cas_fire_envelope/Destroy(force, ...) linked_console = null + untrack_object() return ..() /datum/cas_fire_envelope/ui_data(mob/user) @@ -151,7 +152,9 @@ recorded_loc = marker return TRUE -/datum/cas_fire_envelope/proc/change_current_loc(location) +/datum/cas_fire_envelope/proc/change_current_loc(location, atom/object) + if(object) + untrack_object() if(!location && guidance) for(var/mob/M in guidance.users) if(istype(M) && M.client) @@ -162,6 +165,21 @@ guidance = new /obj/effect/firemission_guidance() guidance.forceMove(location) guidance.updateCameras(linked_console) + if(object) + tracked_object = object + RegisterSignal(tracked_object, COMSIG_PARENT_QDELETING, PROC_REF(on_tracked_object_del)) + +/// Call to unregister the on_tracked_object_del behavior +/datum/cas_fire_envelope/proc/untrack_object() + if(tracked_object) + UnregisterSignal(tracked_object, COMSIG_PARENT_QDELETING) + tracked_object = null + +/// Signal handler for when we are viewing a object in cam is qdel'd (but camera actually is actually some other obj) +/datum/cas_fire_envelope/proc/on_tracked_object_del(atom/target) + SIGNAL_HANDLER + tracked_object = null + change_current_loc() /datum/cas_fire_envelope/proc/user_is_guided(user) return guidance && (user in guidance.users) @@ -241,7 +259,20 @@ mission_error = "Target is off bounds or obstructed." return change_current_loc(target_turf) - playsound(target_turf, soundeffect, 70, TRUE, 50) + playsound(source = target_turf, soundin = soundeffect, vol = 70, vary = TRUE, sound_range = 50, falloff = 8) + + for(var/mob/mob in range(15, target_turf)) + var/ds_identifier = "LARGE BIRD" + var/fm_identifier = "SPIT FIRE" + if (mob.mob_flags & KNOWS_TECHNOLOGY) + ds_identifier = "DROPSHIP" + fm_identifier = "FIRE" + + mob.show_message( \ + SPAN_HIGHDANGER("YOU HEAR THE [ds_identifier] ROAR AS IT PREPARES TO [fm_identifier] NEAR YOU!"),SHOW_MESSAGE_VISIBLE, \ + SPAN_HIGHDANGER("YOU HEAR SOMETHING FLYING CLOSER TO YOU!") , SHOW_MESSAGE_AUDIBLE \ + ) + sleep(flyto_period) stat = FIRE_MISSION_STATE_FIRING mission.execute_firemission(linked_console, target_turf, dir, fire_length, step_delay, src) @@ -293,10 +324,10 @@ /datum/cas_fire_envelope/uscm_dropship fire_length = 12 - grace_period = 50 //5 seconds - flyto_period = 50 //five seconds - flyoff_period = 50 //FIVE seconds - cooldown_period = 100 //f~ I mean, 10 seconds + grace_period = 5 SECONDS + flyto_period = 4 SECONDS //sleep in the FM itself has been increased by one more second + flyoff_period = 5 SECONDS + cooldown_period = 10 SECONDS soundeffect = 'sound/weapons/dropship_sonic_boom.ogg' //BOOM~WOOOOOSH~HSOOOOOW~BOOM step_delay = 3 max_offset = 12 diff --git a/code/game/cas_manager/datums/cas_fire_mission.dm b/code/game/cas_manager/datums/cas_fire_mission.dm index ece78042ac25..927dded210f0 100644 --- a/code/game/cas_manager/datums/cas_fire_mission.dm +++ b/code/game/cas_manager/datums/cas_fire_mission.dm @@ -38,9 +38,9 @@ for(var/datum/cas_fire_mission_record/record as anything in records) .["records"] += list(record.ui_data(user)) -/datum/cas_fire_mission/proc/build_new_record(obj/structure/dropship_equipment/weapon/weap, fire_length) +/datum/cas_fire_mission/proc/build_new_record(obj/structure/dropship_equipment/weapon/weapon, fire_length) var/datum/cas_fire_mission_record/record = new() - record.weapon = weap + record.weapon = weapon record.offsets = new /list(fire_length) for(var/idx = 1; idx<=fire_length; idx++) record.offsets[idx] = "-" @@ -53,24 +53,24 @@ // if weapon appears in weapons list but not in record // > add empty record for new weapon var/found = FALSE - for(var/obj/structure/dropship_equipment/weapon/weap in weapons) - if(record.weapon == weap) + for(var/obj/structure/dropship_equipment/weapon/weapon in weapons) + if(record.weapon == weapon) found=TRUE break if(!found) bad_records.Add(record) - for(var/obj/structure/dropship_equipment/weapon/weap in weapons) + for(var/obj/structure/dropship_equipment/weapon/weapon in weapons) var/found = FALSE for(var/datum/cas_fire_mission_record/record in records) - if(record.weapon == weap) + if(record.weapon == weapon) found=TRUE break if(!found) - missing_weapons.Add(weap) + missing_weapons.Add(weapon) for(var/datum/cas_fire_mission_record/record in bad_records) records -= record - for(var/obj/structure/dropship_equipment/weapon/weap in missing_weapons) - build_new_record(weap, fire_length) + for(var/obj/structure/dropship_equipment/weapon/weapon in missing_weapons) + build_new_record(weapon, fire_length) /datum/cas_fire_mission/proc/record_for_weapon(weapon_id) for(var/datum/cas_fire_mission_record/record as anything in records) @@ -176,35 +176,35 @@ msg_admin_niche("[usr ? key_name(usr) : "Someone"] is launching Fire Mission '[name]' at ([initial_turf.x],[initial_turf.y],[initial_turf.z]) [ADMIN_JMP(initial_turf)]") var/relative_dir - for(var/mob/M in range(15, initial_turf)) - if(get_turf(M) == initial_turf) + for(var/mob/mob in range(15, initial_turf)) + if(get_turf(mob) == initial_turf) relative_dir = 0 else - relative_dir = Get_Compass_Dir(M, initial_turf) + relative_dir = Get_Compass_Dir(mob, initial_turf) var/ds_identifier = "LARGE BIRD" - if (M.mob_flags & KNOWS_TECHNOLOGY) + if (mob.mob_flags & KNOWS_TECHNOLOGY) ds_identifier = "DROPSHIP" - M.show_message( \ + mob.show_message( \ SPAN_HIGHDANGER("A [ds_identifier] FLIES [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), SHOW_MESSAGE_VISIBLE, \ SPAN_HIGHDANGER("YOU HEAR SOMETHING GO [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), SHOW_MESSAGE_AUDIBLE \ ) // Xenos have time to react to the first message - sleep(0.5 SECONDS) + sleep(1.5 SECONDS) - for(var/mob/M in range(10, initial_turf)) - if(get_turf(M) == initial_turf) + for(var/mob/mob in range(10, initial_turf)) + if(get_turf(mob) == initial_turf) relative_dir = 0 else - relative_dir = Get_Compass_Dir(M, initial_turf) + relative_dir = Get_Compass_Dir(mob, initial_turf) var/ds_identifier = "LARGE BIRD" - if (M.mob_flags & KNOWS_TECHNOLOGY) + if (mob.mob_flags & KNOWS_TECHNOLOGY) ds_identifier = "DROPSHIP" - M.show_message( \ + mob.show_message( \ SPAN_HIGHDANGER("A [ds_identifier] FIRES [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), 1, \ SPAN_HIGHDANGER("YOU HEAR SOMETHING FIRE [SPAN_UNDERLINE(relative_dir ? uppertext(("TO YOUR " + dir2text(relative_dir))) : uppertext("right above you"))]!"), 2 \ ) @@ -243,8 +243,8 @@ if (current_turf == null) return -1 var/turf/shootloc = locate(current_turf.x + sx*offset, current_turf.y + sy*offset, current_turf.z) - var/area/A = get_area(shootloc) - if(shootloc && !CEILING_IS_PROTECTED(A?.ceiling, CEILING_PROTECTION_TIER_3) && !protected_by_pylon(TURF_PROTECTION_CAS, shootloc)) + var/area/area = get_area(shootloc) + if(shootloc && !CEILING_IS_PROTECTED(area?.ceiling, CEILING_PROTECTION_TIER_3) && !protected_by_pylon(TURF_PROTECTION_CAS, shootloc)) item.weapon.open_fire_firemission(shootloc) sleep(step_delay) if(envelope) diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index c017733de7fd..f8c8be5c10ad 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -155,7 +155,7 @@ Additional game mode variables. else if(!istype(player,/mob/dead)) continue //Otherwise we just want to grab the ghosts. - if(GLOB.RoleAuthority.roles_whitelist[player.ckey] & WHITELIST_PREDATOR) //Are they whitelisted? + if(player?.client.check_whitelist_status(WHITELIST_PREDATOR)) //Are they whitelisted? if(!player.client.prefs) player.client.prefs = new /datum/preferences(player.client) //Somehow they don't have one. @@ -188,7 +188,7 @@ Additional game mode variables. if(show_warning) to_chat(pred_candidate, SPAN_WARNING("Something went wrong!")) return - if(!(GLOB.RoleAuthority.roles_whitelist[pred_candidate.ckey] & WHITELIST_PREDATOR)) + if(!(pred_candidate?.client.check_whitelist_status(WHITELIST_PREDATOR))) if(show_warning) to_chat(pred_candidate, SPAN_WARNING("You are not whitelisted! You may apply on the forums to be whitelisted as a predator.")) return @@ -201,9 +201,9 @@ Additional game mode variables. to_chat(pred_candidate, SPAN_WARNING("You already were a Yautja! Give someone else a chance.")) return - if(show_warning && tgui_alert(pred_candidate, "Confirm joining the hunt. You will join as \a [lowertext(J.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, pred_candidate.client))] predator", "Confirmation", list("Yes", "No"), 10 SECONDS) != "Yes") + if(show_warning && tgui_alert(pred_candidate, "Confirm joining the hunt. You will join as \a [lowertext(J.get_whitelist_status(pred_candidate.client))] predator", "Confirmation", list("Yes", "No"), 10 SECONDS) != "Yes") return - if(J.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, pred_candidate.client) == WHITELIST_NORMAL) + if(J.get_whitelist_status(pred_candidate.client) == WHITELIST_NORMAL) var/pred_max = calculate_pred_max if(pred_current_num >= pred_max) if(show_warning) to_chat(pred_candidate, SPAN_WARNING("Only [pred_max] predators may spawn this round, but Councillors and Ancients do not count.")) @@ -259,10 +259,10 @@ Additional game mode variables. //If we are selecting xenomorphs, we NEED them to play the round. This is the expected behavior. //If this is an optional behavior, just override this proc or make an override here. -/datum/game_mode/proc/initialize_starting_xenomorph_list(list/hives = list(XENO_HIVE_NORMAL), force_xenos = FALSE) +/datum/game_mode/proc/initialize_starting_xenomorph_list(list/hives = list(XENO_HIVE_NORMAL), bypass_checks = FALSE) var/list/datum/mind/possible_xenomorphs = get_players_for_role(JOB_XENOMORPH) var/list/datum/mind/possible_queens = get_players_for_role(JOB_XENOMORPH_QUEEN) - if(possible_xenomorphs.len < xeno_required_num) //We don't have enough aliens, we don't consider people rolling for only Queen. + if(possible_xenomorphs.len < xeno_required_num && !bypass_checks) //We don't have enough aliens, we don't consider people rolling for only Queen. to_world("

Not enough players have chosen to be a xenomorph in their character setup. Aborting.

") return @@ -325,11 +325,11 @@ Additional game mode variables. Our list is empty. This can happen if we had someone ready as alien and predator, and predators are picked first. So they may have been removed from the list, oh well. */ - if(LAZYLEN(xenomorphs) < xeno_required_num && LAZYLEN(picked_queens) != LAZYLEN(hives)) + if(LAZYLEN(xenomorphs) < xeno_required_num && LAZYLEN(picked_queens) != LAZYLEN(hives) && !bypass_checks) to_world("

Could not find any candidates after initial alien list pass. Aborting.

") return - return 1 + return TRUE // Helper proc to set some constants /proc/setup_new_xeno(datum/mind/new_xeno) @@ -1001,7 +1001,7 @@ Additional game mode variables. to_chat(joe_candidate, SPAN_WARNING("Something went wrong!")) return - if(!(GLOB.RoleAuthority.roles_whitelist[joe_candidate.ckey] & WHITELIST_JOE)) + if(!joe_job.check_whitelist_status(joe_candidate)) if(show_warning) to_chat(joe_candidate, SPAN_WARNING("You are not whitelisted! You may apply on the forums to be whitelisted as a synth.")) return @@ -1012,7 +1012,7 @@ Additional game mode variables. return // council doesn't count towards this conditional. - if(joe_job.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, joe_candidate.client) == WHITELIST_NORMAL) + if(joe_job.get_whitelist_status(joe_candidate.client) == WHITELIST_NORMAL) var/joe_max = joe_job.total_positions if((joe_job.current_positions >= joe_max) && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE)) if(show_warning) diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index f64c2432486b..6dfe50542b00 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -21,7 +21,7 @@ //////////////////////////////////////////////////////////////////////////////////////// /* Pre-pre-startup */ -/datum/game_mode/colonialmarines/can_start() +/datum/game_mode/colonialmarines/can_start(bypass_checks = FALSE) initialize_special_clamps() return TRUE @@ -332,7 +332,10 @@ if(HS.living_xeno_queen && !should_block_game_interaction(HS.living_xeno_queen.loc)) //Some Queen is alive, we shouldn't end the game yet return - round_finished = MODE_INFESTATION_M_MINOR + if (HS.totalXenos <= 3) + round_finished = MODE_INFESTATION_M_MAJOR + else + round_finished = MODE_INFESTATION_M_MINOR /////////////////////////////// //Checks if the round is over// diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index 6ebda633a19b..f6fbb5f4f900 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -262,7 +262,7 @@ GLOB.round_statistics.track_round_end() if(finished == 1) log_game("Round end result - xenos won") - to_world(SPAN_ROUND_HEADER("The Xenos have succesfully defended their hive from colonization.")) + to_world(SPAN_ROUND_HEADER("The Xenos have successfully defended their hive from colonization.")) to_world(SPAN_ROUNDBODY("Well done, you've secured LV-624 for the hive!")) to_world(SPAN_ROUNDBODY("It will be another five years before the USCM returns to the Neroid Sector, with the arrival of the 2nd 'Falling Falcons' Battalion and the USS Almayer.")) to_world(SPAN_ROUNDBODY("The xenomorph hive on LV-624 remains unthreatened until then...")) @@ -520,8 +520,7 @@ return if(user.is_mob_incapacitated()) return - if(ismaintdrone(usr) || \ - istype(usr, /mob/living/carbon/xenomorph)) + if(istype(usr, /mob/living/carbon/xenomorph)) to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) return if(working) diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm index eb3e46a2686b..d5ff07391b5e 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost/equipping.dm @@ -76,7 +76,7 @@ You must lead his Honor guard, his elite unit of marines, to protect the command gear_preset = /datum/equipment_preset/wo/vhg /datum/job/command/bridge/whiskey/generate_entry_message(mob/living/carbon/human/H) - . = {"You were assigned to guard the commander in this hostile enviroment; that hasn't changed. Ensure your extra training and equipment isn't wasted! + . = {"You were assigned to guard the commander in this hostile environment; that hasn't changed. Ensure your extra training and equipment isn't wasted! You've survived through enough battles that you've been entrusted with more training, and can use overwatch consoles, as well as give orders. You're expected to defend not only the commander, but the bunker at large; leave the outside defenses to the marines. Glory to the commander. Glory to the USCM."} @@ -90,7 +90,7 @@ Glory to the commander. Glory to the USCM."} gear_preset = /datum/equipment_preset/wo/hgs /datum/job/command/tank_crew/whiskey/generate_entry_message(mob/living/carbon/human/H) - . = {"You were assigned to guard the commander in this hostile enviroment; that hasn't changed. Ensure your extra training and equipment isn't wasted! + . = {"You were assigned to guard the commander in this hostile environment; that hasn't changed. Ensure your extra training and equipment isn't wasted! You're expected to defend not only the commander, but the bunker at large; leave the outside defenses to the marines. You've been through much, and as such, have been given special-weapons training. Use it well. Glory to the commander. Glory to the USCM."} @@ -104,7 +104,7 @@ Glory to the commander. Glory to the USCM."} gear_preset = /datum/equipment_preset/wo/hg /datum/job/command/police/whiskey/generate_entry_message(mob/living/carbon/human/H) - . = {"You were assigned to guard the commander in this hostile enviroment; that hasn't changed. Ensure your extra training and equipment isn't wasted! + . = {"You were assigned to guard the commander in this hostile environment; that hasn't changed. Ensure your extra training and equipment isn't wasted! You're expected to defend not only the commander, but the bunker at large; leave the outside defenses to the marines. Glory to the commander. Glory to the USCM."} diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm index 1ec07b9d8fec..609a70f1dd3b 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm @@ -198,7 +198,7 @@ wave_castes = list(XENO_CASTE_BURROWER) wave_type = WO_STATIC_WAVE number_of_xenos = 3 - command_announcement = list("First Lieutenant Ike Saker, Executive Officer of Captain Naiche, speaking. The Captain is still trying to try and get off world contact. An engineer platoon managed to destroy the main entrance into this valley this should give you a short break while the aliens find another way in. We are receiving reports of seismic waves occuring nearby, there might be creatures burrowing underground, keep an eye on your defenses. I have also received word that marines from an overrun outpost are evacuating to you and will help you. I used to be stationed with them, they are top notch!", "First Lieutenant Ike Saker, 3rd Battalion Command, LV-624 Garrison") + command_announcement = list("First Lieutenant Ike Saker, Executive Officer of Captain Naiche, speaking. The Captain is still trying to try and get off world contact. An engineer platoon managed to destroy the main entrance into this valley this should give you a short break while the aliens find another way in. We are receiving reports of seismic waves occurring nearby, there might be creatures burrowing underground, keep an eye on your defenses. I have also received word that marines from an overrun outpost are evacuating to you and will help you. I used to be stationed with them, they are top notch!", "First Lieutenant Ike Saker, 3rd Battalion Command, LV-624 Garrison") /datum/whiskey_outpost_wave/wave8 wave_number = 8 diff --git a/code/game/gamemodes/colonialmarines/xenovsxeno.dm b/code/game/gamemodes/colonialmarines/xenovsxeno.dm index a9ad48196257..79754a6fff84 100644 --- a/code/game/gamemodes/colonialmarines/xenovsxeno.dm +++ b/code/game/gamemodes/colonialmarines/xenovsxeno.dm @@ -24,14 +24,14 @@ votable = FALSE // broken /* Pre-pre-startup */ -/datum/game_mode/xenovs/can_start() +/datum/game_mode/xenovs/can_start(bypass_checks = FALSE) for(var/hivename in SSmapping.configs[GROUND_MAP].xvx_hives) if(GLOB.readied_players > SSmapping.configs[GROUND_MAP].xvx_hives[hivename]) hives += hivename xeno_starting_num = GLOB.readied_players - if(!initialize_starting_xenomorph_list(hives, TRUE)) + if(!initialize_starting_xenomorph_list(hives, bypass_checks)) hives.Cut() - return + return FALSE return TRUE /datum/game_mode/xenovs/announce() diff --git a/code/game/gamemodes/extended/infection.dm b/code/game/gamemodes/extended/infection.dm index 1e0032a8e6fa..e2c34f9aa16c 100644 --- a/code/game/gamemodes/extended/infection.dm +++ b/code/game/gamemodes/extended/infection.dm @@ -45,9 +45,9 @@ if(transform_survivor(survivor) == 1) survivors -= survivor -/datum/game_mode/infection/can_start() +/datum/game_mode/infection/can_start(bypass_checks = FALSE) initialize_starting_survivor_list() - return 1 + return TRUE //We don't actually need survivors to play, so long as aliens are present. /datum/game_mode/infection/proc/initialize_starting_survivor_list() @@ -61,7 +61,7 @@ possible_synth_survivors -= A continue - if(GLOB.RoleAuthority.roles_whitelist[ckey(A.key)] & WHITELIST_SYNTHETIC) + if(A.current.client?.check_whitelist_status(WHITELIST_SYNTHETIC)) if(A in possible_survivors) continue //they are already applying to be a survivor else diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 3bb8c2d80123..1803d7ac127c 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -50,19 +50,20 @@ GLOBAL_VAR_INIT(cas_tracking_id_increment, 0) //this var used to assign unique t ///can_start() ///Checks to see if the game can be setup and ran with the current number of players or whatnot. -/datum/game_mode/proc/can_start() - var/playerC = 0 +/datum/game_mode/proc/can_start(bypass_checks = FALSE) + if(bypass_checks) + return TRUE + var/players = 0 for(var/mob/new_player/player in GLOB.new_player_list) - if((player.client)&&(player.ready)) - playerC++ - - if(GLOB.master_mode=="secret") - if(playerC >= required_players_secret) - return 1 + if(player.client && player.ready) + players++ + if(GLOB.master_mode == "secret") + if(players >= required_players_secret) + return TRUE else - if(playerC >= required_players) - return 1 - return 0 + if(players >= required_players) + return TRUE + return FALSE ///pre_setup() diff --git a/code/game/jobs/job/antag/other/pred.dm b/code/game/jobs/job/antag/other/pred.dm index 77439276d04a..3808c5637da9 100644 --- a/code/game/jobs/job/antag/other/pred.dm +++ b/code/game/jobs/job/antag/other/pred.dm @@ -31,11 +31,7 @@ SSticker.mode.attempt_to_join_as_predator(player) -/datum/job/antag/predator/get_whitelist_status(list/roles_whitelist, client/player) // Might be a problem waiting here, but we've got no choice - . = ..() - if(!.) - return - +/datum/job/antag/predator/get_whitelist_status(client/player) // Might be a problem waiting here, but we've got no choice if(!player.clan_info) return CLAN_RANK_BLOODED @@ -49,10 +45,7 @@ if(!("[JOB_PREDATOR][rank]" in gear_preset_whitelist)) return CLAN_RANK_BLOODED - if(\ - (roles_whitelist[player.ckey] & (WHITELIST_YAUTJA_LEADER|WHITELIST_YAUTJA_COUNCIL|WHITELIST_YAUTJA_COUNCIL_LEGACY)) &&\ - get_desired_status(player.prefs.yautja_status, WHITELIST_COUNCIL) == WHITELIST_NORMAL\ - ) + if(player.check_whitelist_status(WHITELIST_YAUTJA_LEADER|WHITELIST_YAUTJA_COUNCIL|WHITELIST_YAUTJA_COUNCIL_LEGACY) && get_desired_status(player.prefs.yautja_status, WHITELIST_COUNCIL) == WHITELIST_NORMAL) return CLAN_RANK_BLOODED return rank diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index 23097e139eda..a85731aa781a 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -14,7 +14,7 @@ var/hostile = FALSE /datum/job/civilian/survivor/set_spawn_positions(count) - spawn_positions = Clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8) + spawn_positions = clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8) total_positions = spawn_positions /datum/job/civilian/survivor/equip_job(mob/living/survivor) diff --git a/code/game/jobs/job/civilians/support/cmo.dm b/code/game/jobs/job/civilians/support/cmo.dm index 835f16f7d814..b75f840ac895 100644 --- a/code/game/jobs/job/civilians/support/cmo.dm +++ b/code/game/jobs/job/civilians/support/cmo.dm @@ -6,7 +6,7 @@ selection_class = "job_cmo" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/cmo - entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." + entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overridden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." AddTimelock(/datum/job/civilian/professor, list( JOB_MEDIC_ROLES = 10 HOURS diff --git a/code/game/jobs/job/civilians/support/synthetic.dm b/code/game/jobs/job/civilians/support/synthetic.dm index 70060fb36a15..12e50ef6c809 100644 --- a/code/game/jobs/job/civilians/support/synthetic.dm +++ b/code/game/jobs/job/civilians/support/synthetic.dm @@ -19,16 +19,16 @@ "[JOB_SYNTH][WHITELIST_LEADER]" = /datum/equipment_preset/synth/uscm/councillor ) -/datum/job/civilian/synthetic/get_whitelist_status(list/roles_whitelist, client/player) +/datum/job/civilian/synthetic/get_whitelist_status(client/player) . = ..() if(!.) return - if(roles_whitelist[player.ckey] & WHITELIST_SYNTHETIC_LEADER) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC_LEADER)) return get_desired_status(player.prefs.synth_status, WHITELIST_LEADER) - else if(roles_whitelist[player.ckey] & (WHITELIST_SYNTHETIC_COUNCIL|WHITELIST_SYNTHETIC_COUNCIL_LEGACY)) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC_COUNCIL|WHITELIST_SYNTHETIC_COUNCIL_LEGACY)) return get_desired_status(player.prefs.synth_status, WHITELIST_COUNCIL) - else if(roles_whitelist[player.ckey] & WHITELIST_SYNTHETIC) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC)) return get_desired_status(player.prefs.synth_status, WHITELIST_NORMAL) /datum/job/civilian/synthetic/set_spawn_positions(count) diff --git a/code/game/jobs/job/civilians/support/working_joe.dm b/code/game/jobs/job/civilians/support/working_joe.dm index bc8f8c439900..d890b3684084 100644 --- a/code/game/jobs/job/civilians/support/working_joe.dm +++ b/code/game/jobs/job/civilians/support/working_joe.dm @@ -17,6 +17,12 @@ job_options = list(STANDARD_VARIANT = "JOE", HAZMAT_VARIANT = "HAZ") var/standard = TRUE +/datum/job/civilian/working_joe/check_whitelist_status(mob/user) + if(user.client.check_whitelist_status(WHITELIST_SYNTHETIC)) + return TRUE + + return ..() + /datum/job/civilian/working_joe/handle_job_options(option) if(option != HAZMAT_VARIANT) standard = TRUE diff --git a/code/game/jobs/job/command/cic/captain.dm b/code/game/jobs/job/command/cic/captain.dm index 72f861351912..30fa455beeee 100644 --- a/code/game/jobs/job/command/cic/captain.dm +++ b/code/game/jobs/job/command/cic/captain.dm @@ -19,16 +19,16 @@ entry_message_body = "You are the Commanding Officer of the [MAIN_SHIP_NAME] as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." return ..() -/datum/job/command/commander/get_whitelist_status(list/roles_whitelist, client/player) +/datum/job/command/commander/get_whitelist_status(client/player) . = ..() if(!.) return - if(roles_whitelist[player.ckey] & WHITELIST_COMMANDER_LEADER) + if(player.check_whitelist_status(WHITELIST_COMMANDER_LEADER|WHITELIST_COMMANDER_COLONEL)) return get_desired_status(player.prefs.commander_status, WHITELIST_LEADER) - else if(roles_whitelist[player.ckey] & (WHITELIST_COMMANDER_COUNCIL|WHITELIST_COMMANDER_COUNCIL_LEGACY)) + if(player.check_whitelist_status(WHITELIST_COMMANDER_COUNCIL|WHITELIST_COMMANDER_COUNCIL_LEGACY)) return get_desired_status(player.prefs.commander_status, WHITELIST_COUNCIL) - else if(roles_whitelist[player.ckey] & WHITELIST_COMMANDER) + if(player.check_whitelist_status(WHITELIST_COMMANDER)) return get_desired_status(player.prefs.commander_status, WHITELIST_NORMAL) /datum/job/command/commander/announce_entry_message(mob/living/carbon/human/H) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 094b899c1691..1a04c3cafeb5 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -66,10 +66,7 @@ return "" return "[CONFIG_GET(string/wikiarticleurl)]/[replacetext(title, " ", "_")]" -/datum/job/proc/get_whitelist_status(list/roles_whitelist, client/player) - if(!roles_whitelist) - return FALSE - +/datum/job/proc/get_whitelist_status(client/player) return WHITELIST_NORMAL /datum/timelock @@ -252,7 +249,7 @@ var/mob/living/carbon/human/human = M var/job_whitelist = title - var/whitelist_status = get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, human.client) + var/whitelist_status = get_whitelist_status(human.client) if(whitelist_status) job_whitelist = "[title][whitelist_status]" @@ -314,3 +311,10 @@ /// Intended to be overwritten to handle any requirements for specific job variations that can be selected /datum/job/proc/filter_job_option(mob/job_applicant) return job_options + +/datum/job/proc/check_whitelist_status(mob/user) + if(!(flags_startup_parameters & ROLE_WHITELISTED)) + return TRUE + + if(user.client.check_whitelist_status(flags_whitelist)) + return TRUE diff --git a/code/game/jobs/job/marine/squads.dm b/code/game/jobs/job/marine/squads.dm index 5eac0586eb34..756369c8eb5b 100644 --- a/code/game/jobs/job/marine/squads.dm +++ b/code/game/jobs/job/marine/squads.dm @@ -34,11 +34,11 @@ /// If uses the overlay var/use_stripe_overlay = TRUE /// Color for the squad marines gear overlays - var/equipment_color = "#FFFFFF" + var/equipment_color = COLOR_WHITE /// The alpha for the armor overlay used by equipment color var/armor_alpha = 125 /// Color for the squad marines langchat - var/chat_color = "#FFFFFF" + var/chat_color = COLOR_WHITE /// Which special access do we grant them var/list/access = list() /// Can use any squad vendor regardless of squad connection @@ -400,17 +400,17 @@ /// Displays a message to squad members directly on the game map /datum/squad/proc/send_maptext(text = "", title_text = "", only_leader = 0) - var/message_colour = chat_color + var/message_color = chat_color if(only_leader) if(squad_leader) if(!squad_leader.stat && squad_leader.client) playsound_client(squad_leader.client, 'sound/effects/radiostatic.ogg', squad_leader.loc, 25, FALSE) - squad_leader.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_colour) + squad_leader.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_color) else for(var/mob/living/carbon/human/marine in marines_list) if(!marine.stat && marine.client) //Only living and connected people in our squad playsound_client(marine.client, 'sound/effects/radiostatic.ogg', marine.loc, 25, FALSE) - marine.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_colour) + marine.play_screen_text("[title_text]
" + text, /atom/movable/screen/text/screen_text/command_order, message_color) /// Displays a message to the squad members in chat /datum/squad/proc/send_message(text = "", plus_name = 0, only_leader = 0) diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index af99e17d65a9..58c9ad5b5092 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -36,7 +36,6 @@ GLOBAL_VAR_INIT(players_preassigned, 0) var/list/roles_by_path //Master list generated when role aithority is created, listing every role by path, including variable roles. Great for manually equipping with. var/list/roles_by_name //Master list generated when role authority is created, listing every default role by name, including those that may not be regularly selected. var/list/roles_for_mode //Derived list of roles only for the game mode, generated when the round starts. - var/list/roles_whitelist //Associated list of lists, by ckey. Checks to see if a person is whitelisted for a specific role. var/list/castes_by_path //Master list generated when role aithority is created, listing every caste by path. var/list/castes_by_name //Master list generated when role authority is created, listing every default caste by name. @@ -116,57 +115,6 @@ GLOBAL_VAR_INIT(players_preassigned, 0) squads += S squads_by_type[S.type] = S - load_whitelist() - - -/datum/authority/branch/role/proc/load_whitelist(filename = "config/role_whitelist.txt") - var/L[] = file2list(filename) - var/P[] - var/W[] = new //We want a temporary whitelist list, in case we need to reload. - - var/i - var/r - var/ckey - var/role - roles_whitelist = list() - for(i in L) - if(!i) continue - i = trim(i) - if(!length(i)) continue - else if (copytext(i, 1, 2) == "#") continue - - P = splittext(i, "+") - if(!P.len) continue - ckey = ckey(P[1]) //Converting their key to canonical form. ckey() does this by stripping all spaces, underscores and converting to lower case. - - role = NO_FLAGS - r = 1 - while(++r <= P.len) - switch(ckey(P[r])) - if("yautja") role |= WHITELIST_YAUTJA - if("yautjalegacy") role |= WHITELIST_YAUTJA_LEGACY - if("yautjacouncil") role |= WHITELIST_YAUTJA_COUNCIL - if("yautjacouncillegacy") role |= WHITELIST_YAUTJA_COUNCIL_LEGACY - if("yautjaleader") role |= WHITELIST_YAUTJA_LEADER - if("commander") role |= WHITELIST_COMMANDER - if("commandercouncil") role |= WHITELIST_COMMANDER_COUNCIL - if("commandercouncillegacy") role |= WHITELIST_COMMANDER_COUNCIL_LEGACY - if("commanderleader") role |= WHITELIST_COMMANDER_LEADER - if("workingjoe") role |= WHITELIST_JOE - if("synthetic") role |= (WHITELIST_SYNTHETIC|WHITELIST_JOE) - if("syntheticcouncil") role |= WHITELIST_SYNTHETIC_COUNCIL - if("syntheticcouncillegacy") role |= WHITELIST_SYNTHETIC_COUNCIL_LEGACY - if("syntheticleader") role |= WHITELIST_SYNTHETIC_LEADER - if("advisor") role |= WHITELIST_MENTOR - if("allgeneral") role |= WHITELISTS_GENERAL - if("allcouncil") role |= (WHITELISTS_COUNCIL|WHITELISTS_GENERAL) - if("alllegacycouncil") role |= (WHITELISTS_LEGACY_COUNCIL|WHITELISTS_GENERAL) - if("everything", "allleader") role |= WHITELIST_EVERYTHING - - W[ckey] = role - - roles_whitelist = W - //#undef FACTION_TO_JOIN /* @@ -268,7 +216,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou var/datum/job/PJ = temp_roles_for_mode[JOB_PREDATOR] if(istype(PJ)) PJ.set_spawn_positions(GLOB.players_preassigned) - REDIS_PUBLISH("byond.round", "type" = "predator-round") + REDIS_PUBLISH("byond.round", "type" = "predator-round", "map" = SSmapping.configs[GROUND_MAP].map_name) // Assign the roles, this time for real, respecting limits we have established. var/list/roles_left = assign_roles(temp_roles_for_mode, unassigned_players) @@ -415,7 +363,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou return FALSE if(!J.can_play_role(M.client)) return FALSE - if(J.flags_startup_parameters & ROLE_WHITELISTED && !(roles_whitelist[M.ckey] & J.flags_whitelist)) + if(!J.check_whitelist_status(M)) return FALSE if(J.total_positions != -1 && J.get_total_positions(latejoin) <= J.current_positions) return FALSE @@ -518,7 +466,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou new_job.handle_job_options(new_human.client.prefs.pref_special_job_options[new_job.title]) var/job_whitelist = new_job.title - var/whitelist_status = new_job.get_whitelist_status(roles_whitelist, new_human.client) + var/whitelist_status = new_job.get_whitelist_status(new_human.client) if(whitelist_status) job_whitelist = "[new_job.title][whitelist_status]" diff --git a/code/game/jobs/slot_scaling.dm b/code/game/jobs/slot_scaling.dm index 2d444d06e5ab..8bd4af908c07 100644 --- a/code/game/jobs/slot_scaling.dm +++ b/code/game/jobs/slot_scaling.dm @@ -10,7 +10,7 @@ /proc/job_slot_formula(marine_count, factor, c, min, max) if(marine_count <= factor) return min - return round(Clamp((marine_count/factor)+c, min, max)) + return round(clamp((marine_count/factor)+c, min, max)) /proc/medic_slot_formula(playercount) return job_slot_formula(playercount,40,1,3,5) diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 3a4b94145ca1..09db84fec2c2 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -1,12 +1,3 @@ -#define WHITELISTFILE "data/whitelist.txt" - -GLOBAL_LIST_FILE_LOAD(whitelist, WHITELISTFILE) - -/proc/check_whitelist(mob/M /*, rank*/) - if(!CONFIG_GET(flag/usewhitelist) || !GLOB.whitelist) - return 0 - return ("[M.ckey]" in GLOB.whitelist) - /proc/can_play_special_job(client/client, job) if(client.admin_holder && (client.admin_holder.rights & R_ADMIN)) return TRUE @@ -18,35 +9,208 @@ GLOBAL_LIST_FILE_LOAD(whitelist, WHITELISTFILE) return J.can_play_role(client) return TRUE -GLOBAL_LIST_FILE_LOAD(alien_whitelist, "config/alienwhitelist.txt") - -//todo: admin aliens -/proc/is_alien_whitelisted(mob/M, species) - if(!CONFIG_GET(flag/usealienwhitelist)) //If there's not config to use the whitelist. - return 1 - if(species == "human" || species == "Human") - return 1 -// if(check_rights(R_ADMIN, 0)) //Admins are not automatically considered to be whitelisted anymore. ~N -// return 1 //This actually screwed up a bunch of procs, but I only noticed it with the wrong spawn point. - if(!CONFIG_GET(flag/usealienwhitelist) || !GLOB.alien_whitelist) - return 0 - if(M && species) - for (var/s in GLOB.alien_whitelist) - if(findtext(lowertext(s),"[lowertext(M.key)] - [species]")) - return 1 - //if(findtext(lowertext(s),"[lowertext(M.key)] - [species] Elder")) //Unnecessary. - // return 1 - if(findtext(lowertext(s),"[lowertext(M.key)] - All")) - return 1 - return 0 - /// returns a list of strings containing the whitelists held by a specific ckey /proc/get_whitelisted_roles(ckey) - if(GLOB.RoleAuthority.roles_whitelist[ckey] & WHITELIST_PREDATOR) + var/datum/entity/player/player = get_player_from_key(ckey) + if(player.check_whitelist_status(WHITELIST_YAUTJA)) LAZYADD(., "predator") - if(GLOB.RoleAuthority.roles_whitelist[ckey] & WHITELIST_COMMANDER) + if(player.check_whitelist_status(WHITELIST_COMMANDER)) LAZYADD(., "commander") - if(GLOB.RoleAuthority.roles_whitelist[ckey] & WHITELIST_SYNTHETIC) + if(player.check_whitelist_status(WHITELIST_SYNTHETIC)) LAZYADD(., "synthetic") -#undef WHITELISTFILE +/client/load_player_data_info(datum/entity/player/player) + . = ..() + + if(isSenator(src)) + add_verb(src, /client/proc/whitelist_panel) + +/client + var/datum/whitelist_panel/wl_panel + +/client/proc/whitelist_panel() + set name = "Whitelist Panel" + set category = "Admin.Panels" + + if(wl_panel) + qdel(wl_panel) + wl_panel = new + wl_panel.tgui_interact(mob) + +#define WL_PANEL_RIGHT_CO (1<<0) +#define WL_PANEL_RIGHT_SYNTH (1<<1) +#define WL_PANEL_RIGHT_YAUTJA (1<<2) +#define WL_PANEL_RIGHT_MENTOR (1<<3) +#define WL_PANEL_RIGHT_OVERSEER (1<<4) +#define WL_PANEL_ALL_COUNCILS (WL_PANEL_RIGHT_CO|WL_PANEL_RIGHT_SYNTH|WL_PANEL_RIGHT_YAUTJA) +#define WL_PANEL_ALL_RIGHTS (WL_PANEL_RIGHT_CO|WL_PANEL_RIGHT_SYNTH|WL_PANEL_RIGHT_YAUTJA|WL_PANEL_RIGHT_MENTOR|WL_PANEL_RIGHT_OVERSEER) + +/datum/whitelist_panel + var/viewed_player = list() + var/current_menu = "Panel" + var/user_rights = 0 + var/target_rights = 0 + var/new_rights = 0 + +/datum/whitelist_panel/proc/get_user_rights(mob/user) + if(!user.client) + return + var/client/person = user.client + if(CLIENT_HAS_RIGHTS(person, R_PERMISSIONS)) + return WL_PANEL_ALL_RIGHTS + var/rights + if(person.check_whitelist_status(WHITELIST_COMMANDER_LEADER)) + rights |= WL_PANEL_RIGHT_CO + if(person.check_whitelist_status(WHITELIST_SYNTHETIC_LEADER)) + rights |= WL_PANEL_RIGHT_SYNTH + if(person.check_whitelist_status(WHITELIST_YAUTJA_LEADER)) + rights |= WL_PANEL_RIGHT_YAUTJA + if(rights == WL_PANEL_ALL_COUNCILS) + return WL_PANEL_ALL_RIGHTS + return rights + +/datum/whitelist_panel/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "WhitelistPanel", "Whitelist Panel") + ui.open() + +/datum/whitelist_panel/ui_state(mob/user) + return GLOB.always_state + +/datum/whitelist_panel/ui_close(mob/user) + . = ..() + if(user?.client.wl_panel) + qdel(user.client.wl_panel) + +/datum/whitelist_panel/vv_edit_var(var_name, var_value) + return FALSE + +/datum/whitelist_panel/ui_data(mob/user) + var/list/data = list() + + data["current_menu"] = current_menu + data["user_rights"] = user_rights + data["viewed_player"] = viewed_player + data["target_rights"] = target_rights + data["new_rights"] = new_rights + + return data + +GLOBAL_LIST_INIT(co_flags, list( + list(name = "Commander", bitflag = WHITELIST_COMMANDER, permission = WL_PANEL_RIGHT_CO), + list(name = "Council", bitflag = WHITELIST_COMMANDER_COUNCIL, permission = WL_PANEL_RIGHT_CO), + list(name = "Legacy Council", bitflag = WHITELIST_COMMANDER_COUNCIL_LEGACY, permission = WL_PANEL_RIGHT_CO), + list(name = "Senator", bitflag = WHITELIST_COMMANDER_LEADER, permission = WL_PANEL_RIGHT_OVERSEER), + list(name = "Colonel", bitflag = WHITELIST_COMMANDER_COLONEL, permission = WL_PANEL_RIGHT_OVERSEER) +)) +GLOBAL_LIST_INIT(syn_flags, list( + list(name = "Synthetic", bitflag = WHITELIST_SYNTHETIC, permission = WL_PANEL_RIGHT_SYNTH), + list(name = "Council", bitflag = WHITELIST_SYNTHETIC_COUNCIL, permission = WL_PANEL_RIGHT_SYNTH), + list(name = "Legacy Council", bitflag = WHITELIST_SYNTHETIC_COUNCIL_LEGACY, permission = WL_PANEL_RIGHT_SYNTH), + list(name = "Senator", bitflag = WHITELIST_SYNTHETIC_LEADER, permission = WL_PANEL_RIGHT_OVERSEER) +)) +GLOBAL_LIST_INIT(yaut_flags, list( + list(name = "Yautja", bitflag = WHITELIST_YAUTJA, permission = WL_PANEL_RIGHT_YAUTJA), + list(name = "Legacy Holder", bitflag = WHITELIST_YAUTJA_LEGACY, permission = WL_PANEL_RIGHT_OVERSEER), + list(name = "Council", bitflag = WHITELIST_YAUTJA_COUNCIL, permission = WL_PANEL_RIGHT_YAUTJA), + list(name = "Legacy Council", bitflag = WHITELIST_YAUTJA_COUNCIL_LEGACY, permission = WL_PANEL_RIGHT_YAUTJA), + list(name = "Senator", bitflag = WHITELIST_YAUTJA_LEADER, permission = WL_PANEL_RIGHT_OVERSEER) +)) +GLOBAL_LIST_INIT(misc_flags, list( + list(name = "Senior Enlisted Advisor", bitflag = WHITELIST_MENTOR, permission = WL_PANEL_RIGHT_MENTOR), + list(name = "Working Joe", bitflag = WHITELIST_JOE, permission = WL_PANEL_RIGHT_SYNTH), +)) + +/datum/whitelist_panel/ui_static_data(mob/user) + . = list() + .["co_flags"] = GLOB.co_flags + .["syn_flags"] = GLOB.syn_flags + .["yaut_flags"] = GLOB.yaut_flags + .["misc_flags"] = GLOB.misc_flags + + var/list/datum/view_record/players/players_view = DB_VIEW(/datum/view_record/players, DB_COMP("whitelist_status", DB_NOTEQUAL, "")) + + var/list/whitelisted_players = list() + for(var/datum/view_record/players/whitelistee in players_view) + var/list/current_player = list() + current_player["ckey"] = whitelistee.ckey + var/list/unreadable_list = splittext(whitelistee.whitelist_status, "|") + var/readable_list = unreadable_list.Join(" | ") + current_player["status"] = readable_list + whitelisted_players += list(current_player) + .["whitelisted_players"] = whitelisted_players + +/datum/whitelist_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/mob/user = ui.user + switch(action) + if("go_back") + go_back() + if("select_player") + select_player(user, params["player"]) + return + if("add_player") + select_player(user, TRUE) + return + if("update_number") + new_rights = text2num(params["wl_flag"]) + return + if("update_perms") + var/player_key = params["player"] + var/reason = tgui_input_text(user, "What is the reason for this change?", "Update Reason") + if(!reason) + return + var/datum/entity/player/player = get_player_from_key(player_key) + player.set_whitelist_status(new_rights) + to_chat(user, SPAN_HELPFUL("Whitelists for [player_key] updated.")) + message_admins("Whitelists for [player_key] updated by [key_name(user)]. Reason: '[reason]'.") + log_admin("WHITELISTS: Flags for [player_key] changed from [target_rights] to [new_rights]. Reason: '[reason]'.") + go_back() + update_static_data(user, ui) + return + if("refresh_data") + update_static_data(user, ui) + to_chat(user, SPAN_NOTICE("Whitelist data refreshed.")) + +/datum/whitelist_panel/proc/select_player(mob/user, player_key) + var/target_key = player_key + if(IsAdminAdvancedProcCall()) + return PROC_BLOCKED + if(!target_key) + return FALSE + + if(target_key == TRUE) + var/new_player = tgui_input_text(user, "Enter the new ckey you wish to add. Do not include spaces or special characters.", "New Whitelistee") + if(!new_player) + return FALSE + target_key = new_player + + var/datum/entity/player/player = get_player_from_key(target_key) + var/list/current_player = list() + current_player["ckey"] = target_key + current_player["status"] = player.whitelist_status + + target_rights = player.whitelist_flags + new_rights = player.whitelist_flags + viewed_player = current_player + current_menu = "Update" + user_rights = get_user_rights(user) + return + +/datum/whitelist_panel/proc/go_back() + viewed_player = list() + user_rights = 0 + current_menu = "Panel" + target_rights = 0 + new_rights = 0 + + +#undef WL_PANEL_RIGHT_CO +#undef WL_PANEL_RIGHT_SYNTH +#undef WL_PANEL_RIGHT_YAUTJA +#undef WL_PANEL_RIGHT_MENTOR +#undef WL_PANEL_RIGHT_OVERSEER +#undef WL_PANEL_ALL_RIGHTS diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index ffcea5406856..8113614d9b92 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -179,9 +179,9 @@ GLOBAL_LIST_INIT(maintenance_categories, list( return ARES_ACCESS_CE if(JOB_SYNTH) return ARES_ACCESS_SYNTH - if(card.paygrade in GLOB.wy_paygrades) + if(card.paygrade in GLOB.wy_highcom_paygrades) return ARES_ACCESS_WY_COMMAND - if(card.paygrade in GLOB.highcom_paygrades) + if(card.paygrade in GLOB.uscm_highcom_paygrades) return ARES_ACCESS_HIGH if(card.paygrade in GLOB.co_paygrades) return ARES_ACCESS_CO diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 88b4ab899112..7eccb51c0660 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -572,14 +572,14 @@ var/pressure_dangerlevel = get_danger_level(environment_pressure, current_settings) current_settings = TLV["temperature"] - var/enviroment_temperature = location.return_temperature() - var/temperature_dangerlevel = get_danger_level(enviroment_temperature, current_settings) + var/environment_temperature = location.return_temperature() + var/temperature_dangerlevel = get_danger_level(environment_temperature, current_settings) output += {" Pressure: [environment_pressure]kPa
"} - output += "Temperature: [enviroment_temperature]K ([round(enviroment_temperature - T0C, 0.1)]C)
" + output += "Temperature: [environment_temperature]K ([round(environment_temperature - T0C, 0.1)]C)
" //'Local Status' should report the LOCAL status, damnit. output += "Local Status: " diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index fa6fec094c59..e11fc2d4844d 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -416,10 +416,6 @@ name = "bonesetter" path = /obj/item/tool/surgery/bonesetter -/datum/autolathe/recipe/medilathe/bonegel - name = "bone gel" - path = /obj/item/tool/surgery/bonegel - /datum/autolathe/recipe/medilathe/fixovein name = "FixOVein" path = /obj/item/tool/surgery/FixOVein diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 08437d35a8e3..0686759f0edd 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -284,7 +284,7 @@ return if (usr.stat) return - if ((in_range(src, usr) && istype(src.loc, /turf)) || (ishighersilicon(usr))) + if ((in_range(src, usr) && istype(src.loc, /turf)) || (isSilicon(usr))) usr.set_interaction(src) switch(href_list["op"]) @@ -756,13 +756,10 @@ if(!(wires & WIRE_MOBAVOID)) //usually just bumps, but if avoidance disabled knock over mobs var/mob/M = A if(ismob(M)) - if(isborg(M)) - src.visible_message(SPAN_DANGER("[src] bumps into [M]!")) - else - src.visible_message(SPAN_DANGER("[src] knocks over [M]!")) - M.stop_pulling() - M.apply_effect(8, STUN) - M.apply_effect(5, WEAKEN) + src.visible_message(SPAN_DANGER("[src] knocks over [M]!")) + M.stop_pulling() + M.apply_effect(8, STUN) + M.apply_effect(5, WEAKEN) ..() /obj/structure/machinery/bot/mulebot/alter_health() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 1a440d41bbed..d8919967dd65 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -38,8 +38,14 @@ /// If this camera should have innate EMP-proofing var/emp_proof = FALSE + ///Autonaming + var/autoname = FALSE + var/autonumber = 0 //camera number in area + +GLOBAL_LIST_EMPTY_TYPED(all_cameras, /obj/structure/machinery/camera) /obj/structure/machinery/camera/Initialize(mapload, ...) . = ..() + GLOB.all_cameras += src WireColorToFlag = randomCameraWires() assembly = new(src) assembly.state = 4 @@ -58,7 +64,26 @@ set_pixel_location() update_icon() + //This camera automatically sets it's name to whatever the area that it's in is called. + if(autoname) + autonumber = 1 + var/area/my_area = get_area(src) + if(my_area) + for(var/obj/structure/machinery/camera/autoname/current_camera in GLOB.machines) + if(current_camera == src) + continue + var/area/current_camera_area = get_area(current_camera) + if(current_camera_area.type != my_area.type) + continue + + if(!current_camera.autonumber) + continue + + autonumber = max(autonumber, current_camera.autonumber + 1) + c_tag = "[my_area.name] #[autonumber]" + /obj/structure/machinery/camera/Destroy() + GLOB.all_cameras -= src . = ..() QDEL_NULL(assembly) @@ -89,7 +114,7 @@ var/list/previous_network = network network = list() - GLOB.cameranet.removeCamera(src) + GLOB.all_cameras -= src stat |= EMPED update_icon() set_light(0) @@ -103,7 +128,7 @@ update_icon() cancelCameraAlarm() if(can_use()) - GLOB.cameranet.addCamera(src) + GLOB.all_cameras += src /obj/structure/machinery/camera/ex_act(severity) if(src.invuln) @@ -114,7 +139,6 @@ /obj/structure/machinery/camera/proc/setViewRange(num = 7) src.view_range = num - GLOB.cameranet.updateVisibility(src, 0) /obj/structure/machinery/camera/attack_hand(mob/living/carbon/human/user as mob) @@ -176,16 +200,6 @@ if (S.current == src) to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") show_browser(O, info, itemname, itemname) - else if (istype(W, /obj/item/device/camera_bug)) - if (!src.can_use()) - to_chat(user, SPAN_NOTICE(" Camera non-functional")) - return - if (src.bugged) - to_chat(user, SPAN_NOTICE(" Camera bug removed.")) - src.bugged = 0 - else - to_chat(user, SPAN_NOTICE(" Camera bugged.")) - src.bugged = 1 else ..() return @@ -216,15 +230,10 @@ to_chat(O, "The screen bursts into static.") /obj/structure/machinery/camera/proc/triggerCameraAlarm() - alarm_on = 1 - for(var/mob/living/silicon/S in GLOB.mob_list) - S.triggerAlarm("Camera", get_area(src), list(src), src) - + alarm_on = TRUE /obj/structure/machinery/camera/proc/cancelCameraAlarm() - alarm_on = 0 - for(var/mob/living/silicon/S in GLOB.mob_list) - S.cancelAlarm("Camera", get_area(src), src) + alarm_on = FALSE /obj/structure/machinery/camera/proc/can_use() if(!status) diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index 5a0a41fdc9bf..6a869f443d12 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -23,7 +23,6 @@ // If not detecting with motion camera... /obj/structure/machinery/camera/proc/newTarget(mob/target) - if (isAI(target)) return 0 if (detectTime == 0) detectTime = world.time // start the clock if (!(target in motionTargets)) @@ -39,9 +38,6 @@ /obj/structure/machinery/camera/proc/cancelAlarm() if (!status || (stat & NOPOWER)) return 0 - if (detectTime == -1) - for (var/mob/living/silicon/aiPlayer in GLOB.ai_mob_list) - aiPlayer.cancelAlarm("Motion", get_area(src), src) detectTime = 0 return 1 @@ -49,7 +45,5 @@ if (!status || (stat & NOPOWER)) return 0 if (!detectTime) return 0 - for (var/mob/living/silicon/aiPlayer in GLOB.ai_mob_list) - aiPlayer.triggerAlarm("Motion", get_area(src), list(src), src) detectTime = -1 return 1 diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index 1f680ad76712..103e3f709afe 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -70,21 +70,7 @@ // AUTONAME /obj/structure/machinery/camera/autoname - var/number = 0 //camera number in area - -//This camera type automatically sets it's name to whatever the area that it's in is called. -/obj/structure/machinery/camera/autoname/Initialize(mapload, ...) - . = ..() - number = 1 - var/area/A = get_area(src) - if(A) - for(var/obj/structure/machinery/camera/autoname/C in GLOB.machines) - if(C == src) continue - var/area/CA = get_area(C) - if(CA.type == A.type) - if(C.number) - number = max(number, C.number+1) - c_tag = "[A.name] #[number]" + autoname = TRUE //cameras installed inside the dropships, accessible via both cockpit monitor and Almayer camera computers /obj/structure/machinery/camera/autoname/almayer/dropship_one diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm deleted file mode 100644 index 190d51d3f7b8..000000000000 --- a/code/game/machinery/camera/tracking.dm +++ /dev/null @@ -1,247 +0,0 @@ -/mob/living/silicon/ai/var/max_locations = 10 -/mob/living/silicon/ai/var/stored_locations[0] - -/mob/living/silicon/ai/proc/InvalidTurf(turf/T as turf) - if(!T) - return 1 - if(should_block_game_interaction(T)) - return 1 - if(T.z > 6) - return 1 - return 0 - -/mob/living/silicon/ai/proc/get_camera_list() - - if(src.stat == 2) - return - - var/list/L = list() - for (var/obj/structure/machinery/camera/C in GLOB.cameranet.cameras) - L.Add(C) - - camera_sort(L) - - var/list/T = list() - T["Cancel"] = "Cancel" - for (var/obj/structure/machinery/camera/C in L) - T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C - - track = new() - track.cameras = T - return T - - -/mob/living/silicon/ai/proc/ai_camera_list(camera in get_camera_list()) - set category = "AI Commands" - set name = "Show Camera List" - - if(src.stat == 2) - to_chat(src, "You can't list the cameras because you are dead!") - return - - if (!camera || camera == "Cancel") - return 0 - - var/obj/structure/machinery/camera/C = track.cameras[camera] - src.eyeobj.setLoc(C) - - return - -/mob/living/silicon/ai/proc/ai_store_location(newloc as text) - set category = "AI Commands" - set name = "Store Camera Location" - set desc = "Stores your current camera location by the given name" - - newloc = copytext(sanitize(loc), 1, MAX_MESSAGE_LEN) - if(!newloc) - to_chat(src, SPAN_DANGER("Must supply a location name")) - return - - if(stored_locations.len >= max_locations) - to_chat(src, SPAN_DANGER("Cannot store additional locations. Remove one first")) - return - - if(newloc in stored_locations) - to_chat(src, SPAN_DANGER("There is already a stored location by this name")) - return - - var/L = src.eyeobj.getLoc() - if (InvalidTurf(get_turf(L))) - to_chat(src, SPAN_DANGER("Unable to store this location")) - return - - stored_locations[newloc] = L - to_chat(src, "Location '[newloc]' stored") - -/mob/living/silicon/ai/proc/sorted_stored_locations() - return sortList(stored_locations) - -/mob/living/silicon/ai/proc/ai_goto_location(loc in sorted_stored_locations()) - set category = "AI Commands" - set name = "Goto Camera Location" - set desc = "Returns to the selected camera location" - - if (!(loc in stored_locations)) - to_chat(src, SPAN_DANGER("Location [loc] not found")) - return - - var/L = stored_locations[loc] - src.eyeobj.setLoc(L) - -/mob/living/silicon/ai/proc/ai_remove_location(loc in sorted_stored_locations()) - set category = "AI Commands" - set name = "Delete Camera Location" - set desc = "Deletes the selected camera location" - - if (!(loc in stored_locations)) - to_chat(src, SPAN_DANGER("Location [loc] not found")) - return - - stored_locations.Remove(loc) - to_chat(src, "Location [loc] removed") - -// Used to allow the AI is write in mob names/camera name from the CMD line. -/datum/trackable - var/list/names = list() - var/list/namecounts = list() - var/list/humans = list() - var/list/others = list() - var/list/cameras = list() - -/mob/living/silicon/ai/proc/trackable_mobs() - - if(usr.stat == 2) - return list() - - var/datum/trackable/TB = new() - for(var/i in GLOB.living_mob_list) - var/mob/living/M = i - // Easy checks first. - // Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this. - if(InvalidTurf(get_turf(M))) - continue - if(M == usr) - continue - if(M.invisibility)//cloaked - continue - - // Human check - var/human = 0 - if(istype(M, /mob/living/carbon/human)) - human = 1 - var/mob/living/carbon/human/H = M - //Cameras can't track people wearing an agent card or a ninja hood. - if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/card/id/syndicate)) - continue - - // Now, are they viewable by a camera? (This is last because it's the most intensive check) - if(!near_camera(M)) - continue - - var/name = M.name - if (name in TB.names) - TB.namecounts[name]++ - name = text("[] ([])", name, TB.namecounts[name]) - else - TB.names.Add(name) - TB.namecounts[name] = 1 - if(human) - TB.humans[name] = M - else - TB.others[name] = M - - var/list/targets = sortList(TB.humans) + sortList(TB.others) - src.track = TB - return targets - -/mob/living/silicon/ai/proc/ai_camera_track(target_name in trackable_mobs()) - set category = "AI Commands" - set name = "Track With Camera" - set desc = "Select who you would like to track." - - if(src.stat == 2) - to_chat(src, "You can't track with camera because you are dead!") - return - if(!target_name) - src.cameraFollow = null - - var/mob/target = (isnull(track.humans[target_name]) ? track.others[target_name] : track.humans[target_name]) - src.track = null - ai_actual_track(target) - -/mob/living/silicon/ai/proc/ai_cancel_tracking(forced = 0) - if(!cameraFollow) - return - - to_chat(src, "Follow camera mode [forced ? "terminated" : "ended"].") - cameraFollow = null - -/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob) - if(!istype(target)) return - var/mob/living/silicon/ai/U = usr - - U.cameraFollow = target - //U << text("Now tracking [] on camera.", target.name) - //if (U.interactee == null) - // U.set_interaction(U) - to_chat(U, "Now tracking [target.name] on camera.") - - spawn (0) - while (U.cameraFollow == target) - if (U.cameraFollow == null) - return - if (istype(target, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/card/id/syndicate)) - U.ai_cancel_tracking(1) - return - - if (!near_camera(target)) - to_chat(U, "Target is not near any active cameras.") - sleep(100) - continue - - if(U.eyeobj) - U.eyeobj.setLoc(get_turf(target), 0) - else - view_core() - return - sleep(10) - -/proc/near_camera(mob/living/M) - if (!isturf(M.loc)) - return 0 - if(isrobot(M)) - var/mob/living/silicon/robot/R = M - if(!(R.camera && R.camera.can_use()) && !GLOB.cameranet.checkCameraVis(M)) - return 0 - else if(!GLOB.cameranet.checkCameraVis(M)) - return 0 - return 1 - -/obj/structure/machinery/camera/attack_remote(mob/living/silicon/ai/user as mob) - if (!istype(user)) - return - if (!src.can_use()) - return - user.eyeobj.setLoc(get_turf(src)) - - -/mob/living/silicon/ai/attack_remote(mob/user as mob) - ai_camera_list() - -/proc/camera_sort(list/L) // TODO: replace this bubblesort with a mergesort - spookydonut - var/obj/structure/machinery/camera/a - var/obj/structure/machinery/camera/b - - for (var/i = L.len, i > 0, i--) - for (var/j = 1 to i - 1) - a = L[j] - b = L[j + 1] - if (a.c_tag_order != b.c_tag_order) - if (a.c_tag_order > b.c_tag_order) - L.Swap(j, j + 1) - else - if (sorttext(a.c_tag, b.c_tag) < 0) - L.Swap(j, j + 1) - return L diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 55df45c70ccc..58b3d8ea5e64 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -77,9 +77,6 @@ to_chat(user, "It's a holotable! There are no bolts!") return - if(isborg(user)) - return - ..() /obj/structure/surface/table/holotable/wood diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm deleted file mode 100644 index bb6972a58ac3..000000000000 --- a/code/game/machinery/computer/ai_core.dm +++ /dev/null @@ -1,256 +0,0 @@ -/obj/structure/AIcore - density = TRUE - anchored = FALSE - name = "AI core" - icon = 'icons/obj/structures/machinery/AI.dmi' - icon_state = "hydra-off" - var/state = 0 - var/obj/item/circuitboard/aicore/circuit = null - var/obj/item/device/mmi/brain = null - - -/obj/structure/AIcore/attackby(obj/item/P as obj, mob/user as mob) - switch(state) - if(0) - if(HAS_TRAIT(P, TRAIT_TOOL_WRENCH)) - playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - to_chat(user, SPAN_NOTICE(" You wrench the frame into place.")) - anchored = TRUE - state = 1 - if(iswelder(P)) - var/obj/item/tool/weldingtool/WT = P - if(!HAS_TRAIT(P, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return - if(!WT.isOn()) - to_chat(user, "The welder must be on for this task.") - return - playsound(loc, 'sound/items/Welder.ogg', 25, 1) - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - if(!src || !WT.remove_fuel(0, user)) return - to_chat(user, SPAN_NOTICE(" You deconstruct the frame.")) - new /obj/item/stack/sheet/plasteel( loc, 4) - qdel(src) - if(1) - if(HAS_TRAIT(P, TRAIT_TOOL_WRENCH)) - playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) - if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - to_chat(user, SPAN_NOTICE(" You unfasten the frame.")) - anchored = FALSE - state = 0 - if(istype(P, /obj/item/circuitboard/aicore) && !circuit) - if(user.drop_held_item()) - playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You place the circuit board inside the frame.")) - icon_state = "1" - circuit = P - P.forceMove(src) - if(HAS_TRAIT(P, TRAIT_TOOL_SCREWDRIVER) && circuit) - playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You screw the circuit board into place.")) - state = 2 - icon_state = "2" - if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR) && circuit) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the circuit board.")) - state = 1 - icon_state = "0" - circuit.forceMove(loc) - circuit = null - if(2) - if(HAS_TRAIT(P, TRAIT_TOOL_SCREWDRIVER) && circuit) - playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You unfasten the circuit board.")) - state = 1 - icon_state = "1" - if(istype(P, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = P - if (C.get_amount() < 5) - to_chat(user, SPAN_WARNING("You need five coils of wire to add them to the frame.")) - return - to_chat(user, SPAN_NOTICE("You start to add cables to the frame.")) - playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) - if (do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD) && state == 2) - if (C.use(5)) - state = 3 - icon_state = "3" - to_chat(user, SPAN_NOTICE("You add cables to the frame.")) - return - if(3) - if(HAS_TRAIT(P, TRAIT_TOOL_WIRECUTTERS)) - if (brain) - to_chat(user, "Get that brain out of there first") - else - playsound(loc, 'sound/items/Wirecutter.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the cables.")) - state = 2 - icon_state = "2" - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 - - if(istype(P, /obj/item/stack/sheet/glass/reinforced)) - var/obj/item/stack/sheet/glass/reinforced/RG = P - if (RG.get_amount() < 2) - to_chat(user, SPAN_WARNING("You need two sheets of glass to put in the glass panel.")) - return - to_chat(user, SPAN_NOTICE("You start to put in the glass panel.")) - playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) - if (do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD) && state == 3) - if(RG.use(2)) - to_chat(user, SPAN_NOTICE("You put in the glass panel.")) - state = 4 - icon_state = "4" - - if(istype(P, /obj/item/device/mmi)) - var/obj/item/device/mmi/mmi - if(!mmi.brainmob) - to_chat(user, SPAN_DANGER("Sticking an empty [mmi] into the frame would sort of defeat the purpose.")) - return - if(mmi.brainmob.stat == 2) - to_chat(user, SPAN_DANGER("Sticking a dead [mmi] into the frame would sort of defeat the purpose.")) - return - - if(jobban_isbanned(mmi.brainmob, "AI")) - to_chat(user, SPAN_DANGER("This [mmi] does not seem to fit.")) - return - - if(user.drop_held_item()) - mmi.forceMove(src) - brain = mmi - to_chat(usr, "Added [mmi].") - icon_state = "3b" - - if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR) && brain) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the brain.")) - brain.forceMove(loc) - brain = null - icon_state = "3" - - if(4) - if(HAS_TRAIT(P, TRAIT_TOOL_CROWBAR)) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You remove the glass panel.")) - state = 3 - if (brain) - icon_state = "3b" - else - icon_state = "3" - new /obj/item/stack/sheet/glass/reinforced( loc, 2 ) - return - - if(HAS_TRAIT(P, TRAIT_TOOL_SCREWDRIVER)) - playsound(loc, 'sound/items/Screwdriver.ogg', 25, 1) - to_chat(user, SPAN_NOTICE(" You connect the monitor.")) - var/mob/living/silicon/ai/A = new /mob/living/silicon/ai (loc, brain) - if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created - A.rename_self("ai", 1) - qdel(src) - -/obj/structure/AIcore/deactivated - name = "Inactive AI" - icon = 'icons/obj/structures/machinery/AI.dmi' - icon_state = "hydra-off" - anchored = TRUE - state = 20//So it doesn't interact based on the above. Not really necessary. - -/obj/structure/AIcore/deactivated/attackby(obj/item/device/aicard/A as obj, mob/user as mob) - if(istype(A, /obj/item/device/aicard))//Is it? - A.transfer_ai("INACTIVE","AICARD",src,user) - return - -/* -This is a good place for AI-related object verbs so I'm sticking it here. -If adding stuff to this, don't forget that an AI need to cancel_camera() whenever it physically moves to a different location. -That prevents a few funky behaviors. -*/ -//What operation to perform based on target, what ineraction to perform based on object used, target itself, user. The object used is src and calls this proc. -/obj/item/proc/transfer_ai(choice as text, interaction as text, target, mob/U as mob) - if(!src:flush) - switch(choice) - if("AICORE")//AI mob. - var/mob/living/silicon/ai/T = target - switch(interaction) - if("AICARD") - var/obj/item/device/aicard/C = src - if(C.contents.len)//If there is an AI on card. - to_chat(U, SPAN_WARNING("Transfer failed: \black Existing AI found on this terminal. Remove existing AI to install a new one.")) - else - new /obj/structure/AIcore/deactivated(T.loc)//Spawns a deactivated terminal at AI location. - T.aiRestorePowerRoutine = 0//So the AI initially has power. - T.control_disabled = 1//Can't control things remotely if you're stuck in a card! - T.forceMove(C)//Throw AI into the card. - C.name = "inteliCard - [T.name]" - if (T.stat == 2) - C.icon_state = "aicard-404" - else - C.icon_state = "aicard-full" - T.cancel_camera() - to_chat(T, "You have been downloaded to a mobile storage device. Remote device connection severed.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [T.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.")) - - if("INACTIVE")//Inactive AI object. - var/obj/structure/AIcore/deactivated/T = target - switch(interaction) - if("AICARD") - var/obj/item/device/aicard/C = src - var/mob/living/silicon/ai/A = locate() in C//I love locate(). Best proc ever. - if(A)//If AI exists on the card. Else nothing since both are empty. - A.control_disabled = 0 - A.aiRadio.disabledAi = 0 - A.forceMove(T.loc)//To replace the terminal. - C.icon_state = "aicard" - C.name = "inteliCard" - C.overlays.Cut() - A.cancel_camera() - to_chat(A, "You have been uploaded to a stationary terminal. Remote device connection restored.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed.")) - qdel(T) - if("AIFIXER")//AI Fixer terminal. - var/obj/structure/machinery/computer/aifixer/T = target - switch(interaction) - if("AICARD") - var/obj/item/device/aicard/C = src - if(!T.contents.len) - if (!C.contents.len) - to_chat(U, "No AI to copy over!")//Well duh - else for(var/mob/living/silicon/ai/A in C) - C.icon_state = "aicard" - C.name = "inteliCard" - C.overlays.Cut() - A.forceMove(T) - T.occupant = A - A.control_disabled = 1 - if (A.stat == 2) - T.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - else - T.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - T.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") - A.cancel_camera() - to_chat(A, "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.")) - else - if(!C.contents.len && T.occupant && !T.active) - C.name = "inteliCard - [T.occupant.name]" - T.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") - if (T.occupant.stat == 2) - C.icon_state = "aicard-404" - T.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - else - C.icon_state = "aicard-full" - T.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - to_chat(T.occupant, "You have been downloaded to a mobile storage device. Still no remote access.") - to_chat(U, SPAN_NOTICE(" Transfer successful: \black [T.occupant.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.")) - T.occupant.forceMove(C) - T.occupant.cancel_camera() - T.occupant = null - else if (C.contents.len) - to_chat(U, SPAN_WARNING("ERROR: \black Artificial intelligence detected on terminal.")) - else if (T.active) - to_chat(U, SPAN_WARNING("ERROR: \black Reconstruction in progress.")) - else if (!T.occupant) - to_chat(U, SPAN_WARNING("ERROR: \black Unable to locate artificial intelligence.")) - else - to_chat(U, SPAN_WARNING("ERROR: \black AI flush is in progress, cannot execute transfer protocol.")) - return diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm deleted file mode 100644 index 3a809620d7e6..000000000000 --- a/code/game/machinery/computer/aifixer.dm +++ /dev/null @@ -1,103 +0,0 @@ -/obj/structure/machinery/computer/aifixer - name = "AI System Integrity Restorer" - icon = 'icons/obj/structures/machinery/computer.dmi' - icon_state = "ai-fixer" - circuit = /obj/item/circuitboard/computer/aifixer - req_one_access = list(ACCESS_CIVILIAN_ENGINEERING) - var/mob/living/silicon/ai/occupant = null - var/active = 0 - processing = TRUE - -/obj/structure/machinery/computer/aifixer/New() - ..() - src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") - - -/obj/structure/machinery/computer/aifixer/attackby(I as obj, user as mob) - if(istype(I, /obj/item/device/aicard)) - if(inoperable()) - to_chat(user, "This terminal isn't functioning right now, get it working!") - return - I:transfer_ai("AIFIXER","AICARD",src,user) - - ..() - return - -/obj/structure/machinery/computer/aifixer/attack_remote(mob/user as mob) - return attack_hand(user) - -/obj/structure/machinery/computer/aifixer/attack_hand(mob/user as mob) - if(..()) - return - - user.set_interaction(src) - var/dat - - if (src.occupant) - dat += "Stored AI: [src.occupant.name]
System integrity: [(src.occupant.health+100)/2]%
" - - if (src.occupant.stat == 2) - dat += "AI nonfunctional" - else - dat += "AI functional" - if (!src.active) - dat += {"

Begin Reconstruction"} - else - dat += "

Reconstruction in process, please wait.
" - dat += {" Close"} - - show_browser(user, dat, "AI System Integrity Restorer", "computer", "size=400x500") - return - -/obj/structure/machinery/computer/aifixer/process() - if(..()) - src.updateDialog() - return - -/obj/structure/machinery/computer/aifixer/Topic(href, href_list) - if(..()) - return - if (href_list["fix"]) - src.active = 1 - src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-on") - while (src.occupant.health < 100) - src.occupant.apply_damage(-1, OXY) - src.occupant.apply_damage(-1, BURN) - src.occupant.apply_damage(-1, TOX) - src.occupant.apply_damage(-1, BRUTE) - src.occupant.updatehealth() - if (src.occupant.health >= 0 && src.occupant.stat == DEAD) - src.occupant.set_stat(CONSCIOUS) - GLOB.dead_mob_list -= src.occupant - GLOB.alive_mob_list += src.occupant - occupant.reload_fullscreens() - src.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - src.occupant.add_ai_verbs() - src.updateUsrDialog() - sleep(10) - src.active = 0 - src.overlays -= image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-on") - - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - - -/obj/structure/machinery/computer/aifixer/update_icon() - ..() - // Broken / Unpowered - if(inoperable()) - overlays.Cut() - - // Working / Powered - else - if (occupant) - switch (occupant.stat) - if (0) - overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-full") - if (2) - overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-404") - else - overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") diff --git a/code/game/machinery/computer/almayer_control.dm b/code/game/machinery/computer/almayer_control.dm index e9b969e023b8..1f3338e15bf7 100644 --- a/code/game/machinery/computer/almayer_control.dm +++ b/code/game/machinery/computer/almayer_control.dm @@ -110,7 +110,7 @@ return switch(action) if("award") - print_medal(usr, src) + open_medal_panel(usr, src) . = TRUE // evac stuff start \\ @@ -193,6 +193,19 @@ . = TRUE if("ship_announce") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(!COOLDOWN_FINISHED(src, cooldown_message)) to_chat(usr, SPAN_WARNING("Please allow at least [COOLDOWN_TIMELEFT(src, cooldown_message)/10] second\s to pass between announcements.")) return FALSE @@ -201,12 +214,8 @@ return FALSE var/signed = null - if(ishuman(usr)) - var/mob/living/carbon/human/human_user = usr - var/obj/item/card/id/id = human_user.wear_id - if(istype(id)) - var/paygrade = get_paygrades(id.paygrade, FALSE, human_user.gender) - signed = "[paygrade] [id.registered_name]" + var/paygrade = get_paygrades(idcard.paygrade, FALSE, human_user.gender) + signed = "[paygrade] [idcard.registered_name]" COOLDOWN_START(src, cooldown_message, COOLDOWN_COMM_MESSAGE) shipwide_ai_announcement(input, COMMAND_SHIP_ANNOUNCE, signature = signed) diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index 1a00e194b5eb..f36719a8453e 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -13,58 +13,35 @@ var/list/concurrent_users = list() // Stuff needed to render the map - var/map_name - var/atom/movable/screen/map_view/cam_screen - var/atom/movable/screen/background/cam_background + var/camera_map_name var/colony_camera_mapload = TRUE var/admin_console = FALSE - /// All the plane masters that need to be applied. - var/list/cam_plane_masters - /obj/structure/machinery/computer/cameras/Initialize(mapload) . = ..() - // Map name has to start and end with an A-Z character, - // and definitely NOT with a square bracket or even a number. - // I wasted 6 hours on this. :agony: - map_name = "camera_console_[REF(src)]_map" + + RegisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED, PROC_REF(camera_mapname_update)) + + // camera setup + AddComponent(/datum/component/camera_manager) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) if(colony_camera_mapload && mapload && is_ground_level(z)) network = list(CAMERA_NET_COLONY) - cam_plane_masters = list() - for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) - var/atom/movable/screen/plane_master/instance = new plane() - instance.assigned_map = map_name - instance.del_on_map_removal = FALSE - if(instance.blend_mode_override) - instance.blend_mode = instance.blend_mode_override - instance.screen_loc = "[map_name]:CENTER" - cam_plane_masters += instance - - // Initialize map objects - cam_screen = new - cam_screen.icon = null - cam_screen.name = "screen" - cam_screen.assigned_map = map_name - cam_screen.del_on_map_removal = FALSE - cam_screen.screen_loc = "[map_name]:1,1" - cam_background = new - cam_background.assigned_map = map_name - cam_background.del_on_map_removal = FALSE /obj/structure/machinery/computer/cameras/Destroy() SStgui.close_uis(src) QDEL_NULL(current) - QDEL_NULL(cam_screen) - qdel(cam_screen) - QDEL_NULL(cam_background) - qdel(cam_background) + UnregisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED) last_camera_turf = null concurrent_users = null return ..() +/obj/structure/machinery/computer/cameras/proc/camera_mapname_update(source, value) + camera_map_name = value + /obj/structure/machinery/computer/cameras/attack_remote(mob/user as mob) return attack_hand(user) @@ -91,8 +68,7 @@ // Update UI ui = SStgui.try_update_ui(user, src, ui) - // Update the camera, showing static if necessary and updating data if the location has moved. - update_active_camera_screen() + SEND_SIGNAL(src, COMSIG_CAMERA_REFRESH) if(!ui) var/user_ref = WEAKREF(user) @@ -104,11 +80,9 @@ // Turn on the console if(length(concurrent_users) == 1 && is_living) update_use_power(USE_POWER_ACTIVE) - // Register map objects - user.client.register_map_obj(cam_screen) - user.client.register_map_obj(cam_background) - for(var/plane in cam_plane_masters) - user.client.register_map_obj(plane) + + SEND_SIGNAL(src, COMSIG_CAMERA_REGISTER_UI, user) + // Open UI ui = new(user, src, "CameraConsole", name) ui.open() @@ -126,7 +100,7 @@ /obj/structure/machinery/computer/cameras/ui_static_data() var/list/data = list() - data["mapRef"] = map_name + data["mapRef"] = camera_map_name var/list/cameras = get_available_cameras() data["cameras"] = list() for(var/i in cameras) @@ -160,47 +134,10 @@ if(!selected_camera) return TRUE - update_active_camera_screen() + SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, selected_camera, selected_camera.view_range, selected_camera.view_range) return TRUE -/obj/structure/machinery/computer/cameras/proc/update_active_camera_screen() - // Show static if can't use the camera - if(!current?.can_use()) - show_camera_static() - return - - // Is this camera located in or attached to a living thing, Vehicle or helmet? If so, assume the camera's loc is the living (or non) thing. - var/cam_location = current - if(isliving(current.loc) || isVehicle(current.loc)) - cam_location = current.loc - else if(istype(current.loc, /obj/item/clothing/head/helmet/marine)) - var/obj/item/clothing/head/helmet/marine/helmet = current.loc - cam_location = helmet.loc - - // If we're not forcing an update for some reason and the cameras are in the same location, - // we don't need to update anything. - // Most security cameras will end here as they're not moving. - var/newturf = get_turf(cam_location) - if(last_camera_turf == newturf) - return - - // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. - last_camera_turf = get_turf(cam_location) - - var/list/visible_things = current.isXRay() ? range(current.view_range, cam_location) : view(current.view_range, cam_location) - - var/list/visible_turfs = list() - for(var/turf/visible_turf in visible_things) - visible_turfs += visible_turf - - var/list/bbox = get_bbox_of_atoms(visible_turfs) - var/size_x = bbox[3] - bbox[1] + 1 - var/size_y = bbox[4] - bbox[2] + 1 - - cam_screen.vis_contents = visible_turfs - cam_background.icon_state = "clear" - cam_background.fill_rect(1, 1, size_x, size_y) /obj/structure/machinery/computer/cameras/ui_close(mob/user) var/user_ref = WEAKREF(user) @@ -208,25 +145,20 @@ // Living creature or not, we remove you anyway. concurrent_users -= user_ref // Unregister map objects - user.client.clear_map(map_name) + SEND_SIGNAL(src, COMSIG_CAMERA_UNREGISTER_UI, user) // Turn off the console if(length(concurrent_users) == 0 && is_living) current = null + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) last_camera_turf = null if(use_power) update_use_power(USE_POWER_IDLE) user.unset_interaction() -/obj/structure/machinery/computer/cameras/proc/show_camera_static() - cam_screen.vis_contents.Cut() - last_camera_turf = null - cam_background.icon_state = "scanline2" - cam_background.fill_rect(1, 1, DEFAULT_MAP_SIZE, DEFAULT_MAP_SIZE) - // Returns the list of cameras accessible from this computer /obj/structure/machinery/computer/cameras/proc/get_available_cameras() var/list/D = list() - for(var/obj/structure/machinery/camera/C in GLOB.cameranet.cameras) + for(var/obj/structure/machinery/camera/C in GLOB.all_cameras) if(!C.network) stack_trace("Camera in a cameranet has no camera network") continue diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index bcc4c4ac3ec8..beed3610b53f 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -113,6 +113,19 @@ if("announce") if(authenticated == 2) + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(usr.client.prefs.muted & MUTE_IC) to_chat(usr, SPAN_DANGER("You cannot send Announcements (muted).")) return @@ -130,7 +143,7 @@ cooldown_message = world.time if("award") - print_medal(usr, src) + open_medal_panel(usr, src) if("evacuation_start") if(state == STATE_EVACUATION) diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm index db376c40029c..dce026f4ce33 100644 --- a/code/game/machinery/computer/dropship_weapons.dm +++ b/code/game/machinery/computer/dropship_weapons.dm @@ -33,6 +33,8 @@ var/camera_width = 11 var/camera_height = 11 var/camera_map_name + ///Tracks equipment with a camera that is deployed and we are viewing + var/obj/structure/dropship_equipment/camera_area_equipment = null var/registered = FALSE @@ -62,17 +64,20 @@ /obj/structure/machinery/computer/dropship_weapons/attack_hand(mob/user) if(..()) return - if(!allowed(user)) + if(!allowed(user)) + // TODO: Restore cas simulator + to_chat(user, SPAN_WARNING("Weapons modification access denied.")) + return TRUE // everyone can access the simulator, requested feature. - to_chat(user, SPAN_WARNING("Weapons modification access denied, attempting to launch simulation.")) + /*to_chat(user, SPAN_WARNING("Weapons modification access denied, attempting to launch simulation.")) if(!selected_firemission) to_chat(user, SPAN_WARNING("Firemission must be selected before attempting to run the simulation")) - return + return TRUE tgui_interact(user) - return 1 + return FALSE*/ user.set_interaction(src) ui_interact(user) @@ -100,7 +105,7 @@ /obj/structure/machinery/computer/dropship_weapons/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 0) var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) - if (!istype(dropship)) + if(!istype(dropship)) return var/screen_mode = 0 @@ -129,11 +134,6 @@ if(screen_mode != 3 || !selected_firemission || dropship.mode != SHUTTLE_CALL) update_location(user, null) - ui_data(user) - if(!tacmap.map_holder) - var/level = SSmapping.levels_by_trait(tacmap.targeted_ztrait) - tacmap.map_holder = SSminimaps.fetch_tacmap_datum(level[1], tacmap.allowed_flags) - user.client.register_map_obj(tacmap.map_holder.map) tgui_interact(user) /obj/structure/machinery/computer/dropship_weapons/tgui_interact(mob/user, datum/tgui/ui) @@ -141,10 +141,15 @@ var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) RegisterSignal(dropship, COMSIG_DROPSHIP_ADD_EQUIPMENT, PROC_REF(equipment_update)) RegisterSignal(dropship, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, PROC_REF(equipment_update)) - registered=TRUE + registered = TRUE + + if(!tacmap.map_holder) + var/level = SSmapping.levels_by_trait(tacmap.targeted_ztrait) + tacmap.map_holder = SSminimaps.fetch_tacmap_datum(level[1], tacmap.allowed_flags) ui = SStgui.try_update_ui(user, src, ui) - if (!ui) + if(!ui) + user.client.register_map_obj(tacmap.map_holder.map) SEND_SIGNAL(src, COMSIG_CAMERA_REGISTER_UI, user) ui = new(user, src, "DropshipWeaponsConsole", "Weapons Console") ui.open() @@ -255,7 +260,7 @@ switch(action) if("button_push") playsound(src, get_sfx("terminal_button"), 25, FALSE) - return TRUE + return FALSE if("select_equipment") var/base_tag = params["equipment_id"] @@ -303,12 +308,13 @@ var/mount_point = equipment.ship_base.attach_id if(mount_point != equipment_tag) continue - if (istype(equipment, /obj/structure/dropship_equipment/sentry_holder)) + if(istype(equipment, /obj/structure/dropship_equipment/sentry_holder)) var/obj/structure/dropship_equipment/sentry_holder/sentry = equipment var/obj/structure/machinery/defenses/sentry/defense = sentry.deployed_turret - if (defense.has_camera) + if(defense.has_camera) defense.set_range() var/datum/shape/rectangle/current_bb = defense.range_bounds + camera_area_equipment = sentry SEND_SIGNAL(src, COMSIG_CAMERA_SET_AREA, current_bb.center_x, current_bb.center_y, defense.loc.z, current_bb.width, current_bb.height) return TRUE @@ -329,6 +335,7 @@ if(medevac.linked_stretcher) SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, medevac.linked_stretcher, 5, 5) return TRUE + if("fulton-target") var/equipment_tag = params["equipment_id"] for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) @@ -340,6 +347,7 @@ var/target_ref = params["ref"] fulton.automate_interact(user, target_ref) return TRUE + if("fire-weapon") var/weapon_tag = params["eqp_tag"] var/obj/structure/dropship_equipment/weapon/DEW = get_weapon(weapon_tag) @@ -347,19 +355,23 @@ return FALSE var/datum/cas_signal/sig = get_cas_signal(camera_target_id) - if(!sig) return FALSE selected_equipment = DEW - ui_open_fire(user, shuttle, camera_target_id) + if(ui_open_fire(user, shuttle, camera_target_id)) + if(firemission_envelope) + firemission_envelope.untrack_object() return TRUE + if("deploy-equipment") var/equipment_tag = params["equipment_id"] for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) var/mount_point = equipment.ship_base.attach_id if(mount_point != equipment_tag) continue + if(camera_area_equipment == equipment) + set_camera_target(null) equipment.equipment_interact(user) return TRUE @@ -384,13 +396,8 @@ var/x_offset_value = params["x_offset_value"] var/y_offset_value = params["y_offset_value"] - var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] - var/datum/cas_signal/cas_sig - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(LT.target_id == target_id && LT.valid_signal()) - cas_sig = LT - break + camera_target_id = target_id + var/datum/cas_signal/cas_sig = get_cas_signal(camera_target_id, valid_only = TRUE) // we don't want rapid offset changes to trigger admin warnings // and block the user from accessing TGUI // we change the minute_count @@ -408,12 +415,14 @@ current.y + dy, current.z) - firemission_envelope.change_current_loc(new_target) - + camera_area_equipment = null + firemission_envelope.change_current_loc(new_target, cas_sig) return TRUE + if("nvg-enable") SEND_SIGNAL(src, COMSIG_CAMERA_SET_NVG, 5, "#7aff7a") return TRUE + if("nvg-disable") SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR_NVG) return TRUE @@ -447,24 +456,28 @@ /obj/structure/machinery/computer/dropship_weapons/proc/get_weapon(eqp_tag) var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) - for(var/obj/structure/dropship_equipment/equipment in dropship.equipments) - if(istype(equipment, /obj/structure/dropship_equipment/weapon)) - //is weapon - if(selected_equipment == equipment) - return equipment + var/obj/structure/dropship_equipment/equipment = dropship.equipments[eqp_tag] + if(istype(equipment, /obj/structure/dropship_equipment/weapon)) + //is weapon + return equipment return -/obj/structure/machinery/computer/dropship_weapons/proc/get_cas_signal(target_ref) +/obj/structure/machinery/computer/dropship_weapons/proc/get_cas_signal(target_ref, valid_only = FALSE) if(!target_ref) return var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] for(var/datum/cas_signal/sig in cas_group.cas_signals) if(sig.target_id == target_ref) + if(valid_only && !sig.valid_signal()) + continue return sig - /obj/structure/machinery/computer/dropship_weapons/proc/set_camera_target(target_ref) + camera_area_equipment = null + if(firemission_envelope) + firemission_envelope.untrack_object() + var/datum/cas_signal/target = get_cas_signal(target_ref) camera_target_id = target_ref if(!target) diff --git a/code/game/machinery/computer/groundside_operations.dm b/code/game/machinery/computer/groundside_operations.dm index 7b4c2d5df771..95ea46177ca2 100644 --- a/code/game/machinery/computer/groundside_operations.dm +++ b/code/game/machinery/computer/groundside_operations.dm @@ -108,6 +108,7 @@ dat += "No Squad selected!
" else var/leader_text = "" + var/tl_text = "" var/spec_text = "" var/medic_text = "" var/engi_text = "" @@ -164,11 +165,15 @@ if(!H.key || !H.client) SSD_count++ continue + if(H == current_squad.squad_leader && role != JOB_SQUAD_LEADER) + act_sl = "(ASL)" var/marine_infos = "[mob_name][role][act_sl][mob_state][area_name]" switch(role) if(JOB_SQUAD_LEADER) leader_text += marine_infos + if(JOB_SQUAD_TEAM_LEADER) + tl_text += marine_infos if(JOB_SQUAD_SPECIALIST) spec_text += marine_infos if(JOB_SQUAD_MEDIC) @@ -187,7 +192,7 @@ dat += "
Search:
" dat += "" dat += "" - dat += leader_text + spec_text + medic_text + engi_text + smart_text + marine_text + misc_text + dat += leader_text + tl_text + spec_text + medic_text + engi_text + smart_text + marine_text + misc_text dat += "
NameRoleStateLocation
" dat += "

" dat += "Refresh
" @@ -205,6 +210,19 @@ return if("announce") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + if(usr.client.prefs.muted & MUTE_IC) to_chat(usr, SPAN_DANGER("You cannot send Announcements (muted).")) return @@ -235,7 +253,7 @@ log_announcement("[key_name(usr)] has announced the following: [input]") if("award") - print_medal(usr, src) + open_medal_panel(usr, src) if("selectlz") if(SSticker.mode.active_lz) @@ -290,6 +308,19 @@ usr.RegisterSignal(cam, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, reset_observer_view_on_deletion)) if("activate_echo") + var/mob/living/carbon/human/human_user = usr + var/obj/item/card/id/idcard = human_user.get_active_hand() + var/bio_fail = FALSE + if(!istype(idcard)) + idcard = human_user.wear_id + if(!istype(idcard)) + bio_fail = TRUE + else if(!idcard.check_biometrics(human_user)) + bio_fail = TRUE + if(bio_fail) + to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!")) + return FALSE + var/reason = strip_html(input(usr, "What is the purpose of Echo Squad?", "Activation Reason")) if(!reason) return diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 20aa6925d0b4..40b23667636f 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -182,14 +182,6 @@ src.rank = "AI" src.screen = 1 - else if (isrobot(usr)) - src.active1 = null - src.active2 = null - src.authenticated = usr.name - var/mob/living/silicon/robot/R = usr - src.rank = "[R.modtype] [R.braintype]" - src.screen = 1 - else if (istype(src.scan, /obj/item/card/id)) src.active1 = null src.active2 = null diff --git a/code/game/machinery/computer/research.dm b/code/game/machinery/computer/research.dm index 1ba696eeee9c..d5158cb76451 100644 --- a/code/game/machinery/computer/research.dm +++ b/code/game/machinery/computer/research.dm @@ -179,7 +179,7 @@ if("purchase_document") if(!photocopier) return - var/purchase_tier = FLOOR(text2num(params["purchase_document"]), 1) + var/purchase_tier = Floor(text2num(params["purchase_document"])) if(purchase_tier <= 0 || purchase_tier > 5) return if(purchase_tier > GLOB.chemical_data.clearance_level) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 19e3ac900af6..1a8dcf2efdf8 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -8,207 +8,3 @@ icon_state = "robot" req_access = list(ACCESS_MARINE_RESEARCH) circuit = /obj/item/circuitboard/computer/robotics - - var/id = 0 - var/temp = null - var/status = 0 - var/timeleft = 60 - var/stop = 0 - var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text - - -/obj/structure/machinery/computer/robotics/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/computer/robotics/attack_hand(mob/user as mob) - if(..()) - return - if (src.z > 6) - to_chat(user, SPAN_DANGER("Unable to establish a connection: \black You're too far away from the station!")) - return - user.set_interaction(src) - var/dat - if (src.temp) - dat = "[src.temp]

Clear Screen" - else - if(screen == 0) - dat += "

Cyborg Control Console


" - dat += "1. Cyborg Status
" - dat += "2. Emergency Full Destruct
" - if(screen == 1) - for(var/mob/living/silicon/robot/R in GLOB.mob_list) - if(istype(R, /mob/living/silicon/robot/drone)) - continue //There's a specific console for drones. - if(isRemoteControlling(user)) - if (R.connected_ai != user) - continue - if(isrobot(user)) - if (R != user) - continue - if(R.scrambledcodes) - continue - - dat += "[R.name] |" - if(R.stat) - dat += " Not Responding |" - else if (HAS_TRAIT_FROM(R, TRAIT_IMMOBILIZED, HACKED_TRAIT)) - dat += " Locked Down |" - else - dat += " Operating Normally |" - if(R.cell) - dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" - else - dat += " No Cell Installed |" - if(R.module) - dat += " Module Installed ([R.module.name]) |" - else - dat += " No Module Installed |" - if(R.connected_ai) - dat += " Slaved to [R.connected_ai.name] |" - else - dat += " Independent from AI |" - if (isRemoteControlling(user)) - if((user.mind.original == user)) - dat += "(Hack) " - var/canmove = HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) - dat += "([canmove ? "Lockdown" : "Release"]) " - dat += "(Destroy)" - dat += "
" - dat += "(Return to Main Menu)
" - if(screen == 2) - if(!src.status) - dat += {"
Emergency Robot Self-Destruct
\nStatus: Off
- \n
- \nCountdown: [src.timeleft]/60 \[Reset\]
- \n
- \nStart Sequence
- \n
- \nClose"} - else - dat = {"Emergency Robot Self-Destruct
\nStatus: Activated
- \n
- \nCountdown: [src.timeleft]/60 \[Reset\]
- \n
\nStop Sequence
- \n
- \nClose"} - dat += "(Return to Main Menu)
" - - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") - return - -/obj/structure/machinery/computer/robotics/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (isRemoteControlling(usr))) - usr.set_interaction(src) - - if (href_list["eject"]) - src.temp = {"Destroy Robots?
-
\[Swipe ID to initiate destruction sequence\]
- Cancel"} - - else if (href_list["eject2"]) - var/obj/item/card/id/I = usr.get_active_hand() - if (istype(I)) - if(src.check_access(I)) - if (!status) - message_admins("[key_name_admin(usr)] has initiated the global cyborg killswitch!") - log_game(SPAN_NOTICE("[key_name(usr)] has initiated the global cyborg killswitch!")) - src.status = 1 - src.start_sequence() - src.temp = null - - else - to_chat(usr, SPAN_DANGER("Access Denied.")) - - else if (href_list["stop"]) - src.temp = {" - Stop Robot Destruction Sequence?
-
Yes
- No"} - - else if (href_list["stop2"]) - src.stop = 1 - src.temp = null - src.status = 0 - - else if (href_list["reset"]) - src.timeleft = 60 - - else if (href_list["temp"]) - src.temp = null - else if (href_list["screen"]) - switch(href_list["screen"]) - if("0") - screen = 0 - if("1") - screen = 1 - if("2") - screen = 2 - else if (href_list["killbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["killbot"]) - if(R) - var/choice = tgui_input_list(usr, "Are you certain you wish to detonate [R.name]?", "Hack machine", list("Confirm", "Abort")) - if(choice == "Confirm") - if(R && istype(R)) - message_admins("[key_name_admin(usr)] detonated [R.name]!") - log_game(SPAN_NOTICE("[key_name_admin(usr)] detonated [R.name]!")) - R.self_destruct() - else - to_chat(usr, SPAN_DANGER("Access Denied.")) - - else if (href_list["stopbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) - var/canmove = HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) - if(R && istype(R)) // Extra sancheck because of input var references - var/choice = tgui_input_list(usr, "Are you certain you wish to [canmove ? "lock down" : "release"] [R.name]?", "Hack machine", list("Confirm", "Abort")) - if(choice == "Confirm") - if(R && istype(R)) - message_admins("[key_name_admin(usr)] [canmove ? "locked down" : "released"] [R.name]!") - log_game("[key_name(usr)] [canmove ? "locked down" : "released"] [R.name]!") - if(canmove) - ADD_TRAIT(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) - else - REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) - if (R.lockcharge) - R.lockcharge = !R.lockcharge - to_chat(R, "Your lockdown has been lifted!") - else - R.lockcharge = !R.lockcharge - to_chat(R, "You have been locked down!") - - else - to_chat(usr, SPAN_DANGER("Access Denied.")) - - else if (href_list["magbot"]) - if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["magbot"]) - - // whatever weirdness this is supposed to be, but that is how the href gets added, so here it is again - if(istype(R) && isRemoteControlling(usr) && (usr.mind.original == usr)) - - var/choice = tgui_input_list(usr, "Are you certain you wish to hack [R.name]?", "Hack machine", list("Confirm", "Abort")) - if(choice == "Confirm") - if(R && istype(R)) - log_game("[key_name(usr)] emagged [R.name] using robotic console!") - add_verb(R, /mob/living/silicon/robot/proc/ResetSecurityCodes) - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/structure/machinery/computer/robotics/proc/start_sequence() - while(src.timeleft) - if(src.stop) - src.stop = 0 - return - src.timeleft-- - sleep(10) - for(var/mob/living/silicon/robot/R in GLOB.mob_list) - if(!R.scrambledcodes && !istype(R, /mob/living/silicon/robot/drone)) - R.self_destruct() - - return diff --git a/code/game/machinery/computer/robots_props.dm b/code/game/machinery/computer/robots_props.dm new file mode 100644 index 000000000000..cac77f9bdbec --- /dev/null +++ b/code/game/machinery/computer/robots_props.dm @@ -0,0 +1,19 @@ +/obj/structure/machinery/computer/aifixer + name = "AI System Integrity Restorer" + icon = 'icons/obj/structures/machinery/computer.dmi' + icon_state = "ai-fixer" + circuit = /obj/item/circuitboard/computer/aifixer + req_one_access = list(ACCESS_CIVILIAN_ENGINEERING) + processing = TRUE + +/obj/structure/machinery/computer/aifixer/New() + ..() + src.overlays += image('icons/obj/structures/machinery/computer.dmi', "ai-fixer-empty") + +/obj/structure/machinery/computer/drone_control + name = "Maintenance Drone Control" + desc = "Used to monitor the station's drone population and the assembler that services them." + icon = 'icons/obj/structures/machinery/computer.dmi' + icon_state = "power" + circuit = /obj/item/circuitboard/computer/drone_control + diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index e7626938549a..4138d89908d4 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -217,7 +217,7 @@ What a mess.*/ active1 = null if (!( GLOB.data_core.security.Find(active2) )) active2 = null - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (ishighersilicon(usr))) + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (isSilicon(usr))) usr.set_interaction(src) switch(href_list["choice"]) // SORTING! @@ -361,16 +361,13 @@ What a mess.*/ return var/a2 = active2 var/t1 = copytext(trim(strip_html(input("Your name and time will be added to this new comment.", "Add a comment", null, null) as message)),1,MAX_MESSAGE_LEN) - if((!t1 || usr.stat || usr.is_mob_restrained() || (!in_range(src, usr) && (!ishighersilicon(usr))) || active2 != a2)) + if((!t1 || usr.stat || usr.is_mob_restrained() || (!in_range(src, usr) && (!isSilicon(usr))) || active2 != a2)) return var/created_at = text("[]  []  []", time2text(world.realtime, "MMM DD"), time2text(world.time, "[worldtime2text()]:ss"), GLOB.game_year) var/new_comment = list("entry" = t1, "created_by" = list("name" = "", "rank" = ""), "deleted_by" = null, "deleted_at" = null, "created_at" = created_at) if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr new_comment["created_by"] = list("name" = U.get_authentification_name(), "rank" = U.get_assignment()) - else if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - new_comment["created_by"] = list("name" = U.name, "rank" = "[U.modtype] [U.braintype]") if(!islist(active2.fields["comments"])) active2.fields["comments"] = list("1" = new_comment) else @@ -387,9 +384,6 @@ What a mess.*/ if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr deleter = "[U.get_authentification_name()] ([U.get_assignment()])" - else if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - deleter = "[U.name] ([U.modtype] [U.braintype])" updated_comments[href_list["del_c"]]["deleted_by"] = deleter updated_comments[href_list["del_c"]]["deleted_at"] = text("[]  []  []", time2text(world.realtime, "MMM DD"), time2text(world.time, "[worldtime2text()]:ss"), GLOB.game_year) active2.fields["comments"] = updated_comments @@ -442,7 +436,7 @@ What a mess.*/ temp += "" if("rank") //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if (istype(active1, /datum/data/record) && GLOB.highcom_paygrades.Find(rank)) + if (istype(active1, /datum/data/record) && GLOB.uscm_highcom_paygrades.Find(rank)) temp = "
Occupation:
" temp += "
    " for(var/rank in GLOB.joblist) @@ -511,17 +505,12 @@ What a mess.*/ return dat /obj/structure/machinery/computer/secure_data/proc/is_not_allowed(mob/user) - return user.stat || user.is_mob_restrained() || (!in_range(src, user) && (!ishighersilicon(user))) + return user.stat || user.is_mob_restrained() || (!in_range(src, user) && (!isSilicon(user))) /obj/structure/machinery/computer/secure_data/proc/get_photo(mob/user) if(istype(user.get_active_hand(), /obj/item/photo)) var/obj/item/photo/photo = user.get_active_hand() return photo.img - if(ishighersilicon(user)) - var/mob/living/silicon/tempAI = usr - var/datum/picture/selection = tempAI.GetPicture() - if (selection) - return selection.fields["img"] /obj/structure/machinery/computer/secure_data/emp_act(severity) . = ..() @@ -540,7 +529,7 @@ What a mess.*/ if(4) R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Released", "Suspect", "NJP") if(5) - R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") + R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") continue diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index 6e35d147ff38..cc4d93f5a24c 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -188,12 +188,6 @@ What a mess.*/ src.authenticated = usr.name src.rank = "AI" src.screen = 1 - else if (isborg(usr)) - src.active1 = null - src.authenticated = usr.name - var/mob/living/silicon/robot/R = usr - src.rank = R.braintype - src.screen = 1 else if (istype(scan, /obj/item/card/id)) active1 = null if(check_access(scan)) @@ -307,7 +301,7 @@ What a mess.*/ active1.fields["age"] = t1 if("rank") //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if(istype(active1, /datum/data/record) && GLOB.highcom_paygrades.Find(rank)) + if(istype(active1, /datum/data/record) && GLOB.uscm_highcom_paygrades.Find(rank)) temp = "
    Occupation:
    " temp += "
      " for(var/rank in GLOB.joblist) @@ -363,7 +357,7 @@ What a mess.*/ if(4) R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Released") if(5) - R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") + R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") continue diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 332d9b96bd44..dbd40409c09e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -754,9 +754,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( for(var/turf/turf in locs) for(var/mob/living/M in turf) - if(isborg(M)) - M.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE) - else if(HAS_TRAIT(M, TRAIT_SUPER_STRONG)) + if(HAS_TRAIT(M, TRAIT_SUPER_STRONG)) M.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE) else M.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE) diff --git a/code/game/machinery/doors/brig_system.dm b/code/game/machinery/doors/brig_system.dm index e7437aa9ca2b..74792a610b72 100644 --- a/code/game/machinery/doors/brig_system.dm +++ b/code/game/machinery/doors/brig_system.dm @@ -279,7 +279,7 @@ var/obj/item/card/id/id_card = human.get_idcard() if (id_card) - if ((id_card.paygrade in GLOB.co_paygrades) || (id_card.paygrade in GLOB.highcom_paygrades) || (id_card.paygrade == "PvI")) + if ((id_card.paygrade in GLOB.co_paygrades) || (id_card.paygrade in GLOB.uscm_highcom_paygrades)) return TRUE return FALSE diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm index 4a5c62b1f9a0..53b8736f75f3 100644 --- a/code/game/machinery/fax_machine.dm +++ b/code/game/machinery/fax_machine.dm @@ -6,7 +6,10 @@ GLOBAL_LIST_EMPTY(alldepartments) #define DEPARTMENT_CMB "CMB Incident Command Center, Local Operations" #define DEPARTMENT_PROVOST "USCM Provost Office" #define DEPARTMENT_PRESS "Various Press Organizations" -#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS) +#define DEPARTMENT_TWE "Three World Empire" +#define DEPARTMENT_UPP "Union of Progress Peoples" +#define DEPARTMENT_CLF "Colonial Liberation Front" +#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS, DEPARTMENT_TWE, DEPARTMENT_UPP, DEPARTMENT_CLF) /obj/structure/machinery/faxmachine // why not fax_machine? name = "\improper General Purpose Fax Machine" @@ -138,6 +141,13 @@ GLOBAL_LIST_EMPTY(alldepartments) GLOB.alldepartments += DEPARTMENT_CMB if(!(DEPARTMENT_PRESS in GLOB.alldepartments)) GLOB.alldepartments += DEPARTMENT_PRESS + if(!(DEPARTMENT_TWE in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_TWE + if(!(DEPARTMENT_UPP in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_UPP + if(!(DEPARTMENT_CLF in GLOB.alldepartments)) + GLOB.alldepartments += DEPARTMENT_CLF + // TGUI SHIT \\ /obj/structure/machinery/faxmachine/tgui_interact(mob/user, datum/tgui/ui) @@ -277,9 +287,12 @@ GLOBAL_LIST_EMPTY(alldepartments) . = ..() . += "" . += "" - . += "" + . += "" . += "" . += "" + . += "" + . += "" + . += "" // converting whatever type the fax is into a single paper with all the information on it. /obj/structure/machinery/faxmachine/proc/copy_fax_paper(mob/living/user) @@ -339,13 +352,22 @@ GLOBAL_LIST_EMPTY(alldepartments) GLOB.CMBFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " if(DEPARTMENT_WY) - GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") - msg_admin += "(RPLY): " + GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " if(DEPARTMENT_PRESS) GLOB.PressFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " + if(DEPARTMENT_TWE) + GLOB.TWEFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " + if(DEPARTMENT_UPP) + GLOB.UPPFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " + if(DEPARTMENT_CLF) + GLOB.CLFFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + msg_admin += "(RPLY): " else - GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") + GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " msg_admin += SPAN_STAFF_IC("Receiving fax via secure connection ... view message") @@ -365,7 +387,7 @@ GLOBAL_LIST_EMPTY(alldepartments) to_chat(C, msg_admin) else to_chat(C, msg_ghost) - C << 'sound/effects/sos-morse-code.ogg' + C << 'sound/effects/incoming-fax.ogg' if(msg_ghost) for(var/i in GLOB.observer_list) var/mob/dead/observer/g = i @@ -376,7 +398,7 @@ GLOBAL_LIST_EMPTY(alldepartments) if((R_ADMIN|R_MOD) & C.admin_holder.rights) //staff don't need to see the fax twice continue to_chat(C, msg_ghost) - C << 'sound/effects/sos-morse-code.ogg' + C << 'sound/effects/incoming-fax.ogg' /obj/structure/machinery/faxmachine/proc/send_fax(datum/fax/faxcontents) @@ -416,6 +438,30 @@ GLOBAL_LIST_EMPTY(alldepartments) P.stamped += /obj/item/tool/stamp P.overlays += stampoverlay P.stamps += "
      This paper has been stamped and encrypted by the Weyland-Yutani Quantum Relay (tm)." + if("TWE Royal Marines Commando Quantum Relay") + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-twe" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped by the TWE Royal Marines Commando Quantum Relay." + if("UPP High Kommand Quantum Relay") + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-upp" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped by the UPP High Kommand Quantum Relay." + if("CLF Gureilla Command Quantum Relay") + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-clf" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped and encrypted by the CLF Gureilla Command Quantum Relay." playsound(F.loc, "sound/items/polaroid1.ogg", 15, 1) qdel(faxcontents) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 580fea644eec..b90f8adbbb3f 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -2,7 +2,7 @@ name = "emergency floodlight" desc = "A powerful light usually stationed near landing zones to provide better visibility." icon = 'icons/obj/structures/machinery/floodlight.dmi' - icon_state = "flood00" + icon_state = "flood_0" density = TRUE anchored = TRUE light_power = 2 @@ -11,13 +11,14 @@ idle_power_usage = 0 active_power_usage = 100 + ///How far the light will go when the floodlight is on var/on_light_range = 6 - ///Whether or not the floodlight can be toggled on or off var/toggleable = TRUE - ///Whether or not the floodlight is turned on, disconnected from whether it has power or is lit var/turned_on = FALSE + ///base state + var/base_icon_state = "flood" /obj/structure/machinery/floodlight/Initialize(mapload, ...) . = ..() @@ -60,7 +61,7 @@ /obj/structure/machinery/floodlight/update_icon() . = ..() - icon_state = "flood0[light_on]" + icon_state = "[base_icon_state]_[light_on]" /obj/structure/machinery/floodlight/power_change(area/master_area = null) . = ..() @@ -71,7 +72,7 @@ /obj/structure/machinery/floodlight/landing name = "landing light" desc = "A powerful light usually stationed near landing zones to provide better visibility. This one seems to have been bolted down and is unable to be moved." - icon_state = "flood01" + icon_state = "flood_1" use_power = USE_POWER_NONE needs_power = FALSE unslashable = TRUE @@ -81,5 +82,6 @@ turned_on = TRUE /obj/structure/machinery/floodlight/landing/floor - icon_state = "floor_flood01" + icon_state = "floor_flood_1" + base_icon_state = "floor_flood" density = FALSE diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 9ce3cb89bf79..fe8243704a72 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -45,157 +45,12 @@ * Holopad */ -/* -Revised. Original based on space ninja hologram code. Which is also mine. /N -How it works: -AI clicks on holopad in camera view. View centers on holopad. -AI clicks again on the holopad to display a hologram. Hologram stays as long as AI is looking at the pad and it (the hologram) is in range of the pad. -AI can use the directional keys to move the hologram around, provided the above conditions are met and the AI in question is the holopad's master. -Only one AI may project from a holopad at any given time. -AI may cancel the hologram at any time by clicking on the holopad once more. - -Possible to do for anyone motivated enough: - Give an AI variable for different hologram icons. - Itegrate EMP effect to disable the unit. -*/ - /obj/structure/machinery/hologram/holopad name = "\improper AI holopad" desc = "It's a floor-mounted device for projecting holographic images. It is activated remotely." icon_state = "holopad0" layer = TURF_LAYER+0.1 //Preventing mice and drones from sneaking under them. - - var/mob/living/silicon/ai/master //Which AI, if any, is controlling the object? Only one AI may control a hologram at any time. - var/last_request = 0 //to prevent request spam. ~Carn - var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating. - -/obj/structure/machinery/hologram/holopad/Initialize() - . = ..() - flags_atom |= USES_HEARING - -/obj/structure/machinery/hologram/holopad/Destroy() - QDEL_NULL(master) - . = ..() - -/obj/structure/machinery/hologram/holopad/attack_hand(mob/living/carbon/human/user) //Carn: Hologram requests. - if(!istype(user)) - return - if(alert(user,"Would you like to request an AI's presence?",,"Yes","No") == "Yes") - if(last_request + 200 < world.time) //don't spam the AI with requests you jerk! - last_request = world.time - to_chat(user, SPAN_NOTICE("You request an AI's presence.")) - var/area/area = get_area(src) - for(var/mob/living/silicon/ai/AI in GLOB.alive_mob_list) - if(!AI.client) continue - to_chat(AI, SPAN_INFO("Your presence is requested at \the [area].")) - else - to_chat(user, SPAN_NOTICE("A request for AI presence was already sent recently.")) - -/obj/structure/machinery/hologram/holopad/attack_remote(mob/living/silicon/ai/user) - if (!istype(user)) - return - /*There are pretty much only three ways to interact here. - I don't need to check for client since they're clicking on an object. - This may change in the future but for now will suffice.*/ - if(user.eyeobj.loc != src.loc)//Set client eye on the object if it's not already. - user.eyeobj.setLoc(get_turf(src)) - else if(!hologram)//If there is no hologram, possibly make one. - activate_holo(user) - else if(master==user)//If there is a hologram, remove it. But only if the user is the master. Otherwise do nothing. - clear_holo() - return - -/obj/structure/machinery/hologram/holopad/proc/activate_holo(mob/living/silicon/ai/user) - if(!(stat & NOPOWER) && user.eyeobj.loc == src.loc)//If the projector has power and client eye is on it. - if(!hologram)//If there is not already a hologram. - create_holo(user)//Create one. - src.visible_message("A holographic image of [user] flicks to life right before your eyes!") - else - to_chat(user, SPAN_DANGER("ERROR: \black Image feed in progress.")) - else - to_chat(user, SPAN_DANGER("ERROR: \black Unable to project hologram.")) - return - -/*This is the proc for special two-way communication between AI and holopad/people talking near holopad. -For the other part of the code, check silicon say.dm. Particularly robot talk.*/ -/obj/structure/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb) - if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something. - if(!master.say_understands(M))//The AI will be able to understand most mobs talking through the holopad. - text = stars(text) - var/name_used = M.GetVoice() - //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. - var/rendered = "Holopad received, [name_used] [verb], \"[text]\"" - master.show_message(rendered, SHOW_MESSAGE_AUDIBLE) - return - -/obj/structure/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc) - hologram = new(T)//Spawn a blank effect at the location. - hologram.icon = A.holo_icon - hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it. - hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. - hologram.anchored = TRUE//So space wind cannot drag it. - hologram.name = "[A.name] (Hologram)"//If someone decides to right click. - hologram.set_light(2) //hologram lighting - set_light(2) //pad lighting - icon_state = "holopad1" - A.holo = src - master = A//AI is the master. - use_power = USE_POWER_ACTIVE//Active power usage. - return 1 - -/obj/structure/machinery/hologram/holopad/clear_holo() -// hologram.set_light(0)//Clear lighting. //handled by the lighting controller when its ower is deleted - if(hologram) - qdel(hologram)//Get rid of hologram. - hologram = null - if(master.holo == src) - master.holo = null - master = null//Null the master, since no-one is using it now. - set_light(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted) - icon_state = "holopad0" - use_power = USE_POWER_IDLE//Passive power usage. - return 1 - -/obj/structure/machinery/hologram/holopad/process() - if(hologram)//If there is a hologram. - if(master && !master.stat && master.client && master.eyeobj)//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector. - if(!(stat & NOPOWER))//If the machine has power. - if(get_dist(master.eyeobj, src) <= holo_range) - return 1 - - clear_holo()//If not, we want to get rid of the hologram. - return 1 - -/obj/structure/machinery/hologram/holopad/proc/move_hologram() - if(hologram) - step_to(hologram, master.eyeobj) // So it turns. - hologram.forceMove(get_turf(master.eyeobj)) - - return 1 - - -/* -Holographic project of everything else. - -/mob/verb/hologram_test() - set name = "Hologram Debug New" - set category = "CURRENT DEBUG" - - var/obj/effect/overlay/hologram = new(loc)//Spawn a blank effect at the location. - var/icon/flat_icon = icon(getFlatIcon(src,0))//Need to make sure it's a new icon so the old one is not reused. - flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. - flat_icon.ChangeOpacity(0.5)//Make it half transparent. - var/input = input("Select what icon state to use in effect.",,"") - if(input) - var/icon/alpha_mask = new('icons/effects/effects.dmi', "[input]") - flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. - hologram.icon = flat_icon - - to_world("Your icon should appear now.") - return -*/ - /* * Other Stuff: Is this even used? */ diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index c5eaa14e05b5..88055a89f82b 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -247,13 +247,7 @@ Class Procs: return (user.IsAdvancedToolUser(user) || isRemoteControlling(user)) /obj/structure/machinery/attack_remote(mob/user as mob) - if(isrobot(user)) - // For some reason attack_robot doesn't work - // This is to stop robots from using cameras to remotely control machines. - if(user.client && user.client.eye == user) - return src.attack_hand(user) - else - return src.attack_hand(user) + return src.attack_hand(user) /obj/structure/machinery/attack_hand(mob/living/user as mob) if(inoperable(MAINT)) @@ -327,3 +321,33 @@ Class Procs: /obj/structure/machinery/ui_state(mob/user) return GLOB.not_incapacitated_and_adjacent_state + +//made into "prop" from an old destilery project abandon 9 year ago. + +/obj/structure/machinery/mill + name = "\improper Mill" + desc = "It is a machine that grinds produce." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + +/obj/structure/machinery/fermenter + name = "\improper Fermenter" + desc = "It is a machine that ferments produce into alcoholic drinks." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + +/obj/structure/machinery/still + name = "\improper Still" + desc = "It is a machine that produces hard liquor from alcoholic drinks." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + +/obj/structure/machinery/squeezer + name = "\improper Squeezer" + desc = "It is a machine that squeezes extracts from produce." + icon_state = "autolathe" + density = TRUE + anchored = TRUE diff --git a/code/game/machinery/medical_pod/bone_gel_refill.dm b/code/game/machinery/medical_pod/bone_gel_refill.dm new file mode 100644 index 000000000000..caf25ac438ec --- /dev/null +++ b/code/game/machinery/medical_pod/bone_gel_refill.dm @@ -0,0 +1,12 @@ +/obj/structure/machinery/gel_refiller + name = "osteomimetic lattice fabricator" + desc = "Often called the bone gel refiller by those unable to pronounce its full name, this machine synthesizes and stores bone gel for later use. A slot in the front allows you to insert a bone gel bottle to refill it." + desc_lore = "In an attempt to prevent counterfeit bottles of bone gel not created by Weyland-Yutani, also known as a regular bottle, from being refilled, there is a chip reader in the fabricator and a chip in each bottle to make sure it is genuine. However, due to a combination of quality issues and being unmaintainable from proprietary parts, the machine often has problems. One such problem is in the chip reader, resulting in the fabricator being unable to detect a bottle directly on it, and such fails to activate, resulting in a person having to stand there and manually hold a bottle at the correct height to fill it." + icon_state = "bone_gel_vendor" + density = TRUE + +/obj/structure/machinery/gel_refiller/attackby(obj/item/attacking_item, mob/user) + if(!istype(attacking_item, /obj/item/tool/surgery/bonegel)) + return ..() + var/obj/item/tool/surgery/bonegel/gel = attacking_item + gel.refill_gel(src, user) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 9bd7e5f5e965..d9aa42dbd1f1 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -732,15 +732,6 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/structure/machinery/newscaster, list()) if(istype(PH)) if(user.drop_inv_item_to_loc(photo, src)) photo = PH - else if(istype(user,/mob/living/silicon)) - var/mob/living/silicon/tempAI = user - var/datum/picture/selection = tempAI.GetPicture() - if (!selection) - return - - var/obj/item/photo/P = new/obj/item/photo() - P.construct(selection) - photo = P //######################################################################################################################## diff --git a/code/game/machinery/nuclearbomb.dm b/code/game/machinery/nuclearbomb.dm index aac4f82ccff1..2194fe2e7e7c 100644 --- a/code/game/machinery/nuclearbomb.dm +++ b/code/game/machinery/nuclearbomb.dm @@ -151,7 +151,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE) data["command_lockout"] = command_lockout data["allowed"] = allowed data["being_used"] = being_used - data["decryption_complete"] = TRUE //this is overriden by techweb nuke UI_data later, this just makes it default to true + data["decryption_complete"] = TRUE //this is overridden by techweb nuke UI_data later, this just makes it default to true return data diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 56b782cd77a4..e87bb56da489 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -143,21 +143,6 @@ /obj/structure/machinery/recharge_station/proc/process_occupant() if(src.occupant) var/doing_stuff = FALSE - if (isrobot(occupant)) - var/mob/living/silicon/robot/R = occupant - if(R.module) - R.module.respawn_consumable(R) - if(!R.cell) - return - if(!R.cell.fully_charged()) - var/diff = min(R.cell.maxcharge - R.cell.charge, 500) // 500 charge / tick is about 2% every 3 seconds - diff = min(diff, current_internal_charge) // No over-discharging - R.cell.give(diff) - current_internal_charge = max(current_internal_charge - diff, 0) - to_chat(occupant, "Recharging...") - doing_stuff = TRUE - else - update_use_power(USE_POWER_IDLE) if (issynth(occupant)) var/mob/living/carbon/human/humanoid_occupant = occupant //for special synth surgeries if(occupant.getBruteLoss() > 0 || occupant.getFireLoss() > 0 || occupant.getBrainLoss() > 0) @@ -226,14 +211,10 @@ return move_mob_inside(target) /obj/structure/machinery/recharge_station/verb/move_mob_inside(mob/living/M) - if (!isrobot(M) && !issynth(M)) + if (!issynth(M)) return FALSE if (occupant) return FALSE - if (isrobot(M)) - var/mob/living/silicon/robot/R = M - if(QDELETED(R.cell)) - return FALSE M.stop_pulling() if(M && M.client) M.client.perspective = EYE_PERSPECTIVE @@ -254,18 +235,12 @@ if (usr.stat == 2) //Whoever had it so that a borg with a dead cell can't enter this thing should be shot. --NEO return - if (!isrobot(usr) && !issynth(usr)) + if (!issynth(usr)) to_chat(usr, SPAN_NOTICE(" Only non-organics may enter the recharge and repair station!")) return if (src.occupant) to_chat(usr, SPAN_NOTICE(" The cell is already occupied!")) return - if (isrobot(usr)) - var/mob/living/silicon/robot/R = usr - if(QDELETED(R.cell)) - to_chat(usr, SPAN_NOTICE("Without a powercell, you can't be recharged.")) - //Make sure they actually HAVE a cell, now that they can get in while powerless. --NEO - return move_mob_inside(usr) return @@ -275,7 +250,7 @@ var/obj/item/grab/G = W if(!ismob(G.grabbed_thing)) return - if(!issynth(G.grabbed_thing) && !isrobot(G.grabbed_thing)) + if(!issynth(G.grabbed_thing)) return if(occupant) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index e992ef02f8a5..bf3ab569e9da 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -150,8 +150,6 @@ var/list/heard_gibberish= list() // completely screwed over message (ie "F%! (O*# *#!<>&**%!") if(M) - if(isAI(M)) - volume = RADIO_VOLUME_CRITICAL if(ishuman(M)) var/mob/living/carbon/human/H = M if(skillcheck(H, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT)) diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index e43598c4e248..97c393e06556 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -102,7 +102,7 @@ /obj/structure/machinery/telecomms/attack_hand(mob/user as mob) // You need a multitool to use this, or be silicon - if(!ishighersilicon(user)) + if(!isSilicon(user)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You stare at \the [src] cluelessly...")) return @@ -182,24 +182,6 @@ return 1 return 0 -// Returns a multitool from a user depending on their mobtype. - -/obj/structure/machinery/telecomms/proc/get_multitool(mob/user as mob) - - var/obj/item/device/multitool/P = null - // Let's double check - var/obj/item/held_item = user.get_active_hand() - if(!ishighersilicon(user) && held_item && HAS_TRAIT(held_item, TRAIT_TOOL_MULTITOOL)) - P = user.get_active_hand() - else if(isAI(user)) - var/mob/living/silicon/ai/U = user - P = U.aiMulti - else if(isborg(user) && in_range(user, src)) - var/obj/item/borg_held_item = user.get_active_hand() - if(held_item && HAS_TRAIT(borg_held_item, TRAIT_TOOL_MULTITOOL)) - P = user.get_active_hand() - return P - // Additional Options for certain GLOB.machines. Use this when you want to add an option to a specific machine. // Example of how to use below. @@ -279,7 +261,7 @@ . = ..() if(.) return - if(!ishighersilicon(usr)) + if(!isSilicon(usr)) var/obj/item/held_item = usr.get_held_item() if (!held_item || !HAS_TRAIT(held_item, TRAIT_TOOL_MULTITOOL)) return diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 7621d55e3645..c97a28932262 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -91,7 +91,7 @@ return // Leave the poor thing alone health -= damage - health = Clamp(health, 0, initial(health)) + health = clamp(health, 0, initial(health)) if(health <= 0) toggled = FALSE // requires flipping on again once repaired @@ -147,7 +147,7 @@ else return ..() /obj/structure/machinery/telecomms/relay/preset/tower/attack_hand(mob/user) - if(ishighersilicon(user)) + if(isSilicon(user)) return ..() if(on) to_chat(user, SPAN_WARNING("\The [src.name] blinks and beeps incomprehensibly as it operates, better not touch this...")) diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index 5568a5fda600..2ba1ac089826 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -576,7 +576,7 @@ GLOBAL_LIST_EMPTY(vending_products) user.skills.set_skill(SKILL_SPEC_WEAPONS, SKILL_SPEC_PYRO) specialist_assignment = "Pyro" else - to_chat(user, SPAN_WARNING("Something bad occured with [src], tell a Dev.")) + to_chat(user, SPAN_WARNING("Something bad occurred with [src], tell a Dev.")) vend_fail() return FALSE ID.set_assignment((user.assigned_squad ? (user.assigned_squad.name + " ") : "") + JOB_SQUAD_SPECIALIST + " ([specialist_assignment])") diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index 90947684bee1..0a7b85cae7e2 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -267,6 +267,7 @@ /obj/item/ammo_magazine/rifle/rubber = 40, /obj/item/ammo_magazine/rifle/m4ra/rubber = 40, /obj/item/clothing/head/helmet/marine/MP = 8, + /obj/item/explosive/plastic/breaching_charge/rubber = 6, ) /obj/structure/machinery/vending/sea diff --git a/code/game/machinery/vending/vendor_types/crew/medical.dm b/code/game/machinery/vending/vendor_types/crew/medical.dm index 5dfb6b347b5d..29838f3b57d0 100644 --- a/code/game/machinery/vending/vendor_types/crew/medical.dm +++ b/code/game/machinery/vending/vendor_types/crew/medical.dm @@ -32,28 +32,38 @@ GLOBAL_LIST_INIT(cm_vending_clothing_doctor, list( list("MEDICAL SET (MANDATORY)", 0, null, null, null), list("Essential Medical Set", 0, /obj/effect/essentials_set/medical/doctor, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/doc, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + list("Medical's apron", 0, /obj/item/clothing/suit/chef/classic/medical, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), - list("HELMET", 0, null, null, null), + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("BELT (CHOOSE 1)", 0, null, null, null), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -87,29 +97,40 @@ GLOBAL_LIST_INIT(cm_vending_clothing_nurse, list( list("MEDICAL SET (MANDATORY)", 0, null, null, null), list("Essential Medical Set", 0, /obj/effect/essentials_set/medical, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/doc, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), + list("Medical Nurse Scrubs", 0, /obj/item/clothing/under/rank/medical/nurse, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Medical Nurse Scrubs", 0, /obj/item/clothing/under/rank/medical/nurse, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Medical's apron", 0, /obj/item/clothing/suit/chef/classic/medical, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), - list("HELMET", 0, null, null, null), + list("Surgical Cap, Orange", 0, /obj/item/clothing/head/surgery/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("BELT (CHOOSE 1)", 0, null, null, null), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -143,30 +164,41 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( list("MEDICAL SET (MANDATORY)", 0, null, null, null), list("Essential Medical Set", 0, /obj/effect/essentials_set/medical/doctor, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/research, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), - list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), + list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Prescription Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("UNIFORM (CHOOSE 1)", 0, null, null, null), + list("Researcher Uniform", 0, /obj/item/clothing/under/marine/officer/researcher, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Researcher Uniform", 0, /obj/item/clothing/under/marine/officer/researcher, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat/researcher, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), - list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat/researcher, MARINE_CAN_BUY_MRE, VENDOR_ITEM_RECOMMENDED), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), - list("HELMET", 0, null, null, null), + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), + list("Surgical Cap, Orange", 0, /obj/item/clothing/head/surgery/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("BELT (CHOOSE 1)", 0, null, null, null), list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), @@ -203,6 +235,9 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( /obj/item/device/healthanalyzer, /obj/item/tool/surgery/surgical_line, /obj/item/tool/surgery/synthgraft, + /obj/item/storage/syringe_case, + /obj/item/storage/surgical_case/regular, + ) /obj/effect/essentials_set/medical/doctor @@ -214,4 +249,5 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( /obj/item/tool/surgery/synthgraft, /obj/item/device/flashlight/pen, /obj/item/clothing/accessory/stethoscope, + /obj/item/storage/syringe_case, ) diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm index 9d9c519c285f..96e7bf058924 100644 --- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm +++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm @@ -210,36 +210,62 @@ GLOBAL_LIST_INIT(cm_vending_clothing_req_officer, list( //------------ CHIEF MEDICAL OFFICER --------------- GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("MEDICAL SET (MANDATORY)", 0, null, null, null), + list("Essential Medical Set", 0, /obj/effect/essentials_set/medical/doctor/cmo, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("STANDARD EQUIPMENT", 0, null, null, null), list("Gloves", 0, /obj/item/clothing/gloves/latex, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/cmo, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("EYEWARE (CHOOSE 1)", 0, null, null, null), + list("EYEWEAR (CHOOSE 1)", 0, null, null, null), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), - list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), + list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), + list("Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Prescription Reagent Scanner HUD Goggles", 0, /obj/item/clothing/glasses/science/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), list("UNIFORM (CHOOSE 1)", 0, null, null, null), - list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Chief Medical Officer's Uniform", 0, /obj/item/clothing/under/rank/chief_medical_officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Doctor Uniform", 0, /obj/item/clothing/under/rank/medical, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), - list("Doctor Uniform", 0, /obj/item/clothing/under/rank/medical, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Labcoat", 0, /obj/item/clothing/suit/storage/labcoat, MARINE_CAN_BUY_MRE, VENDOR_ITEM_RECOMMENDED), + list("Medical's apron", 0, /obj/item/clothing/suit/chef/classic/medical, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + + list("SNOW GEAR (SNOW USE ONLY)", 0, null, null, null), + list("Snowcoat", 0, /obj/item/clothing/suit/storage/snow_suit/doctor, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Balaclava", 0, /obj/item/clothing/mask/balaclava, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + list("Snow Scarf", 0, /obj/item/clothing/mask/tornscarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), + + list("HEADWEAR (CHOOSE 1)", 0, null, null, null), + list("Chief Medical Officer's Peaked Cap", 0, /obj/item/clothing/head/cmo, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Surgical Cap, Orange", 0, /obj/item/clothing/head/surgery/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Surgical Cap, Blue", 0, /obj/item/clothing/head/surgery/blue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Surgical Cap, Purple", 0, /obj/item/clothing/head/surgery/purple, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Surgical Cap, Green", 0, /obj/item/clothing/head/surgery/green, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("BAG (CHOOSE 1)", 0, null, null, null), + + list("Standard Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Medical Satchel", 0, /obj/item/storage/backpack/marine/satchel/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), - list("USCM Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), - list("USCM Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), - list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), - list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("COMBAT EQUIPMENT (COMBAT USE ONLY)", 0, null, null, null), + list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_MANDATORY), + list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_COMBAT_SHOES, VENDOR_ITEM_MANDATORY), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -264,6 +290,17 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( )) +/obj/effect/essentials_set/medical/doctor/cmo + spawned_gear_list = list( + /obj/item/device/defibrillator, + /obj/item/storage/firstaid/adv, + /obj/item/device/healthanalyzer, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/device/flashlight/pen, + /obj/item/clothing/accessory/stethoscope, + /obj/item/storage/syringe_case, + ) diff --git a/code/game/machinery/vending/vendor_types/engineering.dm b/code/game/machinery/vending/vendor_types/engineering.dm index 2275656d7a30..245e06009695 100644 --- a/code/game/machinery/vending/vendor_types/engineering.dm +++ b/code/game/machinery/vending/vendor_types/engineering.dm @@ -90,6 +90,11 @@ list("Research Data Terminal", 2, /obj/item/circuitboard/computer/research_terminal, VENDOR_ITEM_REGULAR), list("P.A.C.M.A.N Generator", 1, /obj/item/circuitboard/machine/pacman, VENDOR_ITEM_REGULAR), list("Auxiliar Power Storage Unit", 2, /obj/item/circuitboard/machine/ghettosmes, VENDOR_ITEM_REGULAR), + list("Air Alarm Electronics", 2, /obj/item/circuitboard/airalarm, VENDOR_ITEM_REGULAR), + list("Security Camera Monitor", 2, /obj/item/circuitboard/computer/cameras, VENDOR_ITEM_REGULAR), + list("Station Alerts", 2, /obj/item/circuitboard/computer/stationalert, VENDOR_ITEM_REGULAR), + list("Arcade", 2, /obj/item/circuitboard/computer/arcade, VENDOR_ITEM_REGULAR), + list("Atmospheric Monitor", 2, /obj/item/circuitboard/computer/air_management, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/tech/tool_storage/antag diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index 6446d17e2db7..954c3438a4c9 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -68,6 +68,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_intelligence_officer, list( list("ARMOR (CHOOSE 1)", 0, null, null, null), list("XM4 Pattern Intel Armor", 0, /obj/item/clothing/suit/storage/marine/medium/rto/intel, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Service Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BACKPACK (CHOOSE 1)", 0, null, null, null), diff --git a/code/game/machinery/vending/vendor_types/medical.dm b/code/game/machinery/vending/vendor_types/medical.dm index 7073dc383dcd..9750669ac88a 100644 --- a/code/game/machinery/vending/vendor_types/medical.dm +++ b/code/game/machinery/vending/vendor_types/medical.dm @@ -4,7 +4,7 @@ name = "\improper Wey-Med Plus" desc = "Medical Pharmaceutical dispenser. Provided by Wey-Yu Pharmaceuticals Division(TM)." icon_state = "med" - req_access = list(ACCESS_MARINE_MEDBAY, ACCESS_MARINE_CHEMISTRY) + req_access = list(ACCESS_MARINE_MEDBAY) unacidable = TRUE unslashable = FALSE @@ -132,40 +132,40 @@ /obj/structure/machinery/cm_vending/sorted/medical/populate_product_list(scale) listed_products = list( list("FIELD SUPPLIES", -1, null, null), - list("Burn Kit", round(scale * 7), /obj/item/stack/medical/advanced/ointment, VENDOR_ITEM_REGULAR), - list("Trauma Kit", round(scale * 7), /obj/item/stack/medical/advanced/bruise_pack, VENDOR_ITEM_REGULAR), - list("Ointment", round(scale * 7), /obj/item/stack/medical/ointment, VENDOR_ITEM_REGULAR), - list("Roll of Gauze", round(scale * 7), /obj/item/stack/medical/bruise_pack, VENDOR_ITEM_REGULAR), - list("Splints", round(scale * 7), /obj/item/stack/medical/splint, VENDOR_ITEM_REGULAR), + list("Burn Kit", round(scale * 6), /obj/item/stack/medical/advanced/ointment, VENDOR_ITEM_REGULAR), + list("Trauma Kit", round(scale * 6), /obj/item/stack/medical/advanced/bruise_pack, VENDOR_ITEM_REGULAR), + list("Ointment", round(scale * 6), /obj/item/stack/medical/ointment, VENDOR_ITEM_REGULAR), + list("Roll of Gauze", round(scale * 6), /obj/item/stack/medical/bruise_pack, VENDOR_ITEM_REGULAR), + list("Splints", round(scale * 6), /obj/item/stack/medical/splint, VENDOR_ITEM_REGULAR), list("AUTOINJECTORS", -1, null, null), - list("Autoinjector (Bicaridine)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/bicaridine, VENDOR_ITEM_REGULAR), - list("Autoinjector (Dexalin+)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/dexalinp, VENDOR_ITEM_REGULAR), - list("Autoinjector (Epinephrine)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/adrenaline, VENDOR_ITEM_REGULAR), - list("Autoinjector (Inaprovaline)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, VENDOR_ITEM_REGULAR), - list("Autoinjector (Kelotane)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/kelotane, VENDOR_ITEM_REGULAR), - list("Autoinjector (Oxycodone)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/oxycodone, VENDOR_ITEM_REGULAR), - list("Autoinjector (Tramadol)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/tramadol, VENDOR_ITEM_REGULAR), - list("Autoinjector (Tricord)", round(scale * 5), /obj/item/reagent_container/hypospray/autoinjector/tricord, VENDOR_ITEM_REGULAR), + list("Autoinjector (Bicaridine)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/bicaridine, VENDOR_ITEM_REGULAR), + list("Autoinjector (Dexalin+)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/dexalinp, VENDOR_ITEM_REGULAR), + list("Autoinjector (Epinephrine)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/adrenaline, VENDOR_ITEM_REGULAR), + list("Autoinjector (Inaprovaline)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, VENDOR_ITEM_REGULAR), + list("Autoinjector (Kelotane)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/kelotane, VENDOR_ITEM_REGULAR), + list("Autoinjector (Oxycodone)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/oxycodone, VENDOR_ITEM_REGULAR), + list("Autoinjector (Tramadol)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/tramadol, VENDOR_ITEM_REGULAR), + list("Autoinjector (Tricord)", round(scale * 3), /obj/item/reagent_container/hypospray/autoinjector/tricord, VENDOR_ITEM_REGULAR), list("LIQUID BOTTLES", -1, null, null), - list("Bottle (Bicaridine)", round(scale * 5), /obj/item/reagent_container/glass/bottle/bicaridine, VENDOR_ITEM_REGULAR), - list("Bottle (Dylovene)", round(scale * 5), /obj/item/reagent_container/glass/bottle/antitoxin, VENDOR_ITEM_REGULAR), - list("Bottle (Dexalin)", round(scale * 5), /obj/item/reagent_container/glass/bottle/dexalin, VENDOR_ITEM_REGULAR), - list("Bottle (Inaprovaline)", round(scale * 5), /obj/item/reagent_container/glass/bottle/inaprovaline, VENDOR_ITEM_REGULAR), - list("Bottle (Kelotane)", round(scale * 5), /obj/item/reagent_container/glass/bottle/kelotane, VENDOR_ITEM_REGULAR), - list("Bottle (Oxycodone)", round(scale * 5), /obj/item/reagent_container/glass/bottle/oxycodone, VENDOR_ITEM_REGULAR), - list("Bottle (Peridaxon)", round(scale * 5), /obj/item/reagent_container/glass/bottle/peridaxon, VENDOR_ITEM_REGULAR), - list("Bottle (Tramadol)", round(scale * 5), /obj/item/reagent_container/glass/bottle/tramadol, VENDOR_ITEM_REGULAR), + list("Bottle (Bicaridine)", round(scale * 4), /obj/item/reagent_container/glass/bottle/bicaridine, VENDOR_ITEM_REGULAR), + list("Bottle (Dylovene)", round(scale * 4), /obj/item/reagent_container/glass/bottle/antitoxin, VENDOR_ITEM_REGULAR), + list("Bottle (Dexalin)", round(scale * 4), /obj/item/reagent_container/glass/bottle/dexalin, VENDOR_ITEM_REGULAR), + list("Bottle (Inaprovaline)", round(scale * 4), /obj/item/reagent_container/glass/bottle/inaprovaline, VENDOR_ITEM_REGULAR), + list("Bottle (Kelotane)", round(scale * 4), /obj/item/reagent_container/glass/bottle/kelotane, VENDOR_ITEM_REGULAR), + list("Bottle (Oxycodone)", round(scale * 4), /obj/item/reagent_container/glass/bottle/oxycodone, VENDOR_ITEM_REGULAR), + list("Bottle (Peridaxon)", round(scale * 4), /obj/item/reagent_container/glass/bottle/peridaxon, VENDOR_ITEM_REGULAR), + list("Bottle (Tramadol)", round(scale * 4), /obj/item/reagent_container/glass/bottle/tramadol, VENDOR_ITEM_REGULAR), list("PILL BOTTLES", -1, null, null), - list("Pill Bottle (Bicaridine)", round(scale * 3), /obj/item/storage/pill_bottle/bicaridine, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Dexalin)", round(scale * 3), /obj/item/storage/pill_bottle/dexalin, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Dylovene)", round(scale * 3), /obj/item/storage/pill_bottle/antitox, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Inaprovaline)", round(scale * 3), /obj/item/storage/pill_bottle/inaprovaline, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Kelotane)", round(scale * 3), /obj/item/storage/pill_bottle/kelotane, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Peridaxon)", round(scale * 2), /obj/item/storage/pill_bottle/peridaxon, VENDOR_ITEM_REGULAR), - list("Pill Bottle (Tramadol)", round(scale * 3), /obj/item/storage/pill_bottle/tramadol, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Bicaridine)", round(scale * 2), /obj/item/storage/pill_bottle/bicaridine, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Dexalin)", round(scale * 2), /obj/item/storage/pill_bottle/dexalin, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Dylovene)", round(scale * 2), /obj/item/storage/pill_bottle/antitox, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Inaprovaline)", round(scale * 2), /obj/item/storage/pill_bottle/inaprovaline, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Kelotane)", round(scale * 2), /obj/item/storage/pill_bottle/kelotane, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Peridaxon)", round(scale * 1), /obj/item/storage/pill_bottle/peridaxon, VENDOR_ITEM_REGULAR), + list("Pill Bottle (Tramadol)", round(scale * 2), /obj/item/storage/pill_bottle/tramadol, VENDOR_ITEM_REGULAR), list("MEDICAL UTILITIES", -1, null, null), list("Emergency Defibrillator", round(scale * 3), /obj/item/device/defibrillator, VENDOR_ITEM_REGULAR), @@ -183,6 +183,7 @@ name = "\improper Wey-Chem Plus" desc = "Medical chemistry dispenser. Provided by Wey-Yu Pharmaceuticals Division(TM)." icon_state = "chem" + req_access = list(ACCESS_MARINE_CHEMISTRY) healthscan = FALSE chem_refill = list( @@ -220,6 +221,9 @@ /obj/structure/machinery/cm_vending/sorted/medical/no_access req_access = list() +/obj/structure/machinery/cm_vending/sorted/medical/bolted + wrenchable = FALSE + /obj/structure/machinery/cm_vending/sorted/medical/chemistry/no_access req_access = list() @@ -295,6 +299,9 @@ chem_refill = null stack_refill = null +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted + wrenchable = FALSE + /obj/structure/machinery/cm_vending/sorted/medical/blood/populate_product_list(scale) return diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 24f58c8f6ae3..1a9ec9156e20 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -41,6 +41,7 @@ list("M2C Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m2c, VENDOR_ITEM_REGULAR), list("M240 Incinerator Unit", round(scale * 2), /obj/item/storage/box/guncase/flamer, VENDOR_ITEM_REGULAR), list("M79 Grenade Launcher", round(scale * 3), /obj/item/storage/box/guncase/m79, VENDOR_ITEM_REGULAR), + list("XM51 Breaching Scattergun", round(scale * 3), /obj/item/storage/box/guncase/xm51, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", -1, null, null), list("M15 Fragmentation Grenade", round(scale * 2), /obj/item/explosive/grenade/high_explosive/m15, VENDOR_ITEM_REGULAR), @@ -55,7 +56,7 @@ list("M74 AGM-Star Shell", round(scale * 2), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), list("M74 AGM-Hornet Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR), list("M40 HIRR Baton Slug", round(scale * 8), /obj/item/explosive/grenade/slug/baton, VENDOR_ITEM_REGULAR), - list("M40 MFHS Metal Foam Grenade", round(scale * 3), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR), + list("M40 MFHS Metal Foam Grenade", round(scale * 6), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR), list("Plastic Explosives", round(scale * 3), /obj/item/explosive/plastic, VENDOR_ITEM_REGULAR), list("Breaching Charge", round(scale * 2), /obj/item/explosive/plastic/breaching_charge, VENDOR_ITEM_REGULAR), @@ -244,11 +245,13 @@ list("M41A MK1 AP Magazine (10x24mm)", round(scale * 2), /obj/item/ammo_magazine/rifle/m41aMK1/ap, VENDOR_ITEM_REGULAR), list("M56D Drum Magazine", round(scale * 2), /obj/item/ammo_magazine/m56d, VENDOR_ITEM_REGULAR), list("M2C Box Magazine", round(scale * 2), /obj/item/ammo_magazine/m2c, VENDOR_ITEM_REGULAR), + list("XM51 Magazine (16g)", round(scale * 3), /obj/item/ammo_magazine/rifle/xm51, VENDOR_ITEM_REGULAR), list("SHOTGUN SHELL BOXES", -1, null, null), list("Shotgun Shell Box (Buckshot x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), list("Shotgun Shell Box (Flechette x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), list("Shotgun Shell Box (Slugs x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (16g) (Breaching x 120)", 1, /obj/item/ammo_box/magazine/shotgun/light/breaching, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/cargo_ammo/stock(obj/item/item_to_stock, mob/user) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index e021b6fe0879..27c041312765 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -190,6 +190,11 @@ list("Falling Falcons Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR), list("USCM Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR), list("Bedroll", round(scale * 20), /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), + + list("OPTICS", -1, null, null, null), + list("Advanced Medical Optic (CORPSMAN ONLY)", round(scale * 4), /obj/item/device/helmet_visor/medical/advanced, VENDOR_ITEM_REGULAR), + list("Squad Optic", round(scale * 15), /obj/item/device/helmet_visor, VENDOR_ITEM_REGULAR), + ) //--------------SQUAD SPECIFIC VERSIONS-------------- @@ -274,6 +279,7 @@ list("M240 Incinerator Tank", round(scale * 3), /obj/item/ammo_magazine/flamer_tank, VENDOR_ITEM_REGULAR), list("M56D Drum Magazine", round(scale * 2), /obj/item/ammo_magazine/m56d, VENDOR_ITEM_REGULAR), list("M2C Box Magazine", round(scale * 2), /obj/item/ammo_magazine/m2c, VENDOR_ITEM_REGULAR), + list("Box of Breaching Shells (16g)", round(scale * 2), /obj/item/ammo_magazine/shotgun/light/breaching, VENDOR_ITEM_REGULAR), list("HIRR Baton Slugs", round(scale * 6), /obj/item/explosive/grenade/slug/baton, VENDOR_ITEM_REGULAR), list("M74 AGM-S Star Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), list("M74 AGM-S Hornet Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm index 8a1b77103cad..04061370168d 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm @@ -4,9 +4,6 @@ GLOBAL_LIST_INIT(cm_vending_gear_smartgun, list( list("SMARTGUN SET (MANDATORY)", 0, null, null, null), list("Essential Smartgunner Set", 0, /obj/item/storage/box/m56_system, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("SMARTGUN AMMUNITION", 0, null, null, null), - list("M56 Smartgun Drum", 15, /obj/item/ammo_magazine/smartgun, null, VENDOR_ITEM_RECOMMENDED), - list("GUN ATTACHMENTS (CHOOSE 1)", 0, null, null, null), list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/effects/acid_hole.dm b/code/game/objects/effects/acid_hole.dm index a4db9ef5c0e0..db24c1c9c56a 100644 --- a/code/game/objects/effects/acid_hole.dm +++ b/code/game/objects/effects/acid_hole.dm @@ -40,7 +40,7 @@ /obj/effect/acid_hole/attack_alien(mob/living/carbon/xenomorph/user) - if (!holed_wall) + if(!holed_wall) qdel(src) //no wall?! then cease existence... return @@ -49,6 +49,9 @@ expand_hole(user) return XENO_NO_DELAY_ACTION +/obj/effect/acid_hole/attack_larva(mob/living/carbon/xenomorph/larva/M) + attack_alien(M) + /obj/effect/acid_hole/proc/expand_hole(mob/living/carbon/xenomorph/user) if(user.action_busy || user.is_mob_incapacitated()) return diff --git a/code/game/objects/effects/decals/cleanable/blood/robots.dm b/code/game/objects/effects/decals/cleanable/blood/robots.dm index 1bbadb1461b6..3ee3c9e07f9a 100644 --- a/code/game/objects/effects/decals/cleanable/blood/robots.dm +++ b/code/game/objects/effects/decals/cleanable/blood/robots.dm @@ -3,11 +3,11 @@ desc = "It's a useless heap of junk... or is it?" icon = 'icons/mob/robots.dmi' icon_state = "gib1" - basecolor="#030303" + basecolor=COLOR_OIL random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") /obj/effect/decal/cleanable/blood/gibs/robot/update_icon() - color = "#FFFFFF" + color = COLOR_WHITE /obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like return @@ -39,7 +39,7 @@ /obj/effect/decal/cleanable/blood/oil name = "motor oil" desc = "It's black and greasy." - basecolor="#030303" + basecolor=COLOR_OIL /obj/effect/decal/cleanable/blood/oil/dry() return diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index cfe5f27da9a7..35e354c121bb 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -5,7 +5,7 @@ layer = ABOVE_TURF_LAYER anchored = TRUE -/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF",shade = "#000000", type = "rune") +/obj/effect/decal/cleanable/crayon/New(location, main = COLOR_WHITE,shade = COLOR_BLACK, type = "rune") ..() forceMove(location) diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 338f8b9a7e8e..4483d2fd7d24 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -95,11 +95,11 @@ return ..() /obj/effect/decal/mecha_wreckage/gygax - name = "Gygax wreckage" + name = "MAX wreckage" icon_state = "gygax-broken" /obj/effect/decal/mecha_wreckage/gygax/dark - name = "Dark Gygax wreckage" + name = "Dark MAX wreckage" icon_state = "darkgygax-broken" /obj/effect/decal/mecha_wreckage/marauder @@ -116,7 +116,7 @@ icon_state = "seraph-broken" /obj/effect/decal/mecha_wreckage/ripley - name = "Ripley wreckage" + name = "P-1000 wreckage" icon_state = "ripley-broken" /obj/effect/decal/mecha_wreckage/ripley/firefighter @@ -124,11 +124,11 @@ icon_state = "firefighter-broken" /obj/effect/decal/mecha_wreckage/ripley/deathripley - name = "Death-Ripley wreckage" + name = "Death-P-1000 wreckage" icon_state = "deathripley-broken" /obj/effect/decal/mecha_wreckage/durand - name = "Durand wreckage" + name = "MOX wreckage" icon_state = "durand-broken" /obj/effect/decal/mecha_wreckage/phazon @@ -136,7 +136,7 @@ icon_state = "phazon-broken" /obj/effect/decal/mecha_wreckage/odysseus - name = "Odysseus wreckage" + name = "Alice wreckage" icon_state = "odysseus-broken" /obj/effect/decal/mecha_wreckage/hoverpod diff --git a/code/game/objects/effects/decals/posters.dm b/code/game/objects/effects/decals/posters.dm index 7a8054efce1a..23f7b8c5296a 100644 --- a/code/game/objects/effects/decals/posters.dm +++ b/code/game/objects/effects/decals/posters.dm @@ -160,14 +160,14 @@ icon_state = "poster3" /obj/structure/sign/poster/music/Initialize() - serial_number = pick(3,5,25,26,29,38,39) + serial_number = pick(3,5,25,26,38,39) .=..() /obj/structure/sign/poster/pinup icon_state = "poster12" /obj/structure/sign/poster/pinup/Initialize() - serial_number = pick(12,16,17) + serial_number = pick(12,16,17,29) .=..() /obj/structure/sign/poster/propaganda diff --git a/code/game/objects/effects/effect_system/foam.dm b/code/game/objects/effects/effect_system/foam.dm index edee94cb3747..525cb8c731a9 100644 --- a/code/game/objects/effects/effect_system/foam.dm +++ b/code/game/objects/effects/effect_system/foam.dm @@ -156,7 +156,7 @@ // dense and opaque, but easy to break #define FOAMED_METAL_FIRE_ACT_DMG 50 -#define FOAMED_METAL_XENO_SLASH 0.8 +#define FOAMED_METAL_XENO_SLASH 1.75 #define FOAMED_METAL_ITEM_MELEE 2 #define FOAMED_METAL_BULLET_DMG 2 #define FOAMED_METAL_EXPLOSION_DMG 1 @@ -173,7 +173,7 @@ /obj/structure/foamed_metal/iron icon_state = "ironfoam" - health = 85 + health = 70 name = "foamed iron" desc = "A slightly stronger lightweight foamed iron wall." @@ -211,7 +211,7 @@ return FALSE /obj/structure/foamed_metal/attack_alien(mob/living/carbon/xenomorph/X, dam_bonus) - var/damage = (rand(X.melee_damage_lower, X.melee_damage_upper) + dam_bonus) + var/damage = ((round((X.melee_damage_lower+X.melee_damage_upper)/2)) + dam_bonus) //Frenzy bonus if(X.frenzy_aura > 0) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index 7457b4f5f147..c9e404ae5b60 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -4,7 +4,7 @@ // in case you wanted a vent to always smoke north for example ///////////////////////////////////////////// -/// Chance that cades block the gas. Smoke spread ticks are calculated very quickly so this has to be high to have a noticable effect. +/// Chance that cades block the gas. Smoke spread ticks are calculated very quickly so this has to be high to have a noticeable effect. #define BOILER_GAS_CADE_BLOCK_CHANCE 35 /obj/effect/particle_effect/smoke diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index 45cc6fd8b5fa..a7afb80ef080 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -402,6 +402,24 @@ name = "working joe late join" job = JOB_WORKING_JOE + +/obj/effect/landmark/late_join/cmo + name = "Chief Medical Officer late join" + job = JOB_CMO + +/obj/effect/landmark/late_join/researcher + name = "Researcher late join" + job = JOB_RESEARCHER + +/obj/effect/landmark/late_join/doctor + name = "Doctor late join" + job = JOB_DOCTOR + +/obj/effect/landmark/late_join/nurse + name = "Nurse late join" + job = JOB_NURSE + + /obj/effect/landmark/late_join/Initialize(mapload, ...) . = ..() if(squad) diff --git a/code/game/objects/effects/landmarks/survivor_spawner.dm b/code/game/objects/effects/landmarks/survivor_spawner.dm index a53fead0d3bf..39c7dbffa6ee 100644 --- a/code/game/objects/effects/landmarks/survivor_spawner.dm +++ b/code/game/objects/effects/landmarks/survivor_spawner.dm @@ -76,7 +76,7 @@ intro_text = list("

      You are a survivor of a crash landing!

      ",\ "You are NOT aware of the xenomorph threat.",\ "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") - story_text = "You are a PMC from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconcious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." + story_text = "You are a PMC from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." roundstart_damage_min = 3 roundstart_damage_max = 10 roundstart_damage_times = 2 @@ -89,7 +89,7 @@ intro_text = list("

      You are a survivor of a crash landing!

      ",\ "You are NOT aware of the xenomorph threat.",\ "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") - story_text = "You are a PMC medic from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconcious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." + story_text = "You are a PMC medic from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." roundstart_damage_min = 3 roundstart_damage_max = 10 roundstart_damage_times = 2 @@ -102,7 +102,7 @@ intro_text = list("

      You are a survivor of a crash landing!

      ",\ "You are NOT aware of the xenomorph threat.",\ "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") - story_text = "You are a PMC engineer from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconcious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." + story_text = "You are a PMC engineer from Weyland-Yutani. Your ship was enroute to Solaris Ridge to escort an Assistant Manager. On the way, your ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, your pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. Your squadmates lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You need to find out what happened to the colony, see if you can find any of your squadmates, and find a way to contact Weyland-Yutani." roundstart_damage_min = 3 roundstart_damage_max = 10 roundstart_damage_times = 2 @@ -115,7 +115,7 @@ intro_text = list("

      You are a survivor of a crash landing!

      ",\ "You are NOT aware of the xenomorph threat.",\ "Your primary objective is to heal up and survive. If you want to assault the hive - adminhelp.") - story_text = "You are an Assistant Manager from Weyland-Yutani. You were being escorted onboard a PMC ship to Solaris Ridge. On the way, the ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, the pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconcious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. The shipcrew lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You must get up and find a way to contact Weyland-Yutani." + story_text = "You are an Assistant Manager from Weyland-Yutani. You were being escorted onboard a PMC ship to Solaris Ridge. On the way, the ship received a distress signal from the colony about an attack. Worried that it might be a CLF attack, the pilot set full speed for the colony. However, during atmospheric entry the engine failed and you fell unconscious from the G-Forces. You wake up wounded... and see that the ship has crashed onto the colony. The shipcrew lie dead beside you, but there's some missing. Perhaps they survived and moved elsewhere? You must get up and find a way to contact Weyland-Yutani." roundstart_damage_min = 3 roundstart_damage_max = 10 roundstart_damage_times = 2 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 7cb2781b253b..fcd431c33d26 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -275,7 +275,7 @@ cases. Override_icon_state should be a list.*/ size = "huge" if(SIZE_MASSIVE) size = "massive" - . += "This is a [blood_color ? blood_color != "#030303" ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." + . += "This is a [blood_color ? blood_color != COLOR_OIL ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." if(desc) . += desc if(desc_lore) diff --git a/code/game/objects/items/books/manuals.dm b/code/game/objects/items/books/manuals.dm index 0854d2ec1b06..3140d0e30ca9 100644 --- a/code/game/objects/items/books/manuals.dm +++ b/code/game/objects/items/books/manuals.dm @@ -8,6 +8,7 @@ /// 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified unique = 1 + /obj/item/book/manual/engineering_construction name = "Station Repairs and Construction" icon_state ="bookEngineering" @@ -28,161 +29,6 @@ "} -/obj/item/book/manual/engineering_particle_accelerator - name = "Particle Accelerator User's Guide" - icon_state ="bookParticleAccelerator" - author = "Engineering Encyclopedia" - title = "Particle Accelerator User's Guide" - - dat = {" - - - - - -

      Experienced User's Guide

      - -

      Setting up the accelerator

      - -
        -
      1. Wrench all pieces to the floor
      2. -
      3. Add wires to all the pieces
      4. -
      5. Close all the panels with your screwdriver
      6. -
      - -

      Using the accelerator

      - -
        -
      1. Open the control panel
      2. -
      3. Set the speed to 2
      4. -
      5. Start firing at the singularity generator
      6. -
      7. When the singularity reaches a large enough size so it starts moving on it's own set the speed down to 0, but don't shut it off
      8. -
      9. Remember to wear a radiation suit when working with this machine... we did tell you that at the start, right?
      10. -
      - - - - "} - - -/obj/item/book/manual/supermatter_engine - name = "Supermatter Engine User's Guide" - icon_state = "bookSupermatter" - author = "Waleed Asad" - title = "Supermatter Engine User's Guide" - - dat = {" - - - - -
      - Engineering notes on the single-stage supermatter engine,
      - -Waleed Asad

      - - Station,
      - Exodus

      - - A word of caution, do not enter the engine room for any reason without radiation protection and meson scanners on. The status of the engine may be unpredictable even when you believe it is 'off.' This is an important level of personal protection.

      - - The engine has two basic modes of functionality. It has been observed that it is capable of both a safe level of operation and a modified, high output mode.

      - -

      Heat-Primary Mode

      - Notes on starting the basic function mode -
        -
      1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
      2. - -
      3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
      4. - -
      5. Apply N2 gas: Retrieve the two N2 canisters from storage and bring them to the engine room. Attach one of them to the input section of the engine gas system located next to the collectors. Keep it attached until the N2 pressure is low enough to turn the canister light red. Replace it with the second canister to keep N2 pressure at optimal levels.
      6. - -
      7. Open supermatter shielding: This button is located in the engine room, to the left of the engine monitoring room blast doors. At this point, the supermatter chamber is mostly a gas mixture of N2 and is producing no radiation. It is considered 'safe' up until this point. Do not forget radiation shielding and meson scanners.
      8. - -
      9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. It is important to move to this step quickly. The onboard SMES units may not have enough power to run the emitters if left alone too long on-station. This engine can produce enough power on its own to run the entire station, ignoring the SMES units completely, and is wired to do so.
      10. - -
      11. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures).
      12. - -
      13. Begin secondary emitter burst series: Before firing the emitter again, check the power in the line with a multimeter (Do not forget electrical gloves). The engine is running at high efficiency when the value exceeds 200,000 power units.
      14. - -
      15. Maintain engine power: When power in the lines get low, add an additional emitter burst series to bring power to normal levels.
      16. -
      - - -

      O2-Reaction Mode

      - - The second mode for running the engine uses a gas mixture to produce a reaction within the supermatter. This mode requires the CE's or Atmospheric's help to set up. This is called 'O2-Reaction Mode.'

      - - THIS MODE CAN CAUSE A RUNAWAY REACTION, LEADING TO CATASTROPHIC FAILURE IF NOT MAINTAINED. NEVER FORGET ABOUT THE ENGINE IN THIS MODE.

      - - Additionally, this mode can be used for what is called a 'Cold Start.' If the station has no power in the SMES to run the emitters, using this mode will allow enough power output to run them, and quickly reach an acceptable level of power output.

      - -
        -
      1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
      2. - -
      3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
      4. - -
      5. Modify the engine room filters: Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering carbon molecules. O2-Reaction Mode produces far more plasma than Heat-Primary, therefore filtering it off is essential.
      6. - -
      7. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures). If you check the power in the system lines at this point, you will find that it is constantly going up. Indeed, with just the addition of O2 to the supermatter, it will begin outputting power.
      8. - -
      9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. Do not over power the supermatter. The reaction is self sustaining and propagating. As long as O2 is in the chamber, it will continue outputting MORE power.
      10. - -
      11. Maintain follow up operations: Remember to check the temperature of the core gas and switch to the Heat-Primary function, or vent the core room when problems begin if required.
      12. -

      - -

      Notes on Supermatter Reaction Function and Drawbacks

      - - After several hours of observation, an interesting phenomenon was witnessed. The supermatter undergoes a constant, self-sustaining reaction when given an extremely high O2 concentration. Anything about 80% or higher typically will cause this reaction. The supermatter will continue to react whenever this gas mixture is in the same room as the supermatter.

      - - To understand why O2-Reaction mode is dangerous, the core principle of the supermatter must be understood. The supermatter emits three things when 'not safe,' that is any time it is giving off power. These things are:
      - -
        -
      • Radiation (which is converted into power by the collectors)

      • -
      • Heat (which is removed via the gas exchange system and coolers)

      • -
      • External gas (in the form of plasma and O2)

      • -

      - - When in Heat-Primary mode, far more heat and plasma are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of plasma are produced, however HUGE amounts of energy leaving the supermatter is in the form of radiation.

      - - The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what is called a 'critical gas mixture.' This is the point at which the constant adding of plasma to the mixture of air around the supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the supermatter switches to its primary mode of operation wherein huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the supermatter chamber will occur. This will lead to a spark-up, igniting the plasma in the supermatter chamber, wildly increasing both pressure and temperature.

      - - While the O2-Reaction mode is dangerous, it does produce heavy amounts of energy. Consider using this mode only in short amounts to fill the SMES, and switch back later in the shift to keep things flowing normally.

      - - -

      Notes on Supermatter Containment and Emergency Procedures

      - - While a constant vigil on the supermatter is not required, regular checkups are important. Check the temperature of gas leaving the supermatter chamber for unsafe levels and ensure that the plasma in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any toxin scientist can tell you, even low amounts of plasma can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.

      - - The supermatter is strong, but not invincible. When the supermatter is heated too much, its crystal structure will attempt to liquefy. The change in atomic structure of the supermatter leads to a single reaction, a massive explosion. The computer chip attached to the supermatter core will warn the station when stability is threatened. It will then offer a second warning, when things have become dangerously close to total destruction of the core.

      - - Located both within the CE office and engine room is the engine ventilatory control button. This button allows the core vent controls to be accessed, venting the room to space. Remember however, that this process takes time. If a fire is raging, and the pressure is higher than fathomable, it will take a great deal of time to vent the room. Also located in the CE's office is the emergency core eject button. A new core can be ordered from cargo. It is often not worth the lives of the crew to hold on to it, not to mention the structural damage. However, if by some mistake the supermatter is pushed off or removed from the mass driver it sits on, manual reposition will be required. Which is very dangerous and often leads to death.

      - - The supermatter is extremely dangerous. More dangerous than people give it credit for. It can destroy you in an instant, without hesitation, reducing you to a pile of dust. When working closely with supermatter, it is suggested to get a genetic backup and do not wear any items of value to you. The supermatter core can be pulled if grabbed properly by the base, but pushing is not possible.

      - - -

      In Closing

      - - Remember that the supermatter is dangerous, and the core is dangerous still. Venting the core room is always an option if you are even remotely worried, utilizing Atmospherics to properly ready the room once more for core function. It is always a good idea to check up regularly on the temperature of gas leaving the chamber, as well as the power in the system lines. Lastly, once again remember, never touch the supermatter with anything. Ever.

      - - -Waleed Asad, Senior Engine Technician - - "} - /obj/item/book/manual/engineering_hacking name = "Hacking" icon_state ="bookHacking" @@ -203,150 +49,6 @@ "} -/obj/item/book/manual/engineering_singularity_safety - name = "Singularity Safety in Special Circumstances" - icon_state ="bookEngineeringSingularitySafety" - author = "Engineering Encyclopedia" - title = "Singularity Safety in Special Circumstances" - - dat = {" - - - - -

      Singularity Safety in Special Circumstances

      - -

      Power outage

      - - A power problem has made the entire station lose power? Could be station-wide wiring problems or syndicate power sinks. In any case follow these steps: - -
        -
      1. PANIC!
      2. -
      3. Get your ass over to engineering! QUICKLY!!!
      4. -
      5. Get to the Area Power Controller which controls the power to the emitters.
      6. -
      7. Swipe it with your ID card - if it doesn't unlock, continue with step 15.
      8. -
      9. Open the console and disengage the cover lock.
      10. -
      11. Pry open the APC with a Crowbar.
      12. -
      13. Take out the empty power cell.
      14. -
      15. Put in the new, full power cell - if you don't have one, continue with step 15.
      16. -
      17. Quickly put on a Radiation suit.
      18. -
      19. Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
      20. -
      21. Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering APC is wired to the same powernet, which the powersink is on, you have to remove the piece of wire which links the APC to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
      22. -
      23. Grab your crowbar and pry away the tile closest to the APC.
      24. -
      25. Use the wirecutters to cut the wire which is connecting the grid to the terminal.
      26. -
      27. Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
      28. -
      29. GET THE FUCK OUT OF THERE!!!
      30. -
      - -

      Shields get damaged

      - -
        -
      1. GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
      2. -
      - - - "} - -/obj/item/book/manual/medical_cloning - name = "Cloning Techniques of the 26th Century" - icon_state ="bookCloning" - author = "Medical Journal, volume 3" - title = "Cloning Techniques of the 26th Century" - - dat = {" - - - - - -

      How to Clone People

      - So there are 50 dead people lying on the floor, chairs are spinning like no tomorrow and you haven't the foggiest idea of what to do? Not to worry! - This guide is intended to teach you how to clone people and how to do it right, in a simple, step-by-step process! If at any point of the guide you have a mental meltdown, - genetics probably isn't for you and you should get a job-change as soon as possible before you're sued for malpractice. - -
        -
      1. Acquire body
      2. -
      3. Strip body
      4. -
      5. Put body in cloning machine
      6. -
      7. Scan body
      8. -
      9. Clone body
      10. -
      11. Get clean Structural Enzymes for the body
      12. -
      13. Put body in morgue
      14. -
      15. Await cloned body
      16. -
      17. Cryo and use the clean SE injector
      18. -
      19. Give person clothes back
      20. -
      21. Send person on their way
      22. -
      - -

      Step 1: Acquire body

      - This is pretty much vital for the process because without a body, you cannot clone it. Usually, bodies will be brought to you, so you do not need to worry so much about this step. If you already have a body, great! Move on to the next step. - -

      Step 2: Strip body

      - The cloning machine does not like abiotic items. What this means is you can't clone anyone if they're wearing clothes or holding things, so take all of it off. If it's just one person, it's courteous to put their possessions in the closet. - If you have about seven people awaiting cloning, just leave the piles where they are, but don't mix them around and for God's sake don't let people in to steal them. - -

      Step 3: Put body in cloning machine

      - Grab the body and then put it inside the DNA modifier. If you cannot do this, then you messed up at Step 2. Go back and check you took EVERYTHING off - a commonly missed item is their headset. - -

      Step 4: Scan body

      - Go onto the computer and scan the body by pressing 'Scan - <Subject Name Here>.' If you're successful, they will be added to the records (note that this can be done at any time, even with living people, - so that they can be cloned without a body in the event that they are lying dead on port solars and didn't turn on their suit sensors)! - If not, and it says "Error: Mental interface failure.", then they have left their bodily confines and are one with the spirits. If this happens, just shout at them to get back in their body, - click 'Refresh' and try scanning them again. If there's no success, threaten them with gibbing. - Still no success? Skip over to Step 7 and don't continue after it, as you have an unresponsive body and it cannot be cloned. - If you got "Error: Unable to locate valid genetic data.", you are trying to clone a monkey - start over. - -

      Step 5: Clone body

      - Now that the body has a record, click 'View Records,' click the subject's name, and then click 'Clone' to start the cloning process. Congratulations! You're halfway there. - Remember not to 'Eject' the cloning pod as this will kill the developing clone and you'll have to start the process again. - -

      Step 6: Get clean SEs for body

      - Cloning is a finicky and unreliable process. Whilst it will most certainly bring someone back from the dead, they can have any number of nasty disabilities given to them during the cloning process! - For this reason, you need to prepare a clean, defect-free Structural Enzyme (SE) injection for when they're done. If you're a competent Geneticist, you will already have one ready on your working computer. - If, for any reason, you do not, then eject the body from the DNA modifier (NOT THE CLONING POD) and take it next door to the Genetics research room. Put the body in one of those DNA modifiers and then go onto the console. - Go into View/Edit/Transfer Buffer, find an open slot and click "SE" to save it. Then click 'Injector' to get the SEs in syringe form. Put this in your pocket or something for when the body is done. - -

      Step 7: Put body in morgue

      - Now that the cloning process has been initiated and you have some clean Structural Enzymes, you no longer need the body! Drag it to the morgue and tell the Chef over the radio that they have some fresh meat waiting for them in there. - To put a body in a morgue bed, simply open the tray, grab the body, put it on the open tray, then close the tray again. Use one of the nearby pens to label the bed "CHEF MEAT" in order to avoid confusion. - -

      Step 8: Await cloned body

      - Now go back to the lab and wait for your patient to be cloned. It won't be long now, I promise. - -

      Step 9: Cryo and clean SE injector on person

      - Has your body been cloned yet? Great! As soon as the guy pops out, grab them and stick them in cryo. Clonexadone and Cryoxadone help rebuild their genetic material. Then grab your clean SE injector and jab it in them. Once you've injected them, - they now have clean Structural Enzymes and their defects, if any, will disappear in a short while. - -

      Step 10: Give person clothes back

      - Obviously the person will be naked after they have been cloned. Provided you weren't an irresponsible little shit, you should have protected their possessions from thieves and should be able to give them back to the patient. - No matter how cruel you are, it's simply against protocol to force your patients to walk outside naked. - -

      Step 11: Send person on their way

      - Give the patient one last check-over - make sure they don't still have any defects and that they have all their possessions. Ask them how they died, if they know, so that you can report any foul play over the radio. - Once you're done, your patient is ready to go back to work! Chances are they do not have Medbay access, so you should let them out of Genetics and the Medbay main entrance. - -

      If you've gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target. - - - - "} - - /obj/item/book/manual/ripley_build_and_repair name = "APLU \"Ripley\" Construction and Operation Manual" icon_state ="book" @@ -430,271 +132,17 @@ author = "Dr. L. Ight" title = "Research and Development 101" - dat = {" - - - - - -

      Science For Dummies

      - So you want to further SCIENCE? Good man/woman/thing! However, SCIENCE is a complicated process even though it's quite easy. For the most part, it's a three step process: -
        -
      1. Deconstruct items in the Destructive Analyzer to advance technology or improve the design.
      2. -
      3. Build unlocked designs in the Protolathe and Circuit Imprinter.
      4. -
      5. Repeat!
      6. -
      - - Those are the basic steps to furthering science. What do you do science with, however? Well, you have four major tools: R&D Console, the Destructive Analyzer, the Protolathe, and the Circuit Imprinter. - -

      The R&D Console

      - The R&D console is the cornerstone of any research lab. It is the central system from which the Destructive Analyzer, Protolathe, and Circuit Imprinter (your R&D systems) are controlled. More on those systems in their own sections. - On its own, the R&D console acts as a database for all your technological gains and new devices you discover. So long as the R&D console remains intact, you'll retain all that SCIENCE you've discovered. Protect it though, - because if it gets damaged, you'll lose your data! - In addition to this important purpose, the R&D console has a disk menu that lets you transfer data from the database onto disk or from the disk into the database. - It also has a settings menu that lets you re-sync with nearby R&D devices (if they've become disconnected), lock the console from the unworthy, - upload the data to all other R&D consoles in the network (all R&D consoles are networked by default), connect/disconnect from the network, and purge all data from the database.

      - - NOTE: The technology list screen, circuit imprinter, and protolathe menus are accessible by non-scientists. This is intended to allow 'public' systems for the plebians to utilize some new devices. - -

      Destructive Analyzer

      - This is the source of all technology. Whenever you put a handheld object in it, it analyzes it and determines what sort of technological advancements you can discover from it. If the technology of the object is equal or higher then your current knowledge, - you can destroy the object to further those sciences. - Some devices (notably, some devices made from the protolathe and circuit imprinter) aren't 100% reliable when you first discover them. If these devices break down, you can put them into the Destructive Analyzer and improve their reliability rather than further science. - If their reliability is high enough, it'll also advance their related technologies. - -

      Circuit Imprinter

      - This machine, along with the Protolathe, is used to actually produce new devices. The Circuit Imprinter takes glass and various chemicals (depends on the design) to produce new circuit boards to build new machines or computers. It can even be used to print AI modules. - -

      Protolathe

      - This machine is an advanced form of the Autolathe that produce non-circuit designs. Unlike the Autolathe, it can use processed metal, glass, solid phoron, silver, gold, and diamonds along with a variety of chemicals to produce devices. - The downside is that, again, not all devices you make are 100% reliable when you first discover them. - -

      Reliability and You

      - As it has been stated, many devices, when they're first discovered, do not have a 100% reliability. Instead, - the reliability of the device is dependent upon a base reliability value, whatever improvements to the design you've discovered through the Destructive Analyzer, - and any advancements you've made with the device's source technologies. To be able to improve the reliability of a device, you have to use the device until it breaks beyond repair. Once that happens, you can analyze it in a Destructive Analyzer. - Once the device reaches a certain minimum reliability, you'll gain technological advancements from it. - -

      Building a Better Machine

      - Many machines produced from circuit boards inserted into a machine frames require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. - If you use these parts when constructing something, its attributes may be improved. - For example, if you use an advanced matter bin when constructing an autolathe (rather than a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: - Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine. - - - "} - - -/obj/item/book/manual/robotics_cyborgs - name = "Cyborgs for Dummies" - icon_state = "borgbook" - author = "XISC" - title = "Cyborgs for Dummies" - - dat = {" - - - - - -

      Cyborgs for Dummies

      - -

      Chapters

      - -
        -
      1. Cyborg Related Equipment
      2. -
      3. Cyborg Modules
      4. -
      5. Cyborg Construction
      6. -
      7. Cyborg Maintenance
      8. -
      9. Cyborg Repairs
      10. -
      11. In Case of Emergency
      12. -
      - - -

      Cyborg Related Equipment

      - -

      Exosuit Fabricator

      - The Exosuit Fabricator is the most important piece of equipment related to cyborgs. It allows the construction of the core cyborg parts. Without these machines, cyborgs cannot be built. It seems that they may also benefit from advanced research techniques. - -

      Cyborg Recharging Station

      - This useful piece of equipment will suck power out of the power systems to charge a cyborg's power cell back up to full charge. - -

      Robotics Control Console

      - This useful piece of equipment can be used to immobilize or destroy a cyborg. A word of warning: Cyborgs are expensive pieces of equipment, do not destroy them without good reason, or Weyland-Yutani may see to it that it never happens again. - - -

      Cyborg Modules

      - When a cyborg is created it picks out of an array of modules to designate its purpose. There are 6 different cyborg modules. - -

      Standard Cyborg

      - The standard cyborg module is a multi-purpose cyborg. It is equipped with various modules, allowing it to do basic tasks.
      A Standard Cyborg comes with: -
        -
      • Crowbar
      • -
      • Stun Baton
      • -
      • Health Analyzer
      • -
      • Fire Extinguisher
      • -
      - -

      Engineering Cyborg

      - The Engineering cyborg module comes equipped with various engineering-related tools to help with engineering-related tasks.
      An Engineering Cyborg comes with: -
        -
      • A basic set of engineering tools
      • -
      • Metal Synthesizer
      • -
      • Reinforced Glass Synthesizer
      • -
      • An RCD
      • -
      • Wire Synthesizer
      • -
      • Fire Extinguisher
      • -
      • Built-in Optical Meson Scanners
      • -
      - -

      Mining Cyborg

      - The Mining Cyborg module comes equipped with the latest in mining equipment. They are efficient at mining due to no need for oxygen, but their power cells limit their time in the mines.
      A Mining Cyborg comes with: -
        -
      • Jackhammer
      • -
      • Shovel
      • -
      • Mining Satchel
      • -
      • Built-in Optical Meson Scanners
      • -
      - -

      Security Cyborg

      - The Security Cyborg module is equipped with effective security measures used to apprehend and arrest criminals without harming them a bit.
      A Security Cyborg comes with: -
        -
      • Stun Baton
      • -
      • Handcuffs
      • -
      • Taser
      • -
      - -

      Janitor Cyborg

      - The Janitor Cyborg module is equipped with various cleaning-facilitating devices.
      A Janitor Cyborg comes with: -
        -
      • Mop
      • -
      • Hand Bucket
      • -
      • Cleaning Spray Synthesizer and Spray Nozzle
      • -
      - -

      Service Cyborg

      - The service cyborg module comes ready to serve your human needs. It includes various entertainment and refreshment devices. Occasionally some service cyborgs may have been referred to as "Bros."
      A Service Cyborg comes with: -
        -
      • Shaker
      • -
      • Industrial Dropper
      • -
      • Platter
      • -
      • Beer Synthesizer
      • -
      • Zippo Lighter
      • -
      • Rapid-Service-Fabricator (Produces various entertainment and refreshment objects)
      • -
      • Pen
      • -
      - -

      Cyborg Construction

      - Cyborg construction is a rather easy process, requiring a decent amount of metal and a few other supplies.
      The required materials to make a cyborg are: -
        -
      • Metal
      • -
      • Two Flashes
      • -
      • One Power Cell (Preferably rated to 15000w)
      • -
      • Some electrical wires
      • -
      • One Human Brain
      • -
      • One Man-Machine Interface
      • -
      - Once you have acquired the materials, you can start on construction of your cyborg.
      To construct a cyborg, follow the steps below: -
        -
      1. Start the Exosuit Fabricators constructing all of the cyborg parts
      2. -
      3. While the parts are being constructed, take your human brain, and place it inside the Man-Machine Interface
      4. -
      5. Once you have a Robot Head, place your two flashes inside the eye sockets
      6. -
      7. Once you have your Robot Chest, wire the Robot chest, then insert the power cell
      8. -
      9. Attach all of the Robot parts to the Robot frame
      10. -
      11. Insert the Man-Machine Interface (With the Brain inside) into the Robot Body
      12. -
      13. Congratulations! You have a new cyborg!
      14. -
      - -

      Cyborg Maintenance

      - Occasionally Cyborgs may require maintenance of a couple types, this could include replacing a power cell with a charged one, or possibly maintaining the cyborg's internal wiring. - -

      Replacing a Power Cell

      - Replacing a Power cell is a common type of maintenance for cyborgs. It usually involves replacing the cell with a fully charged one, or upgrading the cell with a larger capacity cell.
      The steps to replace a cell are as follows: -
        -
      1. Unlock the Cyborg's Interface by swiping your ID on it
      2. -
      3. Open the Cyborg's outer panel using a crowbar
      4. -
      5. Remove the old power cell
      6. -
      7. Insert the new power cell
      8. -
      9. Close the Cyborg's outer panel using a crowbar
      10. -
      11. Lock the Cyborg's Interface by swiping your ID on it, this will prevent non-qualified personnel from attempting to remove the power cell
      12. -
      - -

      Exposing the Internal Wiring

      - Exposing the internal wiring of a cyborg is fairly easy to do, and is mainly used for cyborg repairs.
      You can easily expose the internal wiring by following the steps below: -
        -
      1. Follow Steps 1 - 3 of "Replacing a Cyborg's Power Cell"
      2. -
      3. Open the cyborg's internal wiring panel by using a screwdriver to unsecure the panel
      4. -
      - To re-seal the cyborg's internal wiring: -
        -
      1. Use a screwdriver to secure the cyborg's internal panel
      2. -
      3. Follow steps 4 - 6 of "Replacing a Cyborg's Power Cell" to close up the cyborg
      4. -
      - -

      Cyborg Repairs

      - Occasionally a Cyborg may become damaged. This could be in the form of impact damage from a heavy or fast-travelling object, or it could be heat damage from high temperatures, or even lasers or Electromagnetic Pulses (EMPs). - -

      Dents

      - If a cyborg becomes damaged due to impact from heavy or fast-moving objects, it will become dented. Sure, a dent may not seem like much, but it can compromise the structural integrity of the cyborg, possibly causing a critical failure. - Dents in a cyborg's frame are rather easy to repair, all you need is to apply a blowtorch to the dented area, and the high-tech cyborg frame will repair the dent under the heat of the welder. - -

      Excessive Heat Damage

      - If a cyborg becomes damaged due to excessive heat, it is likely that the internal wires will have been damaged. You must replace those wires to ensure that the cyborg remains functioning properly.
      To replace the internal wiring follow the steps below: -
        -
      1. Unlock the Cyborg's Interface by swiping your ID
      2. -
      3. Open the Cyborg's External Panel using a crowbar
      4. -
      5. Remove the Cyborg's Power Cell
      6. -
      7. Using a screwdriver, expose the internal wiring of the Cyborg
      8. -
      9. Replace the damaged wires inside the cyborg
      10. -
      11. Secure the internal wiring cover using a screwdriver
      12. -
      13. Insert the Cyborg's Power Cell
      14. -
      15. Close the Cyborg's External Panel using a crowbar
      16. -
      17. Lock the Cyborg's Interface by swiping your ID
      18. -
      - These repair tasks may seem difficult, but are essential to keep your cyborgs running at peak efficiency. + dat = {" -

      In Case of Emergency

      - In case of emergency, there are a few steps you can take. + + -

      "Rogue" Cyborgs

      - If the cyborgs seem to become "rogue", they may have non-standard laws. In this case, use extreme caution. - To repair the situation, follow these steps: -
        -
      1. Locate the nearest robotics console
      2. -
      3. Determine which cyborgs are "Rogue"
      4. -
      5. Press the lockdown button to immobilize the cyborg
      6. -
      7. Locate the cyborg
      8. -
      9. Expose the cyborg's internal wiring
      10. -
      11. Check to make sure the LawSync and AI Sync lights are lit
      12. -
      13. If they are not lit, pulse the LawSync wire using a multitool to enable the cyborg's LawSync
      14. -
      15. Proceed to a cyborg upload console. Weyland-Yutani usually places these in the same location as AI upload consoles.
      16. -
      17. Use a "Reset" upload moduleto reset the cyborg's laws
      18. -
      19. Proceed to a Robotics Control console
      20. -
      21. Remove the lockdown on the cyborg
      22. -
      + + + -

      As a last resort

      - If all else fails in a case of cyborg-related emergency, there may be only one option. Using a Robotics Control console, you may have to remotely detonate the cyborg. -

      WARNING:

      Do not detonate a borg without an explicit reason for doing so. Cyborgs are expensive pieces of Weyland-Yutani equipment, and you may be punished for detonating them without reason. + - - "} @@ -718,6 +166,7 @@ "} + /obj/item/book/manual/marine_law name = "Marine Law" desc = "A set of guidelines for keeping law and order on military vessels." @@ -982,6 +431,7 @@ "} + /obj/item/book/manual/nuclear name = "Fission Mailed: Nuclear Sabotage 101" icon_state ="bookNuclear" @@ -1033,6 +483,7 @@ "} + /obj/item/book/manual/atmospipes name = "Pipes and You: Getting To Know Your Scary Tools" icon_state = "pipingbook" @@ -1140,6 +591,7 @@ "} + /obj/item/book/manual/evaguide name = "EVA Gear and You: Not Spending All Day Inside" icon_state = "evabook" @@ -1244,10 +696,6 @@ "} - - - - /obj/item/book/manual/orbital_cannon_manual name = "USCM Orbital Bombardment System Manual" icon_state = "bookEngineering" @@ -1299,6 +747,7 @@ "} + /obj/item/book/manual/orbital_cannon_manual/New() . = ..() diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 5f58a3b1d292..9addf3346a39 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -243,11 +243,13 @@ name = "\improper CMB marshal gold badge" desc = "A coveted gold badge signifying that the wearer is one of the few CMB Marshals patroling the outer rim. It is a sign of justice, authority, and protection. Protecting those who can't. This badge represents a commitment to a sworn oath always kept." icon_state = "cmbmar" + paygrade = PAY_SHORT_CMBM /obj/item/card/id/deputy name = "\improper CMB deputy silver badge" desc = "The silver badge which represents that the wearer is a CMB Deputy. It is a sign of justice, authority, and protection. Protecting those who can't. This badge represents a commitment to a sworn oath always kept." icon_state = "cmbdep" + paygrade = PAY_SHORT_CMBD /obj/item/card/id/general name = "general officer holo-badge" @@ -269,79 +271,51 @@ /obj/item/card/id/provost/New() access = get_access(ACCESS_LIST_MARINE_ALL) -/obj/item/card/id/syndicate +/obj/item/card/id/adaptive name = "agent card" access = list(ACCESS_ILLEGAL_PIRATE) - var/registered_user=null -/obj/item/card/id/syndicate/New(mob/user as mob) +/obj/item/card/id/adaptive/New(mob/user as mob) ..() if(!QDELETED(user)) // Runtime prevention on laggy starts or where users log out because of lag at round start. - registered_name = ishuman(user) ? user.real_name : user.name - else - registered_name = "Agent Card" + registered_name = ishuman(user) ? user.real_name : "Unknown" assignment = "Agent" name = "[registered_name]'s ID Card ([assignment])" -/obj/item/card/id/syndicate/afterattack(obj/item/O as obj, mob/user as mob, proximity) - if(!proximity) return +/obj/item/card/id/adaptive/afterattack(obj/item/O as obj, mob/user as mob, proximity) + if(!proximity) + return if(istype(O, /obj/item/card/id)) - var/obj/item/card/id/I = O - src.access |= I.access - if(istype(user, /mob/living) && user.mind) - to_chat(usr, SPAN_NOTICE(" The card's microscanners activate as you pass it over the ID, copying its access.")) - -/obj/item/card/id/syndicate/attack_self(mob/user as mob) - if(!src.registered_name) - //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak - var t = reject_bad_name(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)) - if(!t) //Same as mob/new_player/prefrences.dm - alert("Invalid name.") - return - src.registered_name = t - - var u = strip_html(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Agent")) - if(!u) - alert("Invalid assignment.") - src.registered_name = "" - return - src.assignment = u - src.name = "[src.registered_name]'s ID Card ([src.assignment])" - to_chat(user, SPAN_NOTICE(" You successfully forge the ID card.")) - registered_user = user - else if(!registered_user || registered_user == user) - - if(!registered_user) registered_user = user // - - switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) - if("Rename") - var t = strip_html(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name),26) - if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm - alert("Invalid name.") - return - src.registered_name = t - - var u = strip_html(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")) - if(!u) - alert("Invalid assignment.") - return - src.assignment = u - src.name = "[src.registered_name]'s ID Card ([src.assignment])" - to_chat(user, SPAN_NOTICE(" You successfully forge the ID card.")) + var/obj/item/card/id/target_id = O + access |= target_id.access + if(ishuman(user)) + to_chat(user, SPAN_NOTICE("The card's microscanners activate as you pass it over the ID, copying its access.")) + +/obj/item/card/id/adaptive/attack_self(mob/user as mob) + switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) + if("Rename") + var/new_name = strip_html(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name),26) + if(!new_name || new_name == "Unknown" || new_name == "floor" || new_name == "wall" || new_name == "r-wall") //Same as mob/new_player/prefrences.dm + to_chat(user, SPAN_WARNING("Invalid Name.")) return - if("Show") - ..() - else - ..() + var/new_job = strip_html(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")) + if(!new_job) + to_chat(user, SPAN_WARNING("Invalid Assignment.")) + return + var/new_rank = strip_html(input(user, "What paygrade do would you like to put on this card?\nNote: This must be the shorthand version of the grade, I.E CIV for Civillian or ME1 for Marine Private", "Agent card paygrade assignment", PAY_SHORT_CIV)) + if(!new_rank || !(new_rank in GLOB.paygrades)) + to_chat(user, SPAN_WARNING("Invalid Paygrade.")) + return -/obj/item/card/id/syndicate_command - name = "syndicate ID card" - desc = "An ID straight from the Syndicate." - registered_name = "Syndicate" - assignment = "Syndicate Overlord" - access = list(ACCESS_ILLEGAL_PIRATE) + registered_name = new_name + assignment = new_job + name = "[registered_name]'s ID Card ([assignment])" + paygrade = new_rank + to_chat(user, SPAN_NOTICE("You successfully forge the ID card.")) + return + ..() /obj/item/card/id/captains_spare name = "captain's spare ID" diff --git a/code/game/objects/items/circuitboards/mecha.dm b/code/game/objects/items/circuitboards/mecha.dm index 60b5d7a0c952..40646de77d81 100644 --- a/code/game/objects/items/circuitboards/mecha.dm +++ b/code/game/objects/items/circuitboards/mecha.dm @@ -1,7 +1,4 @@ - -///////// Circuitboards - -/obj/item/circuitboard/mecha +/obj/item/circuitboard/exosuit name = "Exosuit Circuit board" icon_state = "std_mod" force = 5 @@ -10,71 +7,34 @@ throw_speed = SPEED_VERY_FAST throw_range = 15 -/obj/item/circuitboard/mecha/ripley - - -/obj/item/circuitboard/mecha/ripley/peripherals - name = "Circuit board (Ripley Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/ripley/main - name = "Circuit board (Ripley Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/gygax - - -/obj/item/circuitboard/mecha/gygax/peripherals - name = "Circuit board (Gygax Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/gygax/targeting - name = "Circuit board (Gygax Weapon Control and Targeting module)" - icon_state = "mcontroller" - - -/obj/item/circuitboard/mecha/gygax/main - name = "Circuit board (Gygax Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/durand - - -/obj/item/circuitboard/mecha/durand/peripherals - name = "Circuit board (Durand Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/durand/targeting - name = "Circuit board (Durand Weapon Control and Targeting module)" - icon_state = "mcontroller" - - -/obj/item/circuitboard/mecha/durand/main - name = "Circuit board (Durand Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/honker - - -/obj/item/circuitboard/mecha/honker/peripherals - name = "Circuit board (H.O.N.K Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/honker/targeting - name = "Circuit board (H.O.N.K Weapon Control and Targeting module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/honker/main - name = "Circuit board (H.O.N.K Central Control module)" - icon_state = "mainboard" - -/obj/item/circuitboard/mecha/odysseus - - -/obj/item/circuitboard/mecha/odysseus/peripherals - name = "Circuit board (Odysseus Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/odysseus/main - name = "Circuit board (Odysseus Central Control module)" +// that's the two possible exosuit boards icon_state. +/obj/item/circuitboard/exosuit/main icon_state = "mainboard" +/obj/item/circuitboard/exosuit/peripherals + icon_state = "mcontroller" + +// P-1000 Older version of the P-5000 +/obj/item/circuitboard/exosuit/main/work_loader + name = "Circuit board (P-1000 Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/work_loader + name = "Circuit board (P-1000 Peripherals Control module)" + +// MAX (Mobile Assault Exo-Warrior)look like a gygax from afar +/obj/item/circuitboard/exosuit/main/max + name = "Circuit board (Max Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/max + name = "Circuit board (Max Peripherals Control module)" +/obj/item/circuitboard/exosuit/peripherals/max/targeting + name = "Circuit board (Max Weapon Control and Targeting module)" + +// MOX (mobile offensive exo-warrior) look like a durand from afar. +/obj/item/circuitboard/exosuit/main/mox + name = "Circuit board (Mox Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/mox + name = "Circuit board (Mox Peripherals Control module)" + +// Alice it's an exosuit featured in alien versus predator 2 doesn't look like an odysseus but is a name in CM lore. +/obj/item/circuitboard/exosuit/main/alice + name = "Circuit board (Alice Central Control module)" +/obj/item/circuitboard/exosuit/peripherals/alice + name = "Circuit board (Alice Peripherals Control module)" diff --git a/code/game/objects/items/circuitboards/robot_modules.dm b/code/game/objects/items/circuitboards/robot_modules.dm index 04fcff10fa2b..fc0b2892a111 100644 --- a/code/game/objects/items/circuitboards/robot_modules.dm +++ b/code/game/objects/items/circuitboards/robot_modules.dm @@ -2,365 +2,14 @@ name = "robot module" icon_state = "std_mod" flags_atom = FPRINT|CONDUCT - var/channels = list() - var/list/modules = list() - var/obj/item/emag = null - var/obj/item/robot/upgrade/jetpack = null - var/list/stacktypes - -/obj/item/circuitboard/robot_module/emp_act(severity) - . = ..() - if(modules) - for(var/obj/O in modules) - O.emp_act(severity) - if(emag) - emag.emp_act(severity) - - -/obj/item/circuitboard/robot_module/Initialize() - . = ..() -// src.modules += new /obj/item/device/flashlight(src) // Replaced by verb and integrated light which uses power. - src.modules += new /obj/item/device/flash(src) - src.emag = new /obj/item/toy/sword(src) - src.emag.name = "Placeholder Emag Item" -// src.jetpack = new /obj/item/toy/sword(src) -// src.jetpack.name = "Placeholder Upgrade Item" - -/obj/item/circuitboard/robot_module/Destroy() - . = ..() - QDEL_NULL(emag) - QDEL_NULL(jetpack) - QDEL_NULL_LIST(modules) - -/obj/item/circuitboard/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R) - - if(!stacktypes || !stacktypes.len) return - - for(var/T in stacktypes) - var/O = locate(T) in src.modules - var/obj/item/stack/S = O - - if(!S) - src.modules -= null - S = new T(src) - src.modules += S - S.amount = 1 - - if(S && S.amount < stacktypes[T]) - S.amount++ - -/obj/item/circuitboard/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module - var/list/temp_list = modules - modules = list() - for(var/obj/O in temp_list) - if(O) - modules += O - -/obj/item/circuitboard/robot_module/proc/add_languages(mob/living/silicon/robot/R) - //full set of languages - R.add_language(LANGUAGE_RUSSIAN, 1) - R.add_language(LANGUAGE_JAPANESE, 1) - - -/obj/item/circuitboard/robot_module/standard - name = "standard robot module" - -/obj/item/circuitboard/robot_module/standard/New() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/tool/extinguisher(src) - src.modules += new /obj/item/tool/wrench(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/robot/stun(src) - src.emag = new /obj/item/weapon/energy/sword(src) - return /obj/item/circuitboard/robot_module/surgeon name = "surgeon robot module" - stacktypes = list( - /obj/item/stack/medical/advanced/bruise_pack = 5, - /obj/item/stack/nanopaste = 5, - ) - -/obj/item/circuitboard/robot_module/surgeon/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/reagent_container/borghypo(src) - src.modules += new /obj/item/tool/surgery/scalpel(src) - src.modules += new /obj/item/tool/surgery/hemostat(src) - src.modules += new /obj/item/tool/surgery/retractor(src) - src.modules += new /obj/item/tool/surgery/cautery(src) - src.modules += new /obj/item/tool/surgery/bonegel(src) - src.modules += new /obj/item/tool/surgery/FixOVein(src) - src.modules += new /obj/item/tool/surgery/bonesetter(src) - src.modules += new /obj/item/tool/surgery/circular_saw(src) - src.modules += new /obj/item/tool/surgery/surgicaldrill(src) - src.modules += new /obj/item/tool/extinguisher/mini(src) - src.modules += new /obj/item/stack/medical/advanced/bruise_pack(src) - src.modules += new /obj/item/stack/nanopaste(src) - src.modules += new /obj/item/tool/weldingtool/largetank(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - - src.emag = new /obj/item/reagent_container/spray(src) - - src.emag.reagents.add_reagent("pacid", 250) - src.emag.name = "Polyacid spray" - -/obj/item/circuitboard/robot_module/surgeon/respawn_consumable(mob/living/silicon/robot/R) - if(src.emag) - var/obj/item/reagent_container/spray/PS = src.emag - PS.reagents.add_reagent("pacid", 2) - ..() - /obj/item/circuitboard/robot_module/medic name = "medic robot module" - stacktypes = list( - /obj/item/stack/medical/ointment = 15, - /obj/item/stack/medical/advanced/bruise_pack = 15, - /obj/item/stack/medical/splint = 15, - ) - -/obj/item/circuitboard/robot_module/medic/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/robot/sight/hud/med(src) - src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/device/reagent_scanner/adv(src) - src.modules += new /obj/item/roller_holder(src) - src.modules += new /obj/item/stack/medical/ointment(src) - src.modules += new /obj/item/stack/medical/advanced/bruise_pack(src) - src.modules += new /obj/item/stack/medical/splint(src) - src.modules += new /obj/item/reagent_container/borghypo(src) - src.modules += new /obj/item/reagent_container/glass/beaker/large(src) - src.modules += new /obj/item/reagent_container/robodropper(src) - src.modules += new /obj/item/reagent_container/syringe(src) - src.modules += new /obj/item/tool/extinguisher/mini(src) - src.modules += new /obj/item/reagent_container/spray/cleaner(src) - src.modules += new /obj/item/tool/weldingtool/largetank(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - - src.emag = new /obj/item/reagent_container/spray(src) - - src.emag.reagents.add_reagent("pacid", 250) - src.emag.name = "Polyacid spray" - -/obj/item/circuitboard/robot_module/medic/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/reagent_container/syringe/S = locate() in src.modules - if(S.mode == 2) - S.reagents.clear_reagents() - S.mode = initial(S.mode) - S.desc = initial(S.desc) - S.update_icon() - - var/obj/item/reagent_container/spray/cleaner/C = locate() in src.modules - C.reagents.add_reagent("cleaner", C.volume) - - if(src.emag) - var/obj/item/reagent_container/spray/PS = src.emag - PS.reagents.add_reagent("pacid", 2) - - ..() - /obj/item/circuitboard/robot_module/engineering name = "engineering robot module" - - stacktypes = list( - /obj/item/stack/sheet/metal = 50, - /obj/item/stack/sheet/glass = 50, - /obj/item/stack/sheet/glass/reinforced = 50, - /obj/item/stack/cable_coil = 50, - /obj/item/stack/rods = 50, - /obj/item/stack/tile/plasteel = 20, - ) - -/obj/item/circuitboard/robot_module/engineering/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/robot/sight/meson(src) - src.modules += new /obj/item/tool/extinguisher(src) - src.modules += new /obj/item/device/rcd/borg(src) - src.modules += new /obj/item/tool/weldingtool/largetank(src) - src.modules += new /obj/item/tool/screwdriver(src) - src.modules += new /obj/item/tool/wrench(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/tool/wirecutters(src) - src.modules += new /obj/item/device/multitool(src) - src.modules += new /obj/item/device/t_scanner(src) - src.modules += new /obj/item/device/analyzer(src) - src.modules += new /obj/item/device/gripper(src) - src.modules += new /obj/item/device/matter_decompiler(src) - src.modules += new /obj/item/device/lightreplacer(src) - src.modules += new /obj/item/robot/stun(src) - - for(var/T in stacktypes) - var/obj/item/stack/sheet/W = new T(src) - W.amount = stacktypes[T] - src.modules += W - -/obj/item/circuitboard/robot_module/engineering/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/device/lightreplacer/L = locate() in src.modules - L.uses = L.max_uses - - ..() - -/obj/item/circuitboard/robot_module/security - name = "security robot module" - -/obj/item/circuitboard/robot_module/security/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/robot/sight/hud/sec(src) - src.modules += new /obj/item/handcuffs/cyborg(src) - src.modules += new /obj/item/robot/stun(src) - src.modules += new /obj/item/tool/crowbar(src) -// src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src) -// src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src) - -/obj/item/circuitboard/robot_module/security/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/device/flash/F = locate() in src.modules - if(F.broken) - F.broken = 0 - F.flashes_stored = F.max_flashes_stored - F.icon_state = "flash" - else if(F.flashes_stored > F.max_flashes_stored) - F.flashes_stored++ - // var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in src.modules - // if(T.power_supply.charge < T.power_supply.maxcharge) - // T.power_supply.give(T.charge_cost) - // T.update_icon() - // else - // T.charge_tick = 0 - /obj/item/circuitboard/robot_module/janitor name = "janitorial robot module" - -/obj/item/circuitboard/robot_module/janitor/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/tool/soap/nanotrasen(src) - src.modules += new /obj/item/storage/bag/trash(src) - src.modules += new /obj/item/tool/mop(src) - src.modules += new /obj/item/device/lightreplacer(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - src.emag = new /obj/item/reagent_container/spray(src) - - src.emag.reagents.add_reagent("cleaner", 250) - src.emag.name = "space cleaner" - -/obj/item/circuitboard/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/device/lightreplacer/LR = locate() in src.modules - LR.Charge(R) - if(src.emag) - var/obj/item/reagent_container/spray/S = src.emag - S.reagents.add_reagent("cleaner", 2) - /obj/item/circuitboard/robot_module/butler name = "service robot module" - -/obj/item/circuitboard/robot_module/butler/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/reagent_container/food/drinks/cans/beer(src) - src.modules += new /obj/item/reagent_container/food/condiment/enzyme(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/robot/stun(src) - - var/obj/item/device/rsf/M = new /obj/item/device/rsf(src) - M.stored_matter = 30 - src.modules += M - - src.modules += new /obj/item/reagent_container/robodropper(src) - - var/obj/item/tool/lighter/zippo/L = new /obj/item/tool/lighter/zippo(src) - L.heat_source = 1000 - src.modules += L - - src.modules += new /obj/item/reagent_container/food/drinks/shaker(src) - -/obj/item/circuitboard/robot_module/butler/add_languages(mob/living/silicon/robot/R) - //full set of languages - R.add_language(LANGUAGE_JAPANESE, 1) - -/obj/item/circuitboard/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/reagent_container/food/condiment/enzyme/E = locate() in src.modules - E.reagents.add_reagent("enzyme", 2) - if(src.emag) - var/obj/item/reagent_container/food/drinks/cans/beer/B = src.emag - B.reagents.add_reagent("beer2", 2) - -/obj/item/circuitboard/robot_module/syndicate - name = "syndicate robot module" - -/obj/item/circuitboard/robot_module/syndicate/Initialize() - . = ..() - src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/weapon/energy/sword(src) - -/obj/item/circuitboard/robot_module/drone - name = "drone module" - stacktypes = list( - /obj/item/stack/sheet/wood = 1, - /obj/item/stack/sheet/mineral/plastic = 1, - /obj/item/stack/sheet/glass/reinforced = 5, - /obj/item/stack/tile/wood = 5, - /obj/item/stack/rods = 15, - /obj/item/stack/tile/plasteel = 15, - /obj/item/stack/sheet/metal = 20, - /obj/item/stack/sheet/glass = 20, - /obj/item/stack/cable_coil = 30, - ) - -/obj/item/circuitboard/robot_module/drone/Initialize() - . = ..() - src.modules += new /obj/item/tool/weldingtool(src) - src.modules += new /obj/item/tool/screwdriver(src) - src.modules += new /obj/item/tool/wrench(src) - src.modules += new /obj/item/tool/crowbar(src) - src.modules += new /obj/item/tool/wirecutters(src) - src.modules += new /obj/item/device/multitool(src) - src.modules += new /obj/item/device/lightreplacer(src) - src.modules += new /obj/item/device/gripper(src) - src.modules += new /obj/item/device/matter_decompiler(src) - src.modules += new /obj/item/reagent_container/spray/cleaner/drone(src) - - src.emag = new /obj/item/tool/pickaxe/plasmacutter(src) - src.emag.name = "Plasma Cutter" - - for(var/T in stacktypes) - var/obj/item/stack/sheet/W = new T(src) - W.amount = stacktypes[T] - src.modules += W - -/obj/item/circuitboard/robot_module/drone/add_languages(mob/living/silicon/robot/R) - return //not much ROM to spare in that tiny microprocessor! - -/obj/item/circuitboard/robot_module/drone/respawn_consumable(mob/living/silicon/robot/R) - var/obj/item/reagent_container/spray/cleaner/C = locate() in src.modules - C.reagents.add_reagent("cleaner", 3) - - var/obj/item/device/lightreplacer/LR = locate() in src.modules - LR.Charge(R) - - ..() - return - -//checks whether this item is a module of the robot it is located in. -/obj/item/proc/is_robot_module() - if (!isrobot(src.loc)) - return 0 - - var/mob/living/silicon/robot/R = src.loc - - return (src in R.module.modules) diff --git a/code/game/objects/items/devices/RCD.dm b/code/game/objects/items/devices/RCD.dm index 55965533c48b..00e569800314 100644 --- a/code/game/objects/items/devices/RCD.dm +++ b/code/game/objects/items/devices/RCD.dm @@ -86,7 +86,7 @@ RCD /obj/item/device/rcd/afterattack(atom/A, mob/user, proximity) if(!proximity) return - if(disabled && !isrobot(user)) + if(disabled) return 0 if(istype(A,/area/shuttle) || istype(A,/turf/open/space/transit)) return 0 @@ -180,20 +180,6 @@ RCD /obj/item/device/rcd/proc/checkResource(amount, mob/user) return stored_matter >= amount -/obj/item/device/rcd/borg/useResource(amount, mob/user) - if(!isrobot(user)) - return 0 - return user:cell:use(amount * 30) - -/obj/item/device/rcd/borg/checkResource(amount, mob/user) - if(!isrobot(user)) - return 0 - return user:cell:charge >= (amount * 30) - -/obj/item/device/rcd/borg/New() - ..() - desc = "A device used to rapidly build walls/floor." - canRwall = 1 /obj/item/ammo_rcd name = "compressed matter cartridge" diff --git a/code/game/objects/items/devices/RSF.dm b/code/game/objects/items/devices/RSF.dm index ac87cd6dfc86..29f84c7c6d0c 100644 --- a/code/game/objects/items/devices/RSF.dm +++ b/code/game/objects/items/devices/RSF.dm @@ -68,48 +68,31 @@ RSF if(!proximity) return - if(istype(user,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = user - if(R.stat || !R.cell || R.cell.charge <= 0) - return - else - if(stored_matter <= 0) - return + if(stored_matter <= 0) + return if(!istype(A, /obj/structure/surface/table) && !istype(A, /turf/open/floor)) return playsound(src.loc, 'sound/machines/click.ogg', 25, 1) - var/used_energy = 0 var/obj/product switch(mode) if(1) product = new /obj/item/spacecash/c10() - used_energy = 200 if(2) product = new /obj/item/reagent_container/food/drinks/drinkingglass() - used_energy = 50 if(3) product = new /obj/item/paper() - used_energy = 10 if(4) product = new /obj/item/tool/pen() - used_energy = 50 if(5) product = new /obj/item/storage/pill_bottle/dice() - used_energy = 200 if(6) product = new /obj/item/clothing/mask/cigarette() - used_energy = 10 to_chat(user, "Dispensing [product ? product : "product"]...") product.forceMove(get_turf(A)) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - if(R.cell) - R.cell.use(used_energy) - else - stored_matter-- - to_chat(user, "The RSF now holds [stored_matter]/30 fabrication-units.") + stored_matter-- + to_chat(user, "The RSF now holds [stored_matter]/30 fabrication-units.") diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 6dad79e4af5a..cc36eb9be02c 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -6,103 +6,3 @@ w_class = SIZE_SMALL flags_atom = FPRINT|CONDUCT flags_equip_slot = SLOT_WAIST - var/flush = null - - - -/obj/item/device/aicard/attack(mob/living/silicon/ai/M as mob, mob/user as mob) - if(!isAI(M))//If target is not an AI. - return ..() - - M.attack_log += text("\[[time_stamp()]\] Has been carded with [src.name] by [user.name] ([user.ckey])") - M.last_damage_data = create_cause_data(initial(name), user) - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to card [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to card [M.name] ([M.ckey]) in [get_area(user)] ([user.x],[user.y],[user.z]).", user.x, user.y, user.z) - - transfer_ai("AICORE", "AICARD", M, user) - return - -/obj/item/device/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob) - if (!istype (M, /mob/living/silicon/decoy)) - return ..() - else - M.death() - to_chat(user, "ERROR ERROR ERROR") - -/obj/item/device/aicard/attack_self(mob/user) - ..() - - if (!in_range(src, user)) - return - - user.set_interaction(src) - var/dat = "Intelicard
      " - for(var/mob/living/silicon/ai/A in src) - dat += "Stored AI: [A.name]
      System integrity: [(A.health+100)/2]%
      " - - if (A.stat == 2) - dat += "AI nonfunctional" - else - if (!src.flush) - dat += {"
      Wipe AI"} - else - dat += "Wipe in progress" - dat += "
      " - dat += {"[A.control_disabled ? "Enable" : "Disable"] Wireless Activity"} - dat += "
      " - dat += "Subspace Transceiver is: [A.aiRadio.disabledAi ? "Disabled" : "Enabled"]" - dat += "
      " - dat += {"[A.aiRadio.disabledAi ? "Enable" : "Disable"] Subspace Transceiver"} - dat += "
      " - dat += {" Close"} - user << browse(dat, "window=aicard") - onclose(user, "aicard") - return - -/obj/item/device/aicard/Topic(href, href_list) - . = ..() - if(.) - return - var/mob/U = usr - if (!in_range(src, U)||U.interactee!=src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else). - close_browser(U, "aicard") - U.unset_interaction() - return - - add_fingerprint(U) - U.set_interaction(src) - - switch(href_list["choice"])//Now we switch based on choice. - if ("Close") - close_browser(U, "aicard") - U.unset_interaction() - return - - if ("Radio") - for(var/mob/living/silicon/ai/A in src) - A.aiRadio.disabledAi = !A.aiRadio.disabledAi - if ("Wipe") - var/confirm = alert("Are you sure you want to wipe this card's memory? This cannot be undone once started.", "Confirm Wipe", "Yes", "No") - if(confirm == "Yes") - if(QDELETED(src)||!in_range(src, U)||U.interactee!=src) - close_browser(U, "aicard") - U.unset_interaction() - return - else - flush = 1 - for(var/mob/living/silicon/ai/A in src) - to_chat(A, "Your core files are being wiped!") - while (A.stat != 2) - A.apply_damage(2, OXY) - A.updatehealth() - sleep(10) - flush = 0 - - if ("Wireless") - for(var/mob/living/silicon/ai/A in src) - A.control_disabled = !A.control_disabled - if (A.control_disabled) - overlays -= image('icons/obj/items/robot_component.dmi', "aicard-on") - else - overlays += image('icons/obj/items/robot_component.dmi', "aicard-on") - attack_self(U) diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm index a9b7706bcfb7..84da7d9acff4 100644 --- a/code/game/objects/items/devices/binoculars.dm +++ b/code/game/objects/items/devices/binoculars.dm @@ -123,7 +123,7 @@ to_chat(user, SPAN_WARNING("INVALID TARGET: target must be on the surface.")) return FALSE if(user.sight & SEE_TURFS) - var/list/turf/path = getline2(user, targeted_atom, include_from_atom = FALSE) + var/list/turf/path = get_line(user, targeted_atom, include_start_atom = FALSE) for(var/turf/T in path) if(T.opacity) to_chat(user, SPAN_WARNING("There is something in the way of the laser!")) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm deleted file mode 100644 index 1549fbd3739b..000000000000 --- a/code/game/objects/items/devices/camera_bug.dm +++ /dev/null @@ -1,34 +0,0 @@ -/obj/item/device/camera_bug - name = "camera bug" - icon_state = "flash" - w_class = SIZE_TINY - item_state = "electronic" - throw_speed = SPEED_VERY_FAST - throw_range = 20 - -/obj/item/device/camera_bug/attack_self(mob/usr as mob) - ..() - - var/list/cameras = new/list() - for (var/obj/structure/machinery/camera/C in GLOB.cameranet.cameras) - if (C.bugged && C.status) - cameras.Add(C) - if (length(cameras) == 0) - to_chat(usr, SPAN_DANGER("No bugged functioning cameras found.")) - return - - var/list/friendly_cameras = new/list() - - for (var/obj/structure/machinery/camera/C in cameras) - friendly_cameras.Add(C.c_tag) - - var/target = tgui_input_list(usr, "Select the camera to observe", "Camera to Observe", friendly_cameras) - if (!target) - return - for (var/obj/structure/machinery/camera/C in cameras) - if (C.c_tag == target) - target = C - break - if (usr.stat == 2) return - - usr.client.eye = target diff --git a/code/game/objects/items/devices/cictablet.dm b/code/game/objects/items/devices/cictablet.dm index 3f87b2bfbea2..664054fb59e2 100644 --- a/code/game/objects/items/devices/cictablet.dm +++ b/code/game/objects/items/devices/cictablet.dm @@ -43,10 +43,10 @@ add_pmcs = FALSE UnregisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP) -/obj/item/device/cotablet/attack_self(mob/user as mob) +/obj/item/device/cotablet/attack_self(mob/living/carbon/human/user as mob) ..() - if(src.allowed(user)) + if(src.allowed(user) && user.wear_id?.check_biometrics(user)) tgui_interact(user) else to_chat(user, SPAN_DANGER("Access denied.")) @@ -123,7 +123,7 @@ if("award") if(announcement_faction != FACTION_MARINE) return - print_medal(usr, src) + open_medal_panel(usr, src) . = TRUE if("mapview") diff --git a/code/game/objects/items/devices/defibrillator.dm b/code/game/objects/items/devices/defibrillator.dm index 30d0467a9b76..9da76b9d21b9 100644 --- a/code/game/objects/items/devices/defibrillator.dm +++ b/code/game/objects/items/devices/defibrillator.dm @@ -194,11 +194,6 @@ shock_cooldown = world.time + 10 //1 second cooldown before you can shock again var/datum/internal_organ/heart/heart = H.internal_organs_by_name["heart"] - /// Has the defib already caused the chance of heart damage, to not potentially double up later - var/heart_already_damaged = FALSE - if(heart && prob(25)) - heart.take_damage(rand(min_heart_damage_dealt, max_heart_damage_dealt), TRUE) // Make death and revival leave lasting consequences - heart_already_damaged = TRUE if(!H.is_revivable()) playsound(get_turf(src), 'sound/items/defib_failed.ogg', 25, 0) @@ -236,7 +231,7 @@ user.track_life_saved(user.job) user.life_revives_total++ H.handle_revive() - if(heart && !heart_already_damaged) + if(heart) heart.take_damage(rand(min_heart_damage_dealt, max_heart_damage_dealt), TRUE) // Make death and revival leave lasting consequences to_chat(H, SPAN_NOTICE("You suddenly feel a spark and your consciousness returns, dragging you back to the mortal plane.")) @@ -245,6 +240,8 @@ else user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Defibrillation failed. Vital signs are too weak, repair damage and try again.")) //Freak case playsound(get_turf(src), 'sound/items/defib_failed.ogg', 25, 0) + if(heart && prob(25)) + heart.take_damage(rand(min_heart_damage_dealt, max_heart_damage_dealt), TRUE) // Make death and revival leave lasting consequences /obj/item/device/defibrillator/compact_adv name = "advanced compact defibrillator" diff --git a/code/game/objects/items/devices/drone_devices.dm b/code/game/objects/items/devices/drone_devices.dm index 121a3c0aabc9..0e22b64bf67f 100644 --- a/code/game/objects/items/devices/drone_devices.dm +++ b/code/game/objects/items/devices/drone_devices.dm @@ -173,33 +173,6 @@ stored_comms["plastic"]++ stored_comms["plastic"]++ return - - else if(ismaintdrone(M) && !M.client) - - var/mob/living/silicon/robot/drone/D = src.loc - - if(!istype(D)) - return - - to_chat(D, SPAN_DANGER("You begin decompiling the other drone.")) - - if(!do_after(D, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) - to_chat(D, SPAN_DANGER("You need to remain still while decompiling such a large object.")) - return - - if(!M || !D) return - - to_chat(D, SPAN_DANGER("You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself.")) - - qdel(M) - new/obj/effect/decal/cleanable/blood/oil(get_turf(src)) - - stored_comms["metal"] += 15 - stored_comms["glass"] += 15 - stored_comms["wood"] += 5 - stored_comms["plastic"] += 5 - - return else continue diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 33a93ed18db5..56d363774a62 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -102,17 +102,6 @@ else //if not carbon or sillicn flashfail = TRUE - if(isrobot(user)) - spawn(0) - var/atom/movable/overlay/animation = new(user.loc) - animation.layer = user.layer + 1 - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = user - flick("blspell", animation) - sleep(5) - qdel(animation) - if(!flashfail) if(!isSilicon(M)) user.visible_message(SPAN_DANGER("[user] blinds [M] with \the [src]!")) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 3f285b358fb2..05872284ecc2 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -25,7 +25,7 @@ // I'm not sure everyone will react the emag's features so please say what your opinions are of it. // // When emagged it will rig every light it replaces, which will explode when the light is on. -// This is VERY noticable, even the device's name changes when you emag it so if anyone +// This is VERY noticeable, even the device's name changes when you emag it so if anyone // examines you when you're holding it in your hand, you will be discovered. // It will also be very obvious who is setting all these lights off, since only Janitor Borgs and Janitors have easy // access to them, and only one of them can emag their device. diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index 9776eae11c8f..c26db692f082 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -220,7 +220,6 @@ var/mob/living/M = A //do this to skip the unnecessary istype() check; everything in ping_candidate is a mob already if(M == loc) continue //device user isn't detected if(world.time > M.l_move_time + 20) continue //hasn't moved recently - if(isrobot(M)) continue if(M.get_target_lock(iff_signal)) continue @@ -280,7 +279,7 @@ DB.icon_state = "[blip_icon]_blip" DB.setDir(initial(DB.dir)) - DB.screen_loc = "[Clamp(c_view + 1 - view_x_offset + (target.x - user.x), 1, 2*c_view+1)],[Clamp(c_view + 1 - view_y_offset + (target.y - user.y), 1, 2*c_view+1)]" + DB.screen_loc = "[clamp(c_view + 1 - view_x_offset + (target.x - user.x), 1, 2*c_view+1)],[clamp(c_view + 1 - view_y_offset + (target.y - user.y), 1, 2*c_view+1)]" user.client.add_to_screen(DB) addtimer(CALLBACK(src, PROC_REF(clear_pings), user, DB), 1 SECONDS) diff --git a/code/game/objects/items/devices/portable_vendor.dm b/code/game/objects/items/devices/portable_vendor.dm index 465ba0666828..da399192b713 100644 --- a/code/game/objects/items/devices/portable_vendor.dm +++ b/code/game/objects/items/devices/portable_vendor.dm @@ -276,7 +276,7 @@ list("SMOKABLES", 0, null, null, null), list("Cigars", 5, /obj/item/storage/fancy/cigar, "white", "Case of premium cigars, untampered."), list("Cigarettes", 5, /obj/item/storage/fancy/cigarettes/wypacket, "white", "Weyland-Yutani Gold packet, for the more sophisticated taste."), - list("Zippo", 5, /obj/item/tool/lighter/zippo, "white", "A Zippo lighter, for those smoking in style."), + list("Zippo", 5, /obj/item/tool/lighter/zippo/executive, "white", "A Weyland-Yutani brand Zippo lighter, for those smoking in style."), list("DRINKABLES", 0, null, null, null), list("Sake", 5, /obj/item/reagent_container/food/drinks/bottle/sake, "white", "Weyland-Yutani Sake, for a proper business dinner."), diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index e5c717e699f0..7b987752011c 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -383,7 +383,7 @@ /obj/item/device/radio/headset/ai_integrated/receive_range(freq, level) if (disabledAi) - return -1 //Transciever Disabled. + return -1 //Transceiver Disabled. return ..(freq, level, 1) //MARINE HEADSETS @@ -405,6 +405,24 @@ var/datum/techtree/T = GET_TREE(TREE_MARINE) T.enter_mob(usr) +/obj/item/device/radio/headset/almayer/verb/give_medal_recommendation() + set name = "Give Medal Recommendation" + set desc = "Send a medal recommendation for approval by the Commanding Officer" + set category = "Object.Medals" + set src in usr + + var/mob/living/carbon/human/wearer = usr + if(!istype(wearer)) + return + var/obj/item/card/id/id_card = wearer.wear_id?.GetID() + if(!istype(id_card)) + return + if(!(id_card.rank in list(JOB_SO, JOB_XO, JOB_SQUAD_LEADER))) + to_chat(wearer, SPAN_WARNING("Only Staff Officers, Executive Officers and Squad Leaders are permitted to give medal recommendations!")) + return + if(add_medal_recommendation(usr)) + to_chat(usr, SPAN_NOTICE("Recommendation successfully submitted.")) + /obj/item/device/radio/headset/almayer/ce name = "chief engineer's headset" desc = "The headset of the guy in charge of spooling engines, managing MTs, and tearing up the floor for scrap metal. Of robust and sturdy construction. Channels are as follows: :n - engineering, :v - marine command, :m - medical, :u - requisitions, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad." diff --git a/code/game/objects/items/devices/radio/listening_bugs.dm b/code/game/objects/items/devices/radio/listening_bugs.dm index 67a91de1bd56..9492188a14f0 100644 --- a/code/game/objects/items/devices/radio/listening_bugs.dm +++ b/code/game/objects/items/devices/radio/listening_bugs.dm @@ -126,7 +126,7 @@ size = "small" if(SIZE_MEDIUM) size = "normal-sized" - . += "This is a [blood_color ? blood_color != "#030303" ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." + . += "This is a [blood_color ? blood_color != COLOR_OIL ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." if(desc) . += desc if(desc_lore) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 43eb1810d700..0c71ae847674 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -252,12 +252,6 @@ // --- Carbon Nonhuman --- else if(iscarbon(M)) // Nonhuman carbon mob jobname = "No id" - // --- AI --- - else if(isAI(M)) - jobname = "AI" - // --- Cyborg --- - else if(isrobot(M)) - jobname = "Cyborg" // --- Unidentifiable mob --- else jobname = "Unknown" @@ -431,136 +425,6 @@ for (var/ch_name in channels) channels[ch_name] = 0 -/////////////////////////////// -//////////Borg Radios////////// -/////////////////////////////// -//Giving borgs their own radio to have some more room to work with -Sieve - -/obj/item/device/radio/borg - var/mob/living/silicon/robot/myborg = null // Cyborg which owns this radio. Used for power checks - var/obj/item/device/encryptionkey/keyslot = null//Borg radios can handle a single encryption key - var/shut_up = 0 - icon = 'icons/obj/items/robot_component.dmi' // Cyborgs radio icons should look like the component. - icon_state = "radio" - canhear_range = 3 - -/obj/item/device/radio/borg/talk_into() - ..() - if (isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - var/datum/robot_component/C = R.components["radio"] - R.cell_use_power(C.active_usage) - -/obj/item/device/radio/borg/attackby(obj/item/W as obj, mob/user as mob) -// ..() - if (!(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) || (istype(W, /obj/item/device/encryptionkey)))) - return - - if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) - if(keyslot) - - - for(var/ch_name in channels) - SSradio.remove_object(src, GLOB.radiochannels[ch_name]) - secure_radio_connections[ch_name] = null - - - if(keyslot) - var/turf/T = get_turf(user) - if(T) - keyslot.forceMove(T) - keyslot = null - - recalculateChannels() - to_chat(user, "You pop out the encryption key in the radio!") - - else - to_chat(user, "This radio doesn't have any encryption keys!") - - if(istype(W, /obj/item/device/encryptionkey/)) - if(keyslot) - to_chat(user, "The radio can't hold another key!") - return - - if(!keyslot) - if(user.drop_held_item()) - W.forceMove(src) - keyslot = W - - recalculateChannels() - - return - -/obj/item/device/radio/borg/proc/recalculateChannels() - src.channels = list() - - var/mob/living/silicon/robot/D = src.loc - if(D.module) - for(var/ch_name in D.module.channels) - if(ch_name in src.channels) - continue - src.channels += ch_name - src.channels[ch_name] += D.module.channels[ch_name] - if(keyslot) - for(var/ch_name in keyslot.channels) - if(ch_name in src.channels) - continue - src.channels += ch_name - src.channels[ch_name] += keyslot.channels[ch_name] - - for (var/ch_name in src.channels) - secure_radio_connections[ch_name] = SSradio.add_object(src, GLOB.radiochannels[ch_name], RADIO_CHAT) - - SStgui.update_uis(src) - -/obj/item/device/radio/borg/Topic(href, href_list) - if(usr.stat || !on) - return - if (href_list["mode"]) - if(subspace_transmission != 1) - subspace_transmission = 1 - to_chat(usr, "Subspace Transmission is disabled") - else - subspace_transmission = 0 - to_chat(usr, "Subspace Transmission is enabled") - if(subspace_transmission == 1)//Simple as fuck, clears the channel list to prevent talking/listening over them if subspace transmission is disabled - channels = list() - else - recalculateChannels() - if (href_list["shutup"]) // Toggle loudspeaker mode, AKA everyone around you hearing your radio. - shut_up = !shut_up - if(shut_up) - canhear_range = 0 - else - canhear_range = 3 - - ..() - -/obj/item/device/radio/borg/interact(mob/user as mob) - if(!on) - return - - var/dat = "[src]" - dat += {" - Speaker: [listening ? "Engaged" : "Disengaged"]
      - Frequency: - - - - - [format_frequency(frequency)] - + - +
      - Toggle Broadcast Mode
      - Toggle Loudspeaker
      - "} - - if(!subspace_transmission)//Don't even bother if subspace isn't turned on - for (var/ch_name in channels) - dat+=text_sec_channel(ch_name, channels[ch_name]) - dat+={"[text_wires()]
      "} - show_browser(user, dat, name, "radio") - return - - /obj/item/device/radio/proc/config(op) for (var/ch_name in channels) SSradio.remove_object(src, GLOB.radiochannels[ch_name]) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 9fe3521d858b..9a5e1e1b0ef5 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -368,7 +368,7 @@ var/unspooled = FALSE var/list/icons_available = list() var/radial_icon_file = 'icons/mob/radial_tape.dmi' - var/list/cassette_colours = list("blue", "gray", "green", "orange", "pink_stripe", "purple", "rainbow", "red_black", "red_stripe", "camo", "rising_sun", "orange", "blue", "ocean", "aesthetic") + var/list/cassette_colors = list("blue", "gray", "green", "orange", "pink_stripe", "purple", "rainbow", "red_black", "red_stripe", "camo", "rising_sun", "orange", "blue", "ocean", "aesthetic") var/list/cassette_map_themes = list("solaris", "ice", "lz", "dam", "worstmap") inherent_traits = list(TRAIT_ITEM_RENAME_SPECIAL) //used to make the rename component work specially. ///used to store the tape's name for one side and the other side @@ -501,7 +501,7 @@ icon_state = "cassette_rainbow" /obj/item/tape/random/Initialize(mapload) - icon_state = "cassette_[pick(cassette_colours)]" + icon_state = "cassette_[pick(cassette_colors)]" . = ..() /obj/item/tape/regulation diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm index 4eb61a48b903..331df3ffa006 100644 --- a/code/game/objects/items/devices/whistle.dm +++ b/code/game/objects/items/devices/whistle.dm @@ -8,7 +8,8 @@ actions_types = list(/datum/action/item_action) var/volume = 60 - var/spamcheck = 0 + var/spam_cooldown_time = 10 SECONDS + COOLDOWN_DECLARE(spam_cooldown) /obj/item/device/whistle/attack_self(mob/user) ..() @@ -28,17 +29,17 @@ ..() /obj/item/device/whistle/proc/whistle_playsound(mob/user) - if (spamcheck) + if(!COOLDOWN_FINISHED(src, spam_cooldown)) + to_chat(user, SPAN_DANGER("You are out of breath after using [src]! Wait [COOLDOWN_SECONDSLEFT(src, spam_cooldown)] second\s.")) return user.visible_message(SPAN_WARNING("[user] blows into [src]!")) playsound(get_turf(src), 'sound/items/whistle.ogg', volume, 1, vary = 0) - spamcheck = 1 - addtimer(VARSET_CALLBACK(src, spamcheck, FALSE), 3 SECONDS) + COOLDOWN_START(src, spam_cooldown, spam_cooldown_time) /obj/item/device/whistle/MouseDrop(obj/over_object) - if(ishuman(usr) || isrobot(usr)) + if(ishuman(usr)) if(!usr.is_mob_restrained() && !usr.stat && usr.wear_mask == src) switch(over_object.name) diff --git a/code/game/objects/items/explosives/grenades/marines.dm b/code/game/objects/items/explosives/grenades/marines.dm index 46d2d4eba921..1cd3e1577c57 100644 --- a/code/game/objects/items/explosives/grenades/marines.dm +++ b/code/game/objects/items/explosives/grenades/marines.dm @@ -705,11 +705,11 @@ det_time = 20 underslug_launchable = TRUE harmful = FALSE - var/foam_metal_type = FOAM_METAL_TYPE_ALUMINIUM + var/foam_metal_type = FOAM_METAL_TYPE_IRON /obj/item/explosive/grenade/metal_foam/prime() var/datum/effect_system/foam_spread/s = new() - s.set_up(12, get_turf(src), metal_foam = foam_metal_type) //Metalfoam 1 for aluminum foam, 2 for iron foam (Stronger), 12 amt = 2 tiles radius (5 tile length diamond) + s.set_up(12, get_turf(src), metal_foam = foam_metal_type) //12 amt = 2 tiles radius (5 tile length diamond) s.start() qdel(src) diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 768a32c003fa..45065a2de1de 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -197,7 +197,7 @@ return if(L.stat == DEAD) return - if(L.get_target_lock(iff_signal) || isrobot(L)) + if(L.get_target_lock(iff_signal)) return if(HAS_TRAIT(L, TRAIT_ABILITY_BURROWED)) return @@ -266,6 +266,8 @@ /obj/effect/mine_tripwire/Destroy() if(linked_claymore) + if(linked_claymore.tripwire == src) + linked_claymore.tripwire = null linked_claymore = null . = ..() diff --git a/code/game/objects/items/explosives/plastic.dm b/code/game/objects/items/explosives/plastic.dm index 071ff3458a91..1d2986f79e55 100644 --- a/code/game/objects/items/explosives/plastic.dm +++ b/code/game/objects/items/explosives/plastic.dm @@ -321,6 +321,8 @@ penetration = 0.60 deploying_time = 10 var/shrapnel_volume = 40 + var/shrapnel_type = /datum/ammo/bullet/shrapnel/metal + var/explosion_strength = 60 /obj/item/explosive/plastic/breaching_charge/can_place(mob/user, atom/target) if(!is_type_in_list(target, breachable))//only items on the list are allowed @@ -347,13 +349,21 @@ /obj/item/explosive/plastic/breaching_charge/handle_explosion(turf/target_turf, dir, cause_data) var/explosion_target = get_step(target_turf, dir) - create_shrapnel(explosion_target, shrapnel_volume, dir, angle,/datum/ammo/bullet/shrapnel/metal, cause_data) + create_shrapnel(explosion_target, shrapnel_volume, dir, angle, shrapnel_type, cause_data) addtimer(CALLBACK(src, PROC_REF(trigger_explosion), target_turf, dir, cause_data), 1) /obj/item/explosive/plastic/breaching_charge/proc/trigger_explosion(turf/target_turf, dir, cause_data) - cell_explosion(target_turf, 60, 60, EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL, dir, cause_data) + cell_explosion(target_turf, explosion_strength, explosion_strength, EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL, dir, cause_data) qdel(src) +/obj/item/explosive/plastic/breaching_charge/rubber + name = "X17 riot charge" + desc = "An explosive device used to break into areas while protecting the user from the blast. Unlike the standard breaching charge, the X17 deploys a cone spray of rubber pellets to incapacitate rather than kill." + icon_state = "riot-charge" + overlay_image = "riot-active" + shrapnel_volume = 20 + shrapnel_type = /datum/ammo/bullet/shrapnel/rubber + /obj/item/explosive/plastic/breaching_charge/plasma name = "plasma charge" desc = "An alien explosive device. Who knows what it might do." @@ -367,6 +377,8 @@ deploying_time = 10 flags_item = NOBLUDGEON|ITEM_PREDATOR shrapnel_volume = 10 + shrapnel_type = /datum/ammo/bullet/shrapnel/plasma + explosion_strength = 90 /obj/item/explosive/plastic/breaching_charge/plasma/can_place(mob/user, atom/target) if(!HAS_TRAIT(user, TRAIT_YAUTJA_TECH)) @@ -374,11 +386,3 @@ return FALSE . = ..() -/obj/item/explosive/plastic/breaching_charge/plasma/handle_explosion(turf/target_turf, dir, cause_data) - var/explosion_target = get_step(target_turf, dir) - create_shrapnel(explosion_target, shrapnel_volume, dir, angle,/datum/ammo/bullet/shrapnel/plasma, cause_data) - addtimer(CALLBACK(src, PROC_REF(trigger_explosion), target_turf, dir, cause_data), 1) - -/obj/item/explosive/plastic/breaching_charge/plasma/trigger_explosion(turf/target_turf, dir, cause_data) - cell_explosion(target_turf, 90, 90, EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL, dir, cause_data) - qdel(src) diff --git a/code/game/objects/items/frames/camera.dm b/code/game/objects/items/frames/camera.dm index efe697c3944b..6b6061df8af0 100644 --- a/code/game/objects/items/frames/camera.dm +++ b/code/game/objects/items/frames/camera.dm @@ -103,12 +103,7 @@ C.assembly = src C.auto_turn() - C.network = uniquelist(tempnetwork) - tempnetwork = difflist(C.network,GLOB.RESTRICTED_CAMERA_NETWORKS) - if(!tempnetwork.len)//Camera isn't on any open network - remove its chunk from AI visibility. - GLOB.cameranet.removeCamera(C) - C.c_tag = input for(var/i = 5; i >= 0; i -= 1) diff --git a/code/game/objects/items/fulton.dm b/code/game/objects/items/fulton.dm index 788613cf4c6e..e36d269c8b90 100644 --- a/code/game/objects/items/fulton.dm +++ b/code/game/objects/items/fulton.dm @@ -141,8 +141,8 @@ GLOBAL_LIST_EMPTY(deployed_fultons) original_location = get_turf(attached_atom) playsound(loc, 'sound/items/fulton.ogg', 50, 1) reservation = SSmapping.RequestBlockReservation(3, 3, turf_type_override = /turf/open/space) - var/middle_x = reservation.bottom_left_coords[1] + FLOOR((reservation.top_right_coords[1] - reservation.bottom_left_coords[1]) / 2, 1) - var/middle_y = reservation.bottom_left_coords[2] + FLOOR((reservation.top_right_coords[2] - reservation.bottom_left_coords[2]) / 2, 1) + var/middle_x = reservation.bottom_left_coords[1] + Floor((reservation.top_right_coords[1] - reservation.bottom_left_coords[1]) / 2) + var/middle_y = reservation.bottom_left_coords[2] + Floor((reservation.top_right_coords[2] - reservation.bottom_left_coords[2]) / 2) var/turf/space_tile = locate(middle_x, middle_y, reservation.bottom_left_coords[3]) if(!space_tile) visible_message(SPAN_WARNING("[src] begins beeping like crazy. Something is wrong!")) diff --git a/code/game/objects/items/hoverpack.dm b/code/game/objects/items/hoverpack.dm index 027b9d77f581..02a2d4be779a 100644 --- a/code/game/objects/items/hoverpack.dm +++ b/code/game/objects/items/hoverpack.dm @@ -180,7 +180,7 @@ var/t_dist = get_dist(user, t_turf) if(!(t_dist > max_distance)) return - var/list/turf/path = getline2(user, t_turf, FALSE) + var/list/turf/path = get_line(user, t_turf, FALSE) warning.forceMove(path[max_distance]) /obj/item/hoverpack/proc/can_use_hoverpack(mob/living/carbon/human/user) diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index c538cbf3944f..804d258bdcb4 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(cached_icons) name = "Paint" id = "paint_" reagent_state = 2 - color = "#808080" + color = COLOR_GRAY description = "This paint will only adhere to floor tiles." /datum/reagent/paint/reaction_turf(turf/T, volume) @@ -128,7 +128,7 @@ GLOBAL_LIST_EMPTY(cached_icons) id = "paint_remover" description = "Paint remover is used to remove floor paint from floor tiles." reagent_state = 2 - color = "#808080" + color = COLOR_GRAY /datum/reagent/paint_remover/reaction_turf(turf/T, volume) if(istype(T) && T.icon != initial(T.icon)) diff --git a/code/game/objects/items/props/robots.dm b/code/game/objects/items/props/robots.dm new file mode 100644 index 000000000000..e0a8b8d312fb --- /dev/null +++ b/code/game/objects/items/props/robots.dm @@ -0,0 +1,45 @@ +/obj/item/broken_device + name = "broken component" + icon = 'icons/obj/items/robot_component.dmi' + icon_state = "broken" + +/obj/item/robot_parts/robot_component + icon = 'icons/obj/items/robot_component.dmi' + icon_state = "working" + +/obj/item/robot_parts/robot_component/binary_communication_device + name = "binary communication device" + icon_state = "binradio" + +/obj/item/robot_parts/robot_component/actuator + name = "actuator" + icon_state = "motor" + +/obj/item/robot_parts/robot_component/armour + name = "armour plating" + icon_state = "armor" + +/obj/item/robot_parts/robot_component/camera + name = "camera" + icon_state = "camera" + +/obj/item/robot_parts/robot_component/diagnosis_unit + name = "diagnosis unit" + icon_state = "analyser" + +/obj/item/robot_parts/robot_component/radio + name = "radio" + icon_state = "radio" + +/obj/item/device/robotanalyzer + name = "cyborg analyzer" + icon_state = "robotanalyzer" + item_state = "analyzer" + desc = "A hand-held scanner able to diagnose robotic injuries. It looks broken." + flags_atom = FPRINT|CONDUCT + flags_equip_slot = SLOT_WAIST + throwforce = 3 + w_class = SIZE_SMALL + throw_speed = SPEED_VERY_FAST + throw_range = 10 + matter = list("metal" = 200) diff --git a/code/game/objects/items/reagent_containers/borghydro.dm b/code/game/objects/items/reagent_containers/borghydro.dm deleted file mode 100644 index 4f1f5540988b..000000000000 --- a/code/game/objects/items/reagent_containers/borghydro.dm +++ /dev/null @@ -1,86 +0,0 @@ - -/obj/item/reagent_container/borghypo - name = "Robot Hypospray" - desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment." - icon = 'icons/obj/items/syringe.dmi' - item_state = "hypo" - icon_state = "borghypo" - amount_per_transfer_from_this = 5 - volume = 30 - possible_transfer_amounts = null - var/mode = 1 - var/charge_cost = 50 - var/charge_tick = 0 - var/recharge_time = 2 SECONDS //Time it takes for shots to recharge - - var/list/reagent_ids = list("tricordrazine", "bicaridine", "kelotane", "dexalinp", "anti_toxin", "inaprovaline", "tramadol", "imidazoline", "spaceacillin") - var/list/reagent_volumes = list() - var/list/reagent_names = list() - -/obj/item/reagent_container/borghypo/Initialize() - . = ..() - - for(var/T in reagent_ids) - reagent_volumes[T] = volume - var/datum/reagent/R = GLOB.chemical_reagents_list[T] - reagent_names += R.name - - START_PROCESSING(SSobj, src) - - -/obj/item/reagent_container/borghypo/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/reagent_container/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+ - if(++charge_tick < recharge_time) - return 0 - charge_tick = 0 - - if(isrobot(loc)) - var/mob/living/silicon/robot/R = loc - if(R && R.cell) - for(var/T in reagent_ids) - if(reagent_volumes[T] < volume) - R.cell.use(charge_cost) - reagent_volumes[T] = min(reagent_volumes[T] + 5, volume) - return 1 - -/obj/item/reagent_container/borghypo/attack(mob/living/M as mob, mob/user as mob) - if(!istype(M)) - return - - if(!reagent_volumes[reagent_ids[mode]]) - to_chat(user, SPAN_WARNING("The injector is empty.")) - return - - to_chat(user, SPAN_NOTICE(" You inject [M] with the injector.")) - to_chat(M, SPAN_NOTICE(" [user] injects you with the injector.")) - playsound(loc, 'sound/items/hypospray.ogg', 50, 1) - - if(M.reagents) - var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]]) - M.reagents.add_reagent(reagent_ids[mode], t) - reagent_volumes[reagent_ids[mode]] -= t - // to_chat(user, SPAN_NOTICE("[t] units injected. [reagent_volumes[reagent_ids[mode]]] units remaining.")) - to_chat(user, SPAN_NOTICE(" [t] units of \red [reagent_ids[mode]] \blue injected for a total of \red [round(M.reagents.get_reagent_amount(reagent_ids[mode]))]\blue. [reagent_volumes[reagent_ids[mode]]] units remaining.")) - - return - -/obj/item/reagent_container/borghypo/attack_self(mob/user) - ..() - var/selection = tgui_input_list(usr, "Please select a reagent:", "Reagent", reagent_ids) - if(!selection) return - var/datum/reagent/R = GLOB.chemical_reagents_list[selection] - to_chat(user, SPAN_NOTICE(" Synthesizer is now producing '[R.name]'.")) - mode = reagent_ids.Find(selection) - playsound(src.loc, 'sound/effects/pop.ogg', 15, 0) - return - -/obj/item/reagent_container/borghypo/get_examine_text(mob/user) - . = ..() - if (user != loc) return - - var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_ids[mode]] - - . += SPAN_NOTICE("It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left.") diff --git a/code/game/objects/items/reagent_containers/food.dm b/code/game/objects/items/reagent_containers/food.dm index ded1b90b106f..f4b2213904d2 100644 --- a/code/game/objects/items/reagent_containers/food.dm +++ b/code/game/objects/items/reagent_containers/food.dm @@ -9,7 +9,7 @@ possible_transfer_amounts = null volume = 50 //Sets the default container amount for all food items. flags_atom = CAN_BE_SYRINGED - var/filling_color = "#FFFFFF" //Used by sandwiches. + var/filling_color = COLOR_WHITE //Used by sandwiches. /obj/item/reagent_container/food/Initialize() . = ..() diff --git a/code/game/objects/items/reagent_containers/food/cans.dm b/code/game/objects/items/reagent_containers/food/cans.dm index aab2ee066e12..8cf28a9d560c 100644 --- a/code/game/objects/items/reagent_containers/food/cans.dm +++ b/code/game/objects/items/reagent_containers/food/cans.dm @@ -38,7 +38,6 @@ to_chat(user, SPAN_NOTICE("You need to open the drink!")) return var/datum/reagents/R = src.reagents - var/fillevel = gulp_size if(!R.total_volume || !R) if(M == user && M.a_intent == INTENT_HARM && M.zone_selected == "head") @@ -80,13 +79,6 @@ reagents.set_source_mob(user) reagents.trans_to_ingest(M, gulp_size) - if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - bro.cell.use(30) - var/refill = R.get_master_reagent_id() - spawn(1 MINUTES) - R.add_reagent(refill, fillevel) - playsound(M.loc,'sound/items/drink.ogg', 15, 1) return 1 @@ -270,7 +262,7 @@ /obj/item/reagent_container/food/drinks/cans/boda name = "\improper Boda" desc = "State regulated soda beverage. Enjoy comrades." - desc_lore = "Designed back in 2159, the advertising campaign for BODA started out as an attempt by the UPP to win the hearts and minds of colonists and settlers across the galaxy. Soon after, the ubiquitous cyan vendors and large supplies of the drink began to crop up in UA warehouses with seemingly no clear origin. Despite some concerns, after initial testing determined that the stored products were safe for consumption and surprisingly popular when blind-tested with focus groups, the strange surplus of BODA was authorized for usage within the UA-associated colonies. Subsequently, it enjoyed a relative popularity before falling into obscurity in the coming decades as supplies dwindled." + desc_lore = "Designed back in 2159, the advertising campaign for BODA started out as an attempt by the UPP to win the hearts and minds of colonists and settlers across the galaxy. Soon after, the ubiquitous cyan vendors and large supplies of the drink began to crop up in UA warehouses with seemingly no clear origin. Despite some concerns, after initial testing determined that the stored products were safe for consumption and surprisingly popular when blind-tested with focus groups, the strange surplus of BODA was authorized for usage within the UA-associated colonies. Subsequently, it enjoyed a relative popularity before falling into obscurity in the coming decades as supplies dwindled." icon_state = "boda" center_of_mass = "x=16;y=10" diff --git a/code/game/objects/items/reagent_containers/food/drinks.dm b/code/game/objects/items/reagent_containers/food/drinks.dm index db83723bc8df..0ec02b240e29 100644 --- a/code/game/objects/items/reagent_containers/food/drinks.dm +++ b/code/game/objects/items/reagent_containers/food/drinks.dm @@ -17,7 +17,6 @@ /obj/item/reagent_container/food/drinks/attack(mob/M, mob/user) var/datum/reagents/R = src.reagents - var/fillevel = gulp_size if(!R.total_volume || !R) to_chat(user, SPAN_DANGER("The [src.name] is empty!")) @@ -59,13 +58,6 @@ reagents.set_source_mob(user) reagents.trans_to_ingest(M, gulp_size) - if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - bro.cell.use(30) - var/refill = R.get_master_reagent_id() - spawn(1 MINUTES) - R.add_reagent(refill, fillevel) - playsound(M.loc,'sound/items/drink.ogg', 15, 1) return TRUE @@ -102,28 +94,9 @@ to_chat(user, SPAN_DANGER("[target] is full.")) return - - - var/datum/reagent/refill - var/datum/reagent/refillName - if(isrobot(user)) - refill = reagents.get_master_reagent_id() - refillName = reagents.get_master_reagent_name() - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, SPAN_NOTICE(" You transfer [trans] units of the solution to [target].")) - if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - var/chargeAmount = max(30,4*trans) - bro.cell.use(chargeAmount) - to_chat(user, "Now synthesizing [trans] units of [refillName]...") - - - spawn(30 SECONDS) - reagents.add_reagent(refill, trans) - to_chat(user, "Cyborg [src] refilled.") - return ..() /obj/item/reagent_container/food/drinks/get_examine_text(mob/user) diff --git a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm index 0e63a19c7ef1..b522d8d2ed81 100644 --- a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm +++ b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm @@ -107,7 +107,7 @@ if(alcohol_potency < BURN_LEVEL_TIER_1) to_chat(user, SPAN_NOTICE("There's not enough flammable liquid in \the [src]!")) return - alcohol_potency = Clamp(alcohol_potency, BURN_LEVEL_TIER_1, BURN_LEVEL_TIER_7) + alcohol_potency = clamp(alcohol_potency, BURN_LEVEL_TIER_1, BURN_LEVEL_TIER_7) if(!do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return diff --git a/code/game/objects/items/reagent_containers/food/sandwich.dm b/code/game/objects/items/reagent_containers/food/sandwich.dm index 511c0c042be1..b3f68bd299a9 100644 --- a/code/game/objects/items/reagent_containers/food/sandwich.dm +++ b/code/game/objects/items/reagent_containers/food/sandwich.dm @@ -74,7 +74,7 @@ name = lowertext("[fullname] sandwich") if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous"))] sandwich" - w_class = n_ceil(Clamp((ingredients.len/2),1,3)) + w_class = Ceiling(clamp((ingredients.len/2),1,3)) /obj/item/reagent_container/food/snacks/csandwich/Destroy() QDEL_NULL_LIST(ingredients) diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index 076a4f77cf01..3ae57723668f 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -503,7 +503,7 @@ /obj/item/reagent_container/food/snacks/egg/attackby(obj/item/W as obj, mob/user as mob) if(istype( W, /obj/item/toy/crayon )) var/obj/item/toy/crayon/C = W - var/clr = C.colourName + var/clr = C.colorName if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) to_chat(usr, SPAN_NOTICE(" The egg refuses to take on this color!")) @@ -569,7 +569,7 @@ name = "Boiled egg" desc = "A hard-boiled egg." icon_state = "egg" - filling_color = "#FFFFFF" + filling_color = COLOR_WHITE /obj/item/reagent_container/food/snacks/boiledegg/Initialize() . = ..() @@ -829,13 +829,6 @@ reagents.add_reagent("iron", 3) bitesize = 2 -/// Vanilla roburger - the nanites turn people into cyborgs -/obj/item/reagent_container/food/snacks/roburger/unsafe -/obj/item/reagent_container/food/snacks/roburger/unsafe/Initialize(mapload, ...) - . = ..() - if(prob(5)) - reagents.add_reagent("nanites", 2) - /obj/item/reagent_container/food/snacks/roburgerbig name = "roburger" desc = "This massive patty looks like poison. Beep." @@ -845,7 +838,6 @@ /obj/item/reagent_container/food/snacks/roburgerbig/Initialize() . = ..() - reagents.add_reagent("nanites", 100) bitesize = 0.1 /obj/item/reagent_container/food/snacks/xenoburger @@ -865,7 +857,7 @@ name = "Clown Burger" desc = "This tastes funny..." icon_state = "clownburger" - filling_color = "#FF00FF" + filling_color = COLOR_MAGENTA /obj/item/reagent_container/food/snacks/clownburger/Initialize() . = ..() @@ -881,7 +873,7 @@ name = "Mime Burger" desc = "Its taste defies language." icon_state = "mimeburger" - filling_color = "#FFFFFF" + filling_color = COLOR_WHITE /obj/item/reagent_container/food/snacks/mimeburger/Initialize() . = ..() @@ -1368,7 +1360,7 @@ name = "Tomato soup" desc = "Smells like copper" icon_state = "tomatosoup" - filling_color = "#FF0000" + filling_color = COLOR_RED /obj/item/reagent_container/food/snacks/bloodsoup/Initialize() . = ..() @@ -2128,7 +2120,7 @@ desc = "A tasty dessert that won't make it through a metal detector." icon_state = "gappletart" trash = /obj/item/trash/plate - filling_color = "#FFFF00" + filling_color = COLOR_YELLOW /obj/item/reagent_container/food/snacks/appletart/Initialize() . = ..() diff --git a/code/game/objects/items/reagent_containers/food/snacks/grown.dm b/code/game/objects/items/reagent_containers/food/snacks/grown.dm index 32423c121b61..4c988f18ac7c 100644 --- a/code/game/objects/items/reagent_containers/food/snacks/grown.dm +++ b/code/game/objects/items/reagent_containers/food/snacks/grown.dm @@ -62,7 +62,7 @@ name = "cherries" desc = "Great for toppings!" icon_state = "cherry" - filling_color = "#FF0000" + filling_color = COLOR_RED gender = PLURAL plantname = "cherry" @@ -357,7 +357,7 @@ name = "chili" desc = "It's spicy! Wait... IT'S BURNING ME!!" icon_state = "chilipepper" - filling_color = "#FF0000" + filling_color = COLOR_RED plantname = "chili" /obj/item/reagent_container/food/snacks/grown/eggplant @@ -379,7 +379,7 @@ name = "tomato" desc = "I say to-mah-to, you say tom-mae-to." icon_state = "tomato" - filling_color = "#FF0000" + filling_color = COLOR_RED potency = 10 plantname = "tomato" @@ -395,7 +395,7 @@ desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!" icon_state = "killertomato" potency = 10 - filling_color = "#FF0000" + filling_color = COLOR_RED potency = 30 plantname = "killertomato" @@ -414,7 +414,7 @@ desc = "So bloody...so...very...bloody....AHHHH!!!!" icon_state = "bloodtomato" potency = 10 - filling_color = "#FF0000" + filling_color = COLOR_RED plantname = "bloodtomato" /obj/item/reagent_container/food/snacks/grown/bloodtomato/launch_impact(atom/hit_atom) @@ -502,7 +502,7 @@ desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know." icon_state = "amanita" potency = 10 - filling_color = "#FF0000" + filling_color = COLOR_RED plantname = "amanita" /obj/item/reagent_container/food/snacks/grown/mushroom/angel diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/reagent_containers/robot_parts.dm similarity index 76% rename from code/game/objects/items/robot/robot_parts.dm rename to code/game/objects/items/reagent_containers/robot_parts.dm index b853b24d1013..3a188bda6a50 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/reagent_containers/robot_parts.dm @@ -164,72 +164,6 @@ else to_chat(user, SPAN_NOTICE(" You need to attach a flash to it first!")) - if(istype(W, /obj/item/device/mmi)) - var/obj/item/device/mmi/M = W - if(check_completion()) - if(!istype(loc,/turf)) - to_chat(user, SPAN_DANGER("You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.")) - return - if(!M.brainmob) - to_chat(user, SPAN_DANGER("Sticking an empty [W] into the frame would sort of defeat the purpose.")) - return - if(!M.brainmob.key) - var/ghost_can_reenter = 0 - if(M.brainmob.mind) - for(var/mob/dead/observer/G in GLOB.observer_list) - if(G.can_reenter_corpse && G.mind == M.brainmob.mind) - ghost_can_reenter = 1 - break - if(!ghost_can_reenter) - to_chat(user, SPAN_NOTICE("\The [W] is completely unresponsive; there's no point.")) - return - - if(M.brainmob.stat == DEAD) - to_chat(user, SPAN_DANGER("Sticking a dead [W] into the frame would sort of defeat the purpose.")) - return - - if(jobban_isbanned(M.brainmob, "Cyborg")) - to_chat(user, SPAN_DANGER("This [W] does not seem to fit.")) - return - - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1) - if(!O) return - - user.drop_held_item() - - O.mmi = W - O.invisibility = 0 - O.custom_name = created_name - O.updatename("Default") - - M.brainmob.mind.transfer_to(O) - - O.job = "Cyborg" - - O.cell = chest.cell - O.cell.forceMove(O) - W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame. - - // Since we "magically" installed a cell, we also have to update the correct component. - if(O.cell) - var/datum/robot_component/cell_component = O.components["power cell"] - cell_component.wrapped = O.cell - cell_component.installed = 1 - O.Namepick() - - qdel(src) - else - to_chat(user, SPAN_NOTICE(" The MMI must go in after everything else!")) - - if (HAS_TRAIT(W, TRAIT_TOOL_PEN)) - var/t = stripped_input(user, "Enter new robot name", src.name, src.created_name, MAX_NAME_LEN) - if (!t) - return - if (!in_range(src, usr) && src.loc != usr) - return - - src.created_name = t - return /obj/item/robot_parts/chest/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm deleted file mode 100644 index 476390fda6e8..000000000000 --- a/code/game/objects/items/robot/robot_items.dm +++ /dev/null @@ -1,83 +0,0 @@ -//********************************************************************** -// Cyborg Spec Items -//***********************************************************************/ -//Might want to move this into several files later but for now it works here -/obj/item/robot/stun - name = "electrified arm" - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "shock" - -/obj/item/robot/stun/attack(mob/M as mob, mob/living/silicon/robot/user as mob) - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey]) in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - - user.cell.charge -= 30 - - playsound(M.loc, 'sound/weapons/Egloves.ogg', 25, 1, 4) - M.apply_effect(5, WEAKEN) - if (M.stuttering < 5) - M.stuttering = 5 - M.apply_effect(5, STUN) - - for(var/mob/O in viewers(M, null)) - if (O.client) - O.show_message(SPAN_DANGER("[user] has prodded [M] with an electrically-charged arm!"), SHOW_MESSAGE_VISIBLE, SPAN_DANGER("You hear someone fall"), SHOW_MESSAGE_AUDIBLE) - -/obj/item/robot/overdrive - name = "overdrive" - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "shock" - -//********************************************************************** -// HUD/SIGHT things -//***********************************************************************/ -/obj/item/robot/sight - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "securearea" - var/sight_mode = null - - -/obj/item/robot/sight/xray - name = "\proper x-ray Vision" - sight_mode = BORGXRAY - - -/obj/item/robot/sight/thermal - name = "\proper thermal vision" - sight_mode = BORGTHERM - icon_state = "thermal" - icon = 'icons/obj/items/clothing/glasses.dmi' - - -/obj/item/robot/sight/meson - name = "\proper meson vision" - sight_mode = BORGMESON - icon_state = "meson" - icon = 'icons/obj/items/clothing/glasses.dmi' - -/obj/item/robot/sight/hud - name = "hud" - var/obj/item/clothing/glasses/hud/hud = null - - -/obj/item/robot/sight/hud/med - name = "medical hud" - icon_state = "healthhud" - icon = 'icons/obj/items/clothing/glasses.dmi' - -/obj/item/robot/sight/hud/sec/New() - ..() - hud = new /obj/item/clothing/glasses/hud/health(src) - return - - -/obj/item/robot/sight/hud/sec - name = "security hud" - icon_state = "securityhud" - icon = 'icons/obj/items/clothing/glasses.dmi' - -/obj/item/robot/sight/hud/sec/New() - ..() - hud = new /obj/item/clothing/glasses/hud/security(src) - return diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm deleted file mode 100644 index de2daa9a3009..000000000000 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ /dev/null @@ -1,149 +0,0 @@ -// robot_upgrades.dm -// Contains various borg upgrades. - -/obj/item/robot/upgrade - name = "borg upgrade module." - desc = "Protected by FRM." - icon = 'icons/obj/items/circuitboards.dmi' - icon_state = "cyborg_upgrade" - var/locked = 0 - var/require_module = 0 - var/installed = 0 - -/obj/item/robot/upgrade/proc/action(mob/living/silicon/robot/R) - if(R.stat == DEAD) - to_chat(usr, SPAN_DANGER("[src] will not function on a deceased robot.")) - return 1 - return 0 - - -/obj/item/robot/upgrade/reset - name = "robotic module reset board" - desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot." - icon_state = "cyborg_upgrade1" - require_module = 1 - -/obj/item/robot/upgrade/reset/action(mob/living/silicon/robot/R) - if(..()) return 0 - R.uneq_all() - R.hands.icon_state = "nomod" - R.icon_state = "robot" - QDEL_NULL(R.module) - R.camera.network.Remove(list("Engineering","Medical","MINE")) - R.updatename("Default") - R.status_flags |= CANPUSH - R.update_icons() - - return 1 - -/obj/item/robot/upgrade/rename - name = "robot reclassification board" - desc = "Used to rename a cyborg." - icon_state = "cyborg_upgrade1" - var/heldname = "default name" - -/obj/item/robot/upgrade/rename/attack_self(mob/user) - ..() - heldname = stripped_input(user, "Enter new robot name", "Robot Reclassification", heldname, MAX_NAME_LEN) - -/obj/item/robot/upgrade/rename/action(mob/living/silicon/robot/R) - if(..()) return 0 - R.custom_name = heldname - R.change_real_name(R, heldname) - - return 1 - -/obj/item/robot/upgrade/restart - name = "robot emergency restart module" - desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online." - icon_state = "cyborg_upgrade1" - - -/obj/item/robot/upgrade/restart/action(mob/living/silicon/robot/R) - if(R.health < 0) - to_chat(usr, "You have to repair the robot before using this module!") - return 0 - - if(!R.key) - for(var/mob/dead/observer/ghost in GLOB.observer_list) - if(ghost.mind && ghost.mind.original == R) - R.key = ghost.key - if(R.client) R.client.change_view(GLOB.world_view_size) - break - - R.set_stat(CONSCIOUS) - return 1 - - -/obj/item/robot/upgrade/vtec - name = "robotic VTEC Module" - desc = "Used to kick in a robot's VTEC systems, increasing their speed." - icon_state = "cyborg_upgrade2" - require_module = 1 - -/obj/item/robot/upgrade/vtec/action(mob/living/silicon/robot/R) - if(..()) return 0 - - if(R.speed == -1) - return 0 - - R.speed-- - return 1 - - -/obj/item/robot/upgrade/tasercooler - name = "robotic Rapid Taser Cooling Module" - desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate." - icon_state = "cyborg_upgrade3" - require_module = 1 - - -/obj/item/robot/upgrade/tasercooler/action(mob/living/silicon/robot/R) - if(..()) return 0 -/* - - if(!istype(R.module, /obj/item/circuitboard/robot_module/security)) - to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") - to_chat(usr, "There's no mounting point for the module!") - return 0 - - var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module - if(!T) - T = locate() in R.module.contents - if(!T) - T = locate() in R.module.modules - if(!T) - to_chat(usr, "This robot has had its taser removed!") - return 0 - - if(T.recharge_time <= 2) - to_chat(R, "Maximum cooling achieved for this hardpoint!") - to_chat(usr, "There's no room for another cooling unit!") - return 0 - - else - T.recharge_time = max(2 , T.recharge_time - 4) -*/ - return 1 - -/obj/item/robot/upgrade/jetpack - name = "mining robot jetpack" - desc = "A carbon dioxide jetpack suitable for low-gravity mining operations." - icon_state = "cyborg_upgrade3" - require_module = 1 - -/obj/item/robot/upgrade/jetpack/action(mob/living/silicon/robot/R) - if(..()) return 0 - - R.module.modules += new/obj/item/tank/jetpack/carbondioxide - for(var/obj/item/tank/jetpack/carbondioxide in R.module.modules) - R.internal = src - //R.icon_state="Miner+j" - return 1 - - -/obj/item/robot/upgrade/syndicate - name = "illegal equipment module" - desc = "Unlocks the hidden, deadlier functions of a robot" - icon_state = "cyborg_upgrade3" - require_module = 1 diff --git a/code/game/objects/items/stacks/cable_coil.dm b/code/game/objects/items/stacks/cable_coil.dm index e846979c00b4..077cb801c90d 100644 --- a/code/game/objects/items/stacks/cable_coil.dm +++ b/code/game/objects/items/stacks/cable_coil.dm @@ -33,7 +33,7 @@ /obj/item/stack/cable_coil/proc/updateicon() if (!color) - color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_ORANGE, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) + color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_ORANGE, COLOR_WHITE, COLOR_MAGENTA, COLOR_YELLOW, COLOR_CYAN) if(amount == 1) icon_state = "coil1" name = "cable piece" @@ -298,11 +298,11 @@ color = "#a8c1dd" /obj/item/stack/cable_coil/white - color = "#FFFFFF" + color = COLOR_WHITE /obj/item/stack/cable_coil/random/Initialize() . = ..() - color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN) + color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_MAGENTA, COLOR_YELLOW, COLOR_CYAN) /obj/item/stack/cable_coil/attack(mob/M as mob, mob/user as mob) if(ishuman(M)) diff --git a/code/game/objects/items/stacks/flags.dm b/code/game/objects/items/stacks/flags.dm index bc55096211d4..484d2779f5f8 100644 --- a/code/game/objects/items/stacks/flags.dm +++ b/code/game/objects/items/stacks/flags.dm @@ -71,7 +71,7 @@ var/obj/item/stack/flag/newflag = new src.type(T) newflag.amount = 1 newflag.upright = TRUE - anchored = TRUE + newflag.anchored = TRUE newflag.name = newflag.singular_name newflag.icon_state = "[newflag.base_state]_open" newflag.visible_message("[user] plants [newflag] firmly in the ground.") diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 5434aa006137..c4a496a12366 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -21,7 +21,7 @@ to_chat(user, SPAN_DANGER("\The [src] cannot be applied to [M]!")) return 1 - if(!ishuman(user) && !isrobot(user)) + if(!ishuman(user)) to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!")) return 1 diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 754a36c6012a..156fbf548f5f 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -15,17 +15,6 @@ /obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob) if (!istype(M) || !istype(user)) return 0 - if (isrobot(M)) //Repairing cyborgs - var/mob/living/silicon/robot/R = M - if (R.getBruteLoss() || R.getFireLoss() ) - R.apply_damage(-15, BRUTE) - R.apply_damage(-15, BURN) - R.updatehealth() - use(1) - user.visible_message(SPAN_NOTICE("\The [user] applied some [src] at [R]'s damaged areas."),\ - SPAN_NOTICE("You apply some [src] at [R]'s damaged areas.")) - else - to_chat(user, SPAN_NOTICE("All [R]'s systems are nominal.")) if (istype(M,/mob/living/carbon/human)) //Repairing robolimbs var/mob/living/carbon/human/H = M diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index a0814290ca40..cb5071326e13 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -27,6 +27,7 @@ GLOBAL_LIST_INIT_TYPED(metal_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("wall girder", /obj/structure/girder, 2, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ new/datum/stack_recipe("window frame", /obj/structure/window_frame/almayer, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ new/datum/stack_recipe("airlock assembly", /obj/structure/airlock_assembly, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ + new/datum/stack_recipe("large airlock assembly", /obj/structure/airlock_assembly/multi_tile, 5, time = 50, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1, skill_req = SKILL_CONSTRUCTION, skill_lvl = SKILL_CONSTRUCTION_ENGI), \ null, \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ new/datum/stack_recipe("chair", /obj/structure/bed/chair, one_per_turf = ONE_TYPE_PER_TURF, on_floor = 1), \ @@ -258,6 +259,8 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("empty magazine box (M41A Incen)", /obj/item/ammo_box/magazine/incen/empty), \ new/datum/stack_recipe("empty magazine box (M41A LE)", /obj/item/ammo_box/magazine/le/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (XM51)", /obj/item/ammo_box/magazine/xm51/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M41A MK1)", /obj/item/ammo_box/magazine/mk1/empty), \ new/datum/stack_recipe("empty magazine box (M41A MK1 AP)", /obj/item/ammo_box/magazine/mk1/ap/empty), \ null, \ @@ -280,6 +283,7 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("empty shotgun shell box (Incendiary)", /obj/item/ammo_box/magazine/shotgun/incendiary/empty), \ new/datum/stack_recipe("empty shotgun shell box (Incendiary Buckshot)", /obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty), \ new/datum/stack_recipe("empty shotgun shell box (Slugs)", /obj/item/ammo_box/magazine/shotgun/empty), \ + new/datum/stack_recipe("empty shotgun shell box (16g) (Breaching)", /obj/item/ammo_box/magazine/shotgun/light/breaching/empty), \ null, \ new/datum/stack_recipe("empty 45-70 bullets box", /obj/item/ammo_box/magazine/lever_action/empty), \ new/datum/stack_recipe("empty 45-70 bullets box (Blanks)", /obj/item/ammo_box/magazine/lever_action/training/empty), \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 82e091be9008..f8a6af3cf24f 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -144,7 +144,9 @@ Also change the icon to reflect the amount of sheets, if possible.*/ list_recipes(usr, text2num(href_list["sublist"])) if(href_list["make"]) - if(amount < 1) qdel(src) //Never should happen + if(amount < 1) + qdel(src) //Never should happen + return var/list/recipes_list = recipes if(href_list["sublist"]) @@ -152,7 +154,11 @@ Also change the icon to reflect the amount of sheets, if possible.*/ recipes_list = srl.recipes var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) - if(!isnum(multiplier)) + if(multiplier != multiplier) // isnan + message_admins("[key_name_admin(usr)] has attempted to multiply [src] with NaN") + return + if(!isnum(multiplier)) // this used to block nan... + message_admins("[key_name_admin(usr)] has attempted to multiply [src] with !isnum") return multiplier = round(multiplier) if(multiplier < 1) @@ -277,11 +283,15 @@ Also change the icon to reflect the amount of sheets, if possible.*/ if(used > amount) //If it's larger than what we have, no go. return FALSE amount -= used - update_icon() if(amount <= 0) - if(usr && loc == usr) - usr.temp_drop_inv_item(src) + if(loc == usr) + usr?.temp_drop_inv_item(src) + else if(isstorage(loc)) + var/obj/item/storage/storage = loc + storage.remove_from_storage(src) qdel(src) + else + update_icon() return TRUE /obj/item/stack/proc/add(extra) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 40953eb97395..a977eb880ff5 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -903,6 +903,7 @@ var/drawSound = 'sound/weapons/gun_pistol_draw.ogg' ///Used to get flap overlay states as inserting a gun changes icon state. var/base_icon + var/gun_has_gamemode_skin can_hold = list( /obj/item/weapon/gun/pistol, /obj/item/ammo_magazine/pistol, @@ -966,6 +967,14 @@ */ playsound(src, drawSound, 7, TRUE) var/image/gun_underlay = image(icon, current_gun.base_gun_icon) + if(gun_has_gamemode_skin) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + gun_underlay = image(icon, "s_" + current_gun.base_gun_icon) + if("desert") + gun_underlay = image(icon, "d_" + current_gun.base_gun_icon) + if("classic") + gun_underlay = image(icon, "c_" + current_gun.base_gun_icon) gun_underlay.pixel_x = holster_slots[slot]["icon_x"] gun_underlay.pixel_y = holster_slots[slot]["icon_y"] gun_underlay.color = current_gun.color @@ -1186,6 +1195,60 @@ "icon_x" = -11, "icon_y" = -5)) +#define MAXIMUM_MAGAZINE_COUNT 2 + +/obj/item/storage/belt/gun/xm51 + name = "\improper M276 pattern XM51 holster rig" + desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is for the XM51 breaching scattergun, allowing easier storage of the weapon. It features pouches for storing two magazines along with extra shells." + icon_state = "xm51_holster" + has_gamemode_skin = TRUE + gun_has_gamemode_skin = TRUE + storage_slots = 8 + max_w_class = 5 + can_hold = list( + /obj/item/weapon/gun/rifle/xm51, + /obj/item/ammo_magazine/rifle/xm51, + /obj/item/ammo_magazine/handful, + ) + holster_slots = list( + "1" = list( + "icon_x" = 10, + "icon_y" = -1)) + + //Keep a track of how many magazines are inside the belt. + var/magazines = 0 + +/obj/item/storage/belt/gun/xm51/attackby(obj/item/item, mob/user) + if(istype(item, /obj/item/ammo_magazine/shotgun/light/breaching)) + var/obj/item/ammo_magazine/shotgun/light/breaching/ammo_box = item + dump_ammo_to(ammo_box, user, ammo_box.transfer_handful_amount) + else + return ..() + +/obj/item/storage/belt/gun/xm51/can_be_inserted(obj/item/item, mob/user, stop_messages = FALSE) + . = ..() + if(magazines >= MAXIMUM_MAGAZINE_COUNT && istype(item, /obj/item/ammo_magazine/rifle/xm51)) + if(!stop_messages) + to_chat(usr, SPAN_WARNING("[src] can't hold any more magazines.")) + return FALSE + +/obj/item/storage/belt/gun/xm51/handle_item_insertion(obj/item/item, prevent_warning = FALSE, mob/user) + . = ..() + if(istype(item, /obj/item/ammo_magazine/rifle/xm51)) + magazines++ + +/obj/item/storage/belt/gun/xm51/remove_from_storage(obj/item/item as obj, atom/new_location) + . = ..() + if(istype(item, /obj/item/ammo_magazine/rifle/xm51)) + magazines-- + +//If a magazine disintegrates due to acid or something else while in the belt, remove it from the count. +/obj/item/storage/belt/gun/xm51/on_stored_atom_del(atom/movable/item) + if(istype(item, /obj/item/ammo_magazine/rifle/xm51)) + magazines-- + +#undef MAXIMUM_MAGAZINE_COUNT + /obj/item/storage/belt/gun/m44 name = "\improper M276 pattern M44 holster rig" desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is for the M44 magnum revolver, along with six small pouches for speedloaders. It smells faintly of hay." diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index d12f09c2042e..f7ada8ce220c 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -103,11 +103,11 @@ overlays = list() //resets list overlays += image('icons/obj/items/crayons.dmi',"crayonbox") for(var/obj/item/toy/crayon/crayon in contents) - overlays += image('icons/obj/items/crayons.dmi',crayon.colourName) + overlays += image('icons/obj/items/crayons.dmi',crayon.colorName) /obj/item/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/toy/crayon)) - switch(W:colourName) + switch(W:colorName) if("mime") to_chat(usr, "This crayon is too sad to be contained in this box.") return diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 06337995479f..3b2dbfa33aa4 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -173,7 +173,7 @@ /obj/item/storage/firstaid/synth name = "synthetic repair kit" - desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack seperately.' With medical training you can fit this in a backpack." + desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack separately.' With medical training you can fit this in a backpack." icon_state = "bezerk" item_state = "firstaid-advanced" can_hold = list( diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index acb87e988879..5be788dce25c 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -976,7 +976,7 @@ to_chat(user, SPAN_WARNING("[O] is empty!")) return - var/amt_to_remove = Clamp(O.reagents.total_volume, 0, inner.volume) + var/amt_to_remove = clamp(O.reagents.total_volume, 0, inner.volume) if(!amt_to_remove) to_chat(user, SPAN_WARNING("[O] is empty!")) return @@ -989,7 +989,7 @@ fill_autoinjector(contents[1]) //Top up our inner reagent canister after filling up the injector - amt_to_remove = Clamp(O.reagents.total_volume, 0, inner.volume) + amt_to_remove = clamp(O.reagents.total_volume, 0, inner.volume) if(amt_to_remove) O.reagents.trans_to(inner, amt_to_remove) @@ -1107,8 +1107,8 @@ name = "flare pouch" desc = "A pouch designed to hold flares. Refillable with an M94 flare pack." max_w_class = SIZE_SMALL - storage_slots = 8 - max_storage_space = 8 + storage_slots = 16 + max_storage_space = 16 storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD icon_state = "flare" can_hold = list(/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare/signal) diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 6e7e891d6ba8..51a73d2f0444 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -559,11 +559,6 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ //This proc is called when you want to place an item into the storage item. /obj/item/storage/attackby(obj/item/W as obj, mob/user as mob) ..() - - if(isrobot(user)) - to_chat(user, SPAN_NOTICE(" You're a robot. No.")) - return //Robots can't interact with storage items. - return attempt_item_insertion(W, FALSE, user) /obj/item/storage/equipped(mob/user, slot, silent) diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index 8fc97f973702..d5cd708f29b3 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -721,6 +721,22 @@ CIGARETTE PACKETS ARE IN FANCY.DM log_admin("[user] has engraved \the [src] with engraving \"[str]\". (CKEY: ([user.ckey]))") +/obj/item/tool/lighter/zippo/black + name = "black Zippo lighter" + desc = "A fancy black Zippo lighter. Ignite in style." + icon_state = "blackzippo" + item_state = "blackzippo" + icon_on = "blackzippoon" + icon_off = "blackzippo" + +/obj/item/tool/lighter/zippo/blue + name = "blue Zippo lighter" + desc = "A fancy blue Zippo lighter. Ignite in style." + icon_state = "bluezippo" + item_state = "bluezippo" + icon_on = "bluezippoon" + icon_off = "bluezippo" + /obj/item/tool/lighter/zippo/gold name = "golden Zippo lighter" desc = "A gold-anodized Zippo lighter. Ostentatious, but it certainly stands out." @@ -730,6 +746,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "goldzippo" black_market_value = 30 +/obj/item/tool/lighter/zippo/executive + name = "Weyland-Yutani executive Zippo lighter" + desc = "A remarkable Zippo lighter embellished in the Company's black and gold shade." + icon_state = "execzippo" + item_state = "execzippo" + icon_on = "execzippoon" + icon_off = "execzippo" + black_market_value = 40 + /obj/item/tool/lighter/random /obj/item/tool/lighter/random/Initialize() diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index 44aaab771db8..06f42aacd56c 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -161,7 +161,7 @@ matter = list("metal" = 10) inherent_traits = list(TRAIT_TOOL_PEN) /// what color the ink is! - var/pen_colour = "black" + var/pen_color = "black" var/on = TRUE var/clicky = FALSE @@ -180,7 +180,7 @@ /obj/item/tool/pen/proc/update_pen_state() overlays.Cut() if(on) - overlays += "+[pen_colour]_tip" + overlays += "+[pen_color]_tip" /obj/item/tool/pen/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() @@ -246,7 +246,7 @@ /obj/item/tool/pen/blue desc = "It's a normal blue ink pen." - pen_colour = "blue" + pen_color = "blue" /obj/item/tool/pen/blue/clicky desc = "It's a WY brand extra clicky blue ink pen." @@ -255,7 +255,7 @@ /obj/item/tool/pen/red desc = "It's a normal red ink pen." - pen_colour = "red" + pen_color = "red" /obj/item/tool/pen/red/clicky desc = "It's a WY brand extra clicky red ink pen." @@ -264,7 +264,7 @@ /obj/item/tool/pen/green desc = "It's a normal green ink pen." - pen_colour = "green" + pen_color = "green" /obj/item/tool/pen/green/clicky desc = "It's a WY brand extra clicky green ink pen." @@ -273,7 +273,7 @@ /obj/item/tool/pen/invisible desc = "It's an invisible pen marker." - pen_colour = "white" + pen_color = "white" /obj/item/tool/pen/fountain desc = "A lavish testament to the ingenuity of ARMAT's craftsmanship, this fountain pen is a paragon of design and functionality. Detailed with golden accents and intricate mechanics, the pen allows for a swift change between a myriad of ink colors with a simple twist. A product of precision engineering, each mechanism inside the pen is designed to provide a seamless, effortless transition from one color to the next, creating an instrument of luxurious versatility." @@ -282,8 +282,8 @@ icon_state = "fountain_pen" item_state = "fountain_pen" matter = list("metal" = 20, "gold" = 10) - var/static/list/colour_list = list("red", "blue", "green", "yellow", "purple", "pink", "brown", "black", "orange") // Can add more colors as required - var/current_colour_index = 1 + var/static/list/color_list = list("red", "blue", "green", "yellow", "purple", "pink", "brown", "black", "orange") // Can add more colors as required + var/current_color_index = 1 var/owner_name /obj/item/tool/pen/fountain/pickup(mob/user, silent) @@ -305,9 +305,9 @@ /obj/item/tool/pen/fountain/attack_self(mob/living/carbon/human/user) if(on) - current_colour_index = (current_colour_index % length(colour_list)) + 1 - pen_colour = colour_list[current_colour_index] - balloon_alert(user,"you twist the pen and change the ink color to [pen_colour].") + current_color_index = (current_color_index % length(color_list)) + 1 + pen_color = color_list[current_color_index] + balloon_alert(user,"you twist the pen and change the ink color to [pen_color].") if(clicky) playsound(user.loc, 'sound/items/pen_click_on.ogg', 100, 1, 5) update_pen_state() @@ -415,6 +415,10 @@ name = "\improper DENIED rubber stamp" icon_state = "stamp-deny" +/obj/item/tool/stamp/approved + name = "\improper APPROVED rubber stamp" + icon_state = "stamp-approve" + /obj/item/tool/stamp/clown name = "clown's rubber stamp" icon_state = "stamp-clown" diff --git a/code/game/objects/items/tools/shovel_tools.dm b/code/game/objects/items/tools/shovel_tools.dm index ad74dca54e88..b4aa41c5843f 100644 --- a/code/game/objects/items/tools/shovel_tools.dm +++ b/code/game/objects/items/tools/shovel_tools.dm @@ -26,7 +26,7 @@ /obj/item/tool/shovel/update_icon() var/image/I = image(icon,src,dirt_overlay) - switch(dirt_type) // We can actually shape the color for what enviroment we dig up our dirt in. + switch(dirt_type) // We can actually shape the color for what environment we dig up our dirt in. if(DIRT_TYPE_GROUND) I.color = "#512A09" if(DIRT_TYPE_MARS) I.color = "#FF5500" if(DIRT_TYPE_SNOW) I.color = "#EBEBEB" diff --git a/code/game/objects/items/tools/surgery_tools.dm b/code/game/objects/items/tools/surgery_tools.dm index 9f6ae67baf35..2e2725b52b81 100644 --- a/code/game/objects/items/tools/surgery_tools.dm +++ b/code/game/objects/items/tools/surgery_tools.dm @@ -195,16 +195,78 @@ */ /obj/item/tool/surgery/bonegel - name = "bone gel" + name = "bottle of bone gel" + desc = "A container for bone gel that often needs to be refilled from a specialized machine." + desc_lore = "Bone gel is a biological synthetic bone-analogue with the consistency of clay. It is capable of fixing hairline fractures and complex fractures alike. Bone gel should not be used to fix missing bone, as it does not replace the body's bone marrow. Overuse in a short period may cause acute immunodeficiency or anemia." icon_state = "bone-gel" - force = 0 - throwforce = 1 w_class = SIZE_SMALL matter = list("plastic" = 7500) + ///percent of gel remaining in container + var/remaining_gel = 100 + ///If gel is used when doing bone surgery + var/unlimited_gel = FALSE + ///Time it takes per 10% of gel refilled + var/time_per_refill = 1 SECONDS + ///if the bone gel is actively being refilled + var/refilling = FALSE + + ///How much bone gel is needed to fix a fracture + var/fracture_fix_cost = 5 + ///How much bone gel is needed to mend bones + var/mend_bones_fix_cost = 5 + +/obj/item/tool/surgery/bonegel/get_examine_text(mob/user) + . = ..() + if(unlimited_gel) //Only show how much gel is left if it actually uses bone gel + return + . += "A volume reader on the side tells you there is still [remaining_gel]% of [src] is remaining." + . += "[src] can be refilled from a osteomimetic lattice fabricator." + + if(!skillcheck(user, SKILL_MEDICAL, SKILL_MEDICAL_DOCTOR)) //Know how much you will be using if you can use it + return + . += SPAN_NOTICE("You would need to use [fracture_fix_cost]% of the bone gel to repair a fracture.") + . += SPAN_NOTICE("You would need to use [mend_bones_fix_cost]% of the bone gel to mend bones.") + +/obj/item/tool/surgery/bonegel/proc/refill_gel(obj/refilling_obj, mob/user) + if(unlimited_gel) + to_chat(user, SPAN_NOTICE("[refilling_obj] refuses to fill [src].")) + return + if(remaining_gel >= 100) + to_chat(user, SPAN_NOTICE("[src] cannot be filled with any more bone gel.")) + return + + if(refilling) + to_chat(user, SPAN_NOTICE("You are already refilling [src] from [refilling_obj].")) + return + refilling = TRUE + + while(remaining_gel < 100) + if(!do_after(user, time_per_refill, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, refilling_obj)) + break + remaining_gel = clamp(remaining_gel + 10, 0, 100) + to_chat(user, SPAN_NOTICE("[refilling_obj] chimes, and displays \"[remaining_gel]% filled\".")) + + refilling = FALSE + playsound(refilling_obj, "sound/machines/ping.ogg", 10) + to_chat(user, SPAN_NOTICE("You remove [src] from [refilling_obj].")) + +/obj/item/tool/surgery/bonegel/proc/use_gel(gel_cost) + if(unlimited_gel) + return TRUE + + if(remaining_gel < gel_cost) + return FALSE + remaining_gel -= gel_cost + return TRUE + +/obj/item/tool/surgery/bonegel/empty + remaining_gel = 0 /obj/item/tool/surgery/bonegel/predatorbonegel name = "gel gun" + desc = "Inside is a liquid that is similar in effect to bone gel, but requires much smaller quantities, allowing near infinite use from a single capsule." icon_state = "predator_bone-gel" + unlimited_gel = TRUE /* * Fix-o-Vein diff --git a/code/game/objects/items/toys/cards.dm b/code/game/objects/items/toys/cards.dm index 2debd83f9bab..39584b2bbb89 100644 --- a/code/game/objects/items/toys/cards.dm +++ b/code/game/objects/items/toys/cards.dm @@ -30,6 +30,10 @@ . = ..() populate_deck() +/obj/item/toy/deck/Destroy(force) + . = ..() + QDEL_NULL_LIST(cards) + /obj/item/toy/deck/get_examine_text(mob/user) . = ..() . += SPAN_NOTICE("There are [length(cards)] cards remaining in the deck.") @@ -75,6 +79,7 @@ var/obj/item/toy/handcard/H = O for(var/datum/playing_card/P as anything in H.cards) cards += P + H.cards -= P update_icon() qdel(O) user.visible_message(SPAN_NOTICE("[user] places their cards on the bottom of \the [src]."), SPAN_NOTICE("You place your cards on the bottom of the deck.")) @@ -271,6 +276,10 @@ if(!concealed) . += " ([length(cards)] card\s)" +/obj/item/toy/handcard/Destroy(force) + . = ..() + QDEL_NULL_LIST(cards) + /obj/item/toy/handcard/aceofspades icon_state = "spades_ace" desc = "An Ace of Spades" @@ -315,6 +324,9 @@ //fuck any qsorts and merge sorts. This needs to be brutally easy var/cards_length = length(cards) + if(cards_length >= 200) + to_chat(usr, SPAN_WARNING("Your hand is too big to sort. Remove some cards.")) + return for(var/i = 1 to cards_length) for(var/k = 2 to cards_length) if(cards[i].sort_index > cards[k].sort_index) @@ -331,6 +343,7 @@ var/cards_length = length(H.cards) for(var/datum/playing_card/P in H.cards) cards += P + H.cards -= P qdel(O) if(pile_state) if(concealed) @@ -339,6 +352,9 @@ user.visible_message(SPAN_NOTICE("\The [user] adds [cards_length > 1 ? "their hand" : "[cards[length(cards)].name]"] to \the [src]."), SPAN_NOTICE("You add [cards_length > 1 ? "your hand" : "[cards[length(cards)].name]"] to \the [src].")) else if(loc != user) + if(isstorage(loc)) + var/obj/item/storage/storage = loc + storage.remove_from_storage(src) user.put_in_hands(src) update_icon() return @@ -390,6 +406,12 @@ /obj/item/toy/handcard/MouseDrop(atom/over) if(usr != over || !Adjacent(usr)) return + if(ismob(loc)) + return + + if(isstorage(loc)) + var/obj/item/storage/storage = loc + storage.remove_from_storage(src) usr.put_in_hands(src) /obj/item/toy/handcard/get_examine_text(mob/user) @@ -423,6 +445,12 @@ name = "a playing card" desc = "A playing card." + if(length(cards) >= 200) + // BYOND will flat out choke when using thousands of cards for some unknown reason, + // possibly due to the transformed overlay stacking below. Nobody's gonna see the + // difference past 40 or so anyway. + return + overlays.Cut() if(!cards_length) diff --git a/code/game/objects/items/toys/crayons.dm b/code/game/objects/items/toys/crayons.dm index c02b59289fa1..1d9e2e1a4d54 100644 --- a/code/game/objects/items/toys/crayons.dm +++ b/code/game/objects/items/toys/crayons.dm @@ -1,70 +1,70 @@ /obj/item/toy/crayon/red icon_state = "crayonred" crayon_color = "#DA0000" - shadeColour = "#810C0C" - colourName = "red" + shade_color = "#810C0C" + colorName = "red" /obj/item/toy/crayon/orange icon_state = "crayonorange" crayon_color = "#FF9300" - shadeColour = "#A55403" - colourName = "orange" + shade_color = "#A55403" + colorName = "orange" /obj/item/toy/crayon/yellow icon_state = "crayonyellow" crayon_color = "#FFF200" - shadeColour = "#886422" - colourName = "yellow" + shade_color = "#886422" + colorName = "yellow" /obj/item/toy/crayon/green icon_state = "crayongreen" crayon_color = "#A8E61D" - shadeColour = "#61840F" - colourName = "green" + shade_color = "#61840F" + colorName = "green" /obj/item/toy/crayon/blue icon_state = "crayonblue" crayon_color = "#00B7EF" - shadeColour = "#0082A8" - colourName = "blue" + shade_color = "#0082A8" + colorName = "blue" /obj/item/toy/crayon/purple icon_state = "crayonpurple" crayon_color = "#DA00FF" - shadeColour = "#810CFF" - colourName = "purple" + shade_color = "#810CFF" + colorName = "purple" /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." - crayon_color = "#FFFFFF" - shadeColour = "#000000" - colourName = "mime" + crayon_color = COLOR_WHITE + shade_color = COLOR_BLACK + colorName = "mime" uses = 0 /obj/item/toy/crayon/mime/attack_self(mob/living/user) //inversion ..() - if(crayon_color != "#FFFFFF" && shadeColour != "#000000") - crayon_color = "#FFFFFF" - shadeColour = "#000000" + if(crayon_color != COLOR_WHITE && shade_color != COLOR_BLACK) + crayon_color = COLOR_WHITE + shade_color = COLOR_BLACK to_chat(user, "You will now draw in white and black with this crayon.") else - crayon_color = "#000000" - shadeColour = "#FFFFFF" + crayon_color = COLOR_BLACK + shade_color = COLOR_WHITE to_chat(user, "You will now draw in black and white with this crayon.") /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" crayon_color = "#FFF000" - shadeColour = "#000FFF" - colourName = "rainbow" + shade_color = "#000FFF" + colorName = "rainbow" uses = 0 /obj/item/toy/crayon/rainbow/attack_self(mob/living/user) ..() crayon_color = input(user, "Please select the main color.", "Crayon color") as color - shadeColour = input(user, "Please select the shade color.", "Crayon color") as color + shade_color = input(user, "Please select the shade color.", "Crayon color") as color /obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity) if(!proximity) @@ -80,7 +80,7 @@ if("rune") to_chat(user, "You start drawing a rune on the [target.name].") if(instant || do_after(user, 50, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - new /obj/effect/decal/cleanable/crayon(target,crayon_color,shadeColour,drawtype) + new /obj/effect/decal/cleanable/crayon(target,crayon_color,shade_color,drawtype) to_chat(user, "You finish drawing.") target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on. if(uses) diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 65234c59b89b..6fa420df35d5 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -12,7 +12,6 @@ * Other things */ - //recreational items /obj/item/toy @@ -23,7 +22,6 @@ force = 0 black_market_value = 5 - /* * Balloons */ @@ -118,24 +116,24 @@ icon_state = "singularity_s1" - /* * Crayons */ /obj/item/toy/crayon name = "crayon" - desc = "A colourful crayon. Please refrain from eating it or putting it in your nose." + desc = "A colorful crayon. Please refrain from eating it or putting it in your nose." icon = 'icons/obj/items/crayons.dmi' icon_state = "crayonred" w_class = SIZE_TINY - attack_verb = list("attacked", "coloured") + attack_verb = list("attacked", "colored") black_market_value = 5 - var/crayon_color = "#FF0000" //RGB - var/shadeColour = "#220000" //RGB - var/uses = 30 //0 for unlimited uses + var/crayon_color = COLOR_RED + var/shade_color = "#220000" + /// 0 for unlimited uses + var/uses = 30 var/instant = 0 - var/colourName = "red" //for updateIcon purposes + var/colorName = "red" //for updateIcon purposes /* * Snap pops @@ -237,7 +235,6 @@ . += "[reagents.total_volume] units of water left!" - /* * Mech prizes */ diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 310c53dd5d0f..2362a70e6e1e 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -5,15 +5,15 @@ item_state = "baton" flags_equip_slot = SLOT_WAIST force = 15 - sharp = 0 - edge = 0 throwforce = 7 + sharp = FALSE + edge = FALSE w_class = SIZE_MEDIUM attack_verb = list("beaten") req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY, ACCESS_MARINE_SENIOR, ACCESS_WY_GENERAL, ACCESS_WY_SECURITY, ACCESS_CIVILIAN_BRIG) var/stunforce = 50 - var/status = 0 //whether the thing is on or not + var/status = FALSE //whether the thing is on or not var/obj/item/cell/bcell = null var/hitcost = 1000 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else. var/has_user_lock = TRUE //whether the baton prevents people without correct access from using it. @@ -58,37 +58,6 @@ else . += SPAN_WARNING("The baton does not have a power source installed.") -/obj/item/weapon/baton/attack_hand(mob/user) - if(check_user_auth(user)) - ..() - - -/obj/item/weapon/baton/equipped(mob/user, slot) - ..() - check_user_auth(user) - - -//checks if the mob touching the baton has proper access -/obj/item/weapon/baton/proc/check_user_auth(mob/user) - if(!has_user_lock) - return TRUE - var/mob/living/carbon/human/H = user - if(istype(H)) - var/obj/item/card/id/I = H.wear_id - if(!istype(I) || !check_access(I) && status) - var/datum/effect_system/spark_spread/s = new - s.set_up(5, 1, src.loc) - H.visible_message(SPAN_NOTICE("[src] beeps as [H] picks it up"), SPAN_DANGER("WARNING: Unauthorized user detected. Denying access...")) - H.visible_message(SPAN_WARNING("[src] beeps and sends a shock through [H]'s body!")) - H.emote("pain") - s.start() - deductcharge(hitcost) - add_fingerprint(user) - return FALSE - return TRUE -/obj/item/weapon/baton/pull_response(mob/puller) - return check_user_auth(puller) - /obj/item/weapon/baton/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/cell)) @@ -132,17 +101,20 @@ add_fingerprint(user) -/obj/item/weapon/baton/attack(mob/M, mob/user) - if(has_user_lock && !skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) - return - - if(isrobot(M)) - ..() - return - - var/stun = stunforce - var/mob/living/L = M +/obj/item/weapon/baton/attack(mob/target, mob/user) + var/mob/living/carbon/human/real_user = user + var/mob/living/carbon/human/human_target = target + if(has_user_lock && !skillcheck(real_user, SKILL_POLICE, SKILL_POLICE_SKILLED)) + if(prob(70) && status) + to_chat(real_user, SPAN_WARNING("You hit yourself with the [src] during the struggle...")) + real_user.drop_held_item() + real_user.apply_effect(1,STUN) + human_target = real_user + if(prob(20) && !status) //a relatively reliable melee weapon when turned off. + to_chat(real_user, SPAN_WARNING("You grab the [src] incorrectly twisting your hand in the process.")) + real_user.drop_held_item() + real_user.apply_effect(1,STUN) + real_user.apply_damage(force, BRUTE, pick("l_hand","r_hand"), no_limb_loss = TRUE) var/target_zone = check_zone(user.zone_selected) if(user.a_intent == INTENT_HARM) @@ -154,40 +126,42 @@ else //copied from human_defense.dm - human defence code should really be refactored some time. - if (ishuman(L)) + if (ishuman(human_target)) if(!target_zone) //shouldn't ever happen - L.visible_message(SPAN_DANGER("[user] misses [L] with \the [src]!")) + human_target.visible_message(SPAN_DANGER("[user] misses [human_target] with \the [src]!")) return FALSE - var/mob/living/carbon/human/H = L + var/mob/living/carbon/human/H = human_target var/obj/limb/affecting = H.get_limb(target_zone) if (affecting) if(!status) - L.visible_message(SPAN_WARNING("[L] has been prodded in the [affecting.display_name] with [src] by [user]. Luckily it was off.")) + human_target.visible_message(SPAN_WARNING("[human_target] has been prodded in the [affecting.display_name] with [src] by [user]. Luckily it was off.")) return TRUE else - H.visible_message(SPAN_DANGER("[L] has been prodded in the [affecting.display_name] with [src] by [user]!")) + H.visible_message(SPAN_DANGER("[human_target] has been prodded in the [affecting.display_name] with [src] by [user]!")) else if(!status) - L.visible_message(SPAN_WARNING("[L] has been prodded with [src] by [user]. Luckily it was off.")) + human_target.visible_message(SPAN_WARNING("[human_target] has been prodded with [src] by [user]. Luckily it was off.")) return TRUE else - L.visible_message(SPAN_DANGER("[L] has been prodded with [src] by [user]!")) + human_target.visible_message(SPAN_DANGER("[human_target] has been prodded with [src] by [user]!")) //stun effects - if(!isyautja(L) && !isxeno(L)) //Xenos and Predators are IMMUNE to all baton stuns. - L.emote("pain") - L.apply_stamina_damage(stun, target_zone, ARMOR_ENERGY) + if(!isyautja(human_target) && !isxeno(human_target)) //Xenos and Predators are IMMUNE to all baton stuns. + human_target.emote("pain") + human_target.apply_stamina_damage(stunforce, target_zone, ARMOR_ENERGY) + human_target.sway_jitter(2,1) + // Logging - if(user == L) + if(user == human_target) user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with [src] in [get_area(user)]" else - msg_admin_attack("[key_name(user)] stunned [key_name(L)] with [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(L)] with [src] in [get_area(user)]" - L.attack_log += logentry + msg_admin_attack("[key_name(user)] stunned [key_name(human_target)] with [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) + var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(human_target)] with [src] in [get_area(user)]" + human_target.attack_log += logentry user.attack_log += logentry playsound(loc, 'sound/weapons/Egloves.ogg', 25, 1, 6) @@ -201,17 +175,6 @@ if(bcell) bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please. -//secborg stun baton module -/obj/item/weapon/baton/robot/attack_self(mob/user) - //try to find our power cell - var/mob/living/silicon/robot/R = loc - if (istype(R)) - bcell = R.cell - return ..() - -/obj/item/weapon/baton/robot/attackby(obj/item/W, mob/user) - return - //Makeshift stun baton. Replacement for stun gloves. /obj/item/weapon/baton/cattleprod name = "stunprod" diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 7747a45ed9da..8a37eef3ee73 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -150,7 +150,7 @@ if ((M.client && M.interactee == src)) is_in_use = 1 attack_hand(M) - if (ishighersilicon(usr)) + if (isSilicon(usr)) if (!(usr in nearby)) if (usr.client && usr.interactee==src) // && M.interactee == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh. is_in_use = 1 @@ -166,10 +166,7 @@ if ((M.client && M.interactee == src)) is_in_use = 1 src.interact(M) - var/ai_in_use = AutoUpdateAI(src) - - if(!ai_in_use && !is_in_use) - in_use = 0 + in_use = is_in_use /obj/proc/interact(mob/user) return diff --git a/code/game/objects/structures/barricade/barricade.dm b/code/game/objects/structures/barricade/barricade.dm index b23e07f707f2..0a37e4bcec59 100644 --- a/code/game/objects/structures/barricade/barricade.dm +++ b/code/game/objects/structures/barricade/barricade.dm @@ -177,9 +177,6 @@ return FALSE return prob(max(30,(100.0*health)/maxhealth)) -/obj/structure/barricade/attack_robot(mob/user as mob) - return attack_hand(user) - /obj/structure/barricade/attack_animal(mob/user as mob) return attack_alien(user) @@ -341,7 +338,7 @@ /obj/structure/barricade/update_health(damage, nomessage) health -= damage - health = Clamp(health, 0, maxhealth) + health = clamp(health, 0, maxhealth) if(!health) if(!nomessage) diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm index ce338de47b35..b310bd00aa07 100644 --- a/code/game/objects/structures/bookcase.dm +++ b/code/game/objects/structures/bookcase.dm @@ -71,7 +71,6 @@ /obj/structure/bookcase/manuals/medical/Initialize() . = ..() - new /obj/item/book/manual/medical_cloning(src) new /obj/item/book/manual/medical_diagnostics_manual(src) new /obj/item/book/manual/medical_diagnostics_manual(src) new /obj/item/book/manual/medical_diagnostics_manual(src) @@ -84,11 +83,9 @@ /obj/structure/bookcase/manuals/engineering/Initialize() . = ..() new /obj/item/book/manual/engineering_construction(src) - new /obj/item/book/manual/engineering_particle_accelerator(src) new /obj/item/book/manual/engineering_hacking(src) new /obj/item/book/manual/engineering_guide(src) new /obj/item/book/manual/atmospipes(src) - new /obj/item/book/manual/engineering_singularity_safety(src) new /obj/item/book/manual/evaguide(src) update_icon() diff --git a/code/game/objects/structures/cargo_container.dm b/code/game/objects/structures/cargo_container.dm index b5c38874cfb8..66d0cc8c18e0 100644 --- a/code/game/objects/structures/cargo_container.dm +++ b/code/game/objects/structures/cargo_container.dm @@ -11,7 +11,7 @@ //Note, for Watatsumi, Grant, and Arious, "left" and "leftmid" are both the left end of the container, but "left" is generic and "leftmid" has the Sat Mover mark on it /obj/structure/cargo_container/watatsumi name = "Watatsumi Cargo Container" - desc = "A huge industrial shipping container.\nThis one is from Watatsumi, a manufacturer of a variety of electronical and mechanical products.\nAtleast, that is what is says on the container. You have literally never heard of this company before." + desc = "A huge industrial shipping container.\nThis one is from Watatsumi, a manufacturer of a variety of electronical and mechanical products.\nAt least, that is what is says on the container. You have literally never heard of this company before." /obj/structure/cargo_container/watatsumi/left icon_state = "watatsumi_l" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index fa87cd6b2b71..6742e8b31700 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -244,8 +244,6 @@ user.visible_message(SPAN_NOTICE("[user] has pried apart [src] with [W]."), "You pry apart [src].") qdel(src) return - if(isrobot(user)) - return user.drop_inv_item_to_loc(W,loc) else if(istype(W, /obj/item/packageWrap) || istype(W, /obj/item/explosive/plastic)) diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index ab9dade9ed3e..113d17f30dce 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -21,7 +21,7 @@ if(fireaxe) hasaxe = 1 - if (isrobot(usr) || src.locked) + if (src.locked) if(HAS_TRAIT(O, TRAIT_TOOL_MULTITOOL)) to_chat(user, SPAN_DANGER("Resetting circuitry...")) playsound(user, 'sound/machines/lockreset.ogg', 25, 1) @@ -140,7 +140,7 @@ set name = "Open/Close" set category = "Object" - if (isrobot(usr) || src.locked || src.smashed) + if (src.locked || src.smashed) if(src.locked) to_chat(usr, SPAN_DANGER("The cabinet won't budge!")) else if(src.smashed) @@ -154,9 +154,6 @@ set name = "Remove Fire Axe" set category = "Object" - if (isrobot(usr)) - return - if (istype(usr, /mob/living/carbon/xenomorph)) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index ba974a8e722a..e65d28e96f33 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -90,7 +90,7 @@ else to_chat(user, SPAN_NOTICE("The locker is too small to stuff [W:affecting] into!")) return - if(isrobot(user) || iszombie(user)) + if(iszombie(user)) return user.drop_inv_item_to_loc(W, loc) else if(istype(W, /obj/item/packageWrap) || istype(W, /obj/item/explosive/plastic)) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 119615ab7aed..cfb62812f0c6 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -101,8 +101,6 @@ /obj/structure/closet/crate/attackby(obj/item/W as obj, mob/user as mob) if(W.flags_item & ITEM_ABSTRACT) return if(opened) - if(isrobot(user)) - return user.drop_inv_item_to_loc(W, loc) else if(istype(W, /obj/item/packageWrap) || istype(W, /obj/item/stack/fulton)) return diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index e9e3a9a7b5d6..39a659c5f397 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -280,7 +280,7 @@ GLOBAL_LIST_INIT(rbarrel_color_list, list(COLOR_SILVER, COLOR_MODERATE_BLUE, COLOR_PURPLE, COLOR_STRONG_VIOLET, - COLOR_BEIGE, + LIGHT_BEIGE, COLOR_DARK_MODERATE_ORANGE, COLOR_BROWN, COLOR_DARK_BROWN)) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index e4ee4a1b662b..e754478dda0b 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -24,8 +24,6 @@ icon_state = "extinguisher_alt" /obj/structure/extinguisher_cabinet/attackby(obj/item/item, mob/user) - if(isrobot(user)) - return if(istype(item, /obj/item/tool/extinguisher)) if(!has_extinguisher && opened) user.drop_held_item() @@ -40,9 +38,6 @@ /obj/structure/extinguisher_cabinet/attack_hand(mob/user) - if(isrobot(user)) - return - if(has_extinguisher) user.put_in_hands(has_extinguisher) to_chat(user, SPAN_NOTICE("You take [has_extinguisher] from [src].")) diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index c67c7381f723..b3a330ca36b0 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -179,9 +179,6 @@ /obj/structure/inflatable/door/attack_remote(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral if(isRemoteControlling(user)) //so the AI can't open it return - else if(isrobot(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) /obj/structure/inflatable/door/attack_hand(mob/user as mob) return TryToSwitchState(user) diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 0fda8c5d9631..88321053ef4a 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -178,9 +178,6 @@ add_fingerprint(usr) -/obj/structure/ladder/attack_robot(mob/user as mob) - return attack_hand(user) - /obj/structure/ladder/ex_act(severity) return diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 21d66efce270..25dc0040e2ac 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -32,9 +32,6 @@ /obj/structure/mineral_door/attack_remote(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral if(isRemoteControlling(user)) //so the AI can't open it return - else if(isrobot(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) /obj/structure/mineral_door/attack_hand(mob/user as mob) return TryToSwitchState(user) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 9d007a0c8c80..0c763378ede1 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -1,80 +1,111 @@ +#define MAX_NOTICES 8 + /obj/structure/noticeboard name = "notice board" desc = "A board for pinning important notices upon." icon = 'icons/obj/structures/props/stationobjs.dmi' - icon_state = "nboard00" + icon_state = "noticeboard" density = FALSE anchored = TRUE var/notices = 0 -/obj/structure/noticeboard/Initialize() +/obj/structure/noticeboard/Initialize(mapload) . = ..() + if(!mapload) + return + for(var/obj/item/I in loc) - if(notices > 4) break + if(notices >= MAX_NOTICES) + break if(istype(I, /obj/item/paper)) I.forceMove(src) notices++ - icon_state = "nboard0[notices]" + update_overlays() //attaching papers!! -/obj/structure/noticeboard/attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/paper)) - if(notices < 5) - O.add_fingerprint(user) - add_fingerprint(user) - user.drop_held_item() - O.forceMove(src) +/obj/structure/noticeboard/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/paper) || istype(O, /obj/item/photo)) + if(!allowed(user)) + to_chat(user, SPAN_WARNING("You are not authorized to add notices!")) + return + if(notices < MAX_NOTICES) + if(!user.drop_inv_item_to_loc(O, src)) + return notices++ - icon_state = "nboard0[notices]" //update sprite - to_chat(user, SPAN_NOTICE("You pin the paper to the noticeboard.")) + update_overlays() + to_chat(user, SPAN_NOTICE("You pin the [O] to the noticeboard.")) else - to_chat(user, SPAN_NOTICE("You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached.")) + to_chat(user, SPAN_WARNING("The notice board is full!")) + else if(istype(O, /obj/item/tool/pen)) + user.set_interaction(src) + tgui_interact(user) + else + return ..() -/obj/structure/noticeboard/attack_hand(user as mob) - var/dat = "Noticeboard
      " - for(var/obj/item/paper/P in src) - dat += "[P.name] Write Remove
      " - user << browse("Notices[dat]","window=noticeboard") - onclose(user, "noticeboard") +/obj/structure/noticeboard/attack_hand(mob/user) + . = ..() + user.set_interaction(src) + tgui_interact(user) +/obj/structure/noticeboard/ui_state(mob/user) + return GLOB.physical_state -/obj/structure/noticeboard/Topic(href, href_list) - ..() - usr.set_interaction(src) - if(href_list["remove"]) - if((usr.stat || usr.is_mob_restrained())) //For when a player is handcuffed while they have the notice window open - return - var/obj/item/P = locate(href_list["remove"]) - if((P && P.loc == src)) - P.forceMove(get_turf(src) )//dump paper on the floor because you're a clumsy fuck - P.add_fingerprint(usr) - add_fingerprint(usr) - notices-- - icon_state = "nboard0[notices]" +/obj/structure/noticeboard/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "NoticeBoard", name) + ui.open() - if(href_list["write"]) - if((usr.stat || usr.is_mob_restrained())) //For when a player is handcuffed while they have the notice window open - return - var/obj/item/P = locate(href_list["write"]) +/obj/structure/noticeboard/ui_data(mob/user) + var/list/data = list() + data["allowed"] = allowed(user) + data["items"] = list() + for(var/obj/item/content in contents) + var/list/content_data = list( + name = content.name, + ref = REF(content) + ) + data["items"] += list(content_data) + return data + +/obj/structure/noticeboard/ui_act(action, params) + . = ..() + if(.) + return + + var/obj/item/item = locate(params["ref"]) in contents + if(!istype(item) || item.loc != src) + return + + var/mob/user = usr + + switch(action) + if("examine") + user.examinate(item) + return TRUE + if("write") + var/obj/item/writing_tool = user.get_held_item() + if(!istype(writing_tool, /obj/item/tool/pen)) + balloon_alert(user, "you need a pen for that!") + return + item.attackby(writing_tool, user) + return TRUE + if("remove") + if(!allowed(user)) + return + remove_item(item, user) + return TRUE + +/obj/structure/noticeboard/proc/update_overlays() + if(overlays) overlays.Cut() + if(notices) + overlays += image(icon, "notices_[notices]") - if((P && P.loc == src)) //ifthe paper's on the board - if(HAS_TRAIT(usr.r_hand, TRAIT_TOOL_PEN)) - add_fingerprint(usr) - P.attackby(usr.r_hand, usr) //then do ittttt - else - if(HAS_TRAIT(usr.l_hand, TRAIT_TOOL_PEN)) //check other hand for pen - add_fingerprint(usr) - P.attackby(usr.l_hand, usr) - else - to_chat(usr, SPAN_NOTICE("You'll need something to write with!")) +/obj/structure/noticeboard/proc/remove_item(obj/item/item, mob/user) + item.forceMove(loc) + if(user) + user.put_in_hands(item) + balloon_alert(user, "removed from board") + notices-- + update_overlays() - if(href_list["read"]) - var/obj/item/paper/P = locate(href_list["read"]) - if((P && P.loc == src)) - if(!( istype(usr, /mob/living/carbon/human) )) - usr << browse("[P.name][stars(P.info)]", "window=[P.name]") - onclose(usr, "[P.name]") - else - usr << browse("[P.name][P.info]", "window=[P.name]") - onclose(usr, "[P.name]") - return diff --git a/code/game/objects/structures/pipes/vents/vents.dm b/code/game/objects/structures/pipes/vents/vents.dm index 298fbc57f4ad..d7e090c581c5 100644 --- a/code/game/objects/structures/pipes/vents/vents.dm +++ b/code/game/objects/structures/pipes/vents/vents.dm @@ -176,7 +176,7 @@ addtimer(CALLBACK(src, PROC_REF(release_gas), radius), warning_time) /obj/structure/pipes/vents/proc/release_gas(radius = 4) - radius = Clamp(radius, 1, 10) + radius = clamp(radius, 1, 10) if(!gas_holder || welded) return FALSE playsound(loc, 'sound/effects/smoke.ogg', 25, 1, 4) diff --git a/code/game/objects/structures/prop_mech.dm b/code/game/objects/structures/prop_mech.dm new file mode 100644 index 000000000000..c2df2eb93c9c --- /dev/null +++ b/code/game/objects/structures/prop_mech.dm @@ -0,0 +1,175 @@ +/obj/structure/prop/mech + icon = 'icons/obj/structures/props/mech.dmi' + +/obj/structure/prop/mech/hydralic_clamp + name = "Hydraulic Clamp" + icon_state = "mecha_clamp" + +/obj/structure/prop/mech/drill + name = "Drill" + desc = "This is the drill that'll pierce the heavens!" + icon_state = "mecha_drill" + +/obj/structure/prop/mech/armor_booster + name = "Armor Booster Module (Close Combat Weaponry)" + desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate." + icon_state = "mecha_abooster_ccw" + +/obj/structure/prop/mech/repair_droid + name = "Repair Droid" + desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost all types of external or internal damage." + icon_state = "repair_droid" + +/obj/structure/prop/mech/tesla_energy_relay + name = "Energy Relay" + desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low." + icon_state = "tesla" + +/obj/structure/prop/mech/parts + name = "mecha part" + flags_atom = FPRINT|CONDUCT + +/obj/structure/prop/mech/parts/chassis + name="Mecha Chassis" + icon_state = "backbone" + +// ripley to turn into P-1000 an Older version of the P-5000 to anchor it more into the lore... +/obj/structure/prop/mech/parts/chassis/ripley + name = "P-1000 Chassis" + icon_state = "ripley_chassis" +/obj/structure/prop/mech/parts/chassis/firefighter + name = "Firefighter Chassis" + icon_state = "ripley_chassis" +/obj/structure/prop/mech/parts/ripley_torso + name="P-1000 Torso" + desc="A torso part of P-1000 APLU. Contains power unit, processing core and life support systems." + icon_state = "ripley_harness" +/obj/structure/prop/mech/parts/ripley_left_arm + name="P-1000 Left Arm" + desc="A P-1000 APLU left arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "ripley_l_arm" +/obj/structure/prop/mech/parts/ripley_right_arm + name="P-1000 Right Arm" + desc="A P-1000 APLU right arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "ripley_r_arm" +/obj/structure/prop/mech/parts/ripley_left_leg + name="P-1000 Left Leg" + desc="A P-1000 APLU left leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "ripley_l_leg" +/obj/structure/prop/mech/parts/ripley_right_leg + name="P-1000 Right Leg" + desc="A P-1000 APLU right leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "ripley_r_leg" + +//gygax turned into MAX (Mobile Assault Exo-Warrior)look like a gygax from afar +/obj/structure/prop/mech/parts/chassis/gygax + name = "MAX Chassis" + icon_state = "gygax_chassis" +/obj/structure/prop/mech/parts/gygax_torso + name="MAX Torso" + desc="A torso part of MAX. Contains power unit, processing core and life support systems. Has an additional equipment slot." + icon_state = "gygax_harness" +/obj/structure/prop/mech/parts/gygax_head + name="MAX Head" + desc="A MAX head. Houses advanced surveilance and targeting sensors." + icon_state = "gygax_head" +/obj/structure/prop/mech/parts/gygax_left_arm + name="MAX Left Arm" + desc="A MAX left arm. Data and power sockets are compatible with most exosuit tools and weapons." + icon_state = "gygax_l_arm" +/obj/structure/prop/mech/parts/gygax_right_arm + name="MAX Right Arm" + desc="A MAX right arm. Data and power sockets are compatible with most exosuit tools and weapons." + icon_state = "gygax_r_arm" +/obj/structure/prop/mech/parts/gygax_left_leg + name="MAX Left Leg" + icon_state = "gygax_l_leg" +/obj/structure/prop/mech/parts/gygax_right_leg + name="MAX Right Leg" + icon_state = "gygax_r_leg" +/obj/structure/prop/mech/parts/gygax_armor + name="MAX Armor Plates" + icon_state = "gygax_armor" + +// durand MOX (mobile offensive exo-warrior) look like a durand from afar. +/obj/structure/prop/mech/parts/chassis/durand + name = "MOX Chassis" + icon_state = "durand_chassis" +/obj/structure/prop/mech/parts/durand_torso + name="MOX Torso" + icon_state = "durand_harness" +/obj/structure/prop/mech/parts/durand_head + name="MOX Head" + icon_state = "durand_head" +/obj/structure/prop/mech/parts/durand_left_arm + name="MOX Left Arm" + icon_state = "durand_l_arm" +/obj/structure/prop/mech/parts/durand_right_arm + name="MOX Right Arm" + icon_state = "durand_r_arm" +/obj/structure/prop/mech/parts/durand_left_leg + name="MOX Left Leg" + icon_state = "durand_l_leg" +/obj/structure/prop/mech/parts/durand_right_leg + name="MOX Right Leg" + icon_state = "durand_r_leg" +/obj/structure/prop/mech/parts/durand_armor + name="MOX Armor Plates" + icon_state = "durand_armor" + +// phazon currently not in use. could be deleted... +/obj/structure/prop/mech/parts/chassis/phazon + name = "Phazon Chassis" + icon_state = "phazon_chassis" +/obj/structure/prop/mech/parts/phazon_torso + name="Phazon Torso" + icon_state = "phazon_harness" +/obj/structure/prop/mech/parts/phazon_head + name="Phazon Head" + icon_state = "phazon_head" +/obj/structure/prop/mech/parts/phazon_left_arm + name="Phazon Left Arm" + icon_state = "phazon_l_arm" +/obj/structure/prop/mech/parts/phazon_right_arm + name="Phazon Right Arm" + icon_state = "phazon_r_arm" +/obj/structure/prop/mech/parts/phazon_left_leg + name="Phazon Left Leg" + icon_state = "phazon_l_leg" +/obj/structure/prop/mech/parts/phazon_right_leg + name="Phazon Right Leg" + icon_state = "phazon_r_leg" +/obj/structure/prop/mech/parts/phazon_armor_plates + name="Phazon Armor Plates" + icon_state = "phazon_armor" + +// odysseus currently not in use could be deleted... +/obj/structure/prop/mech/parts/chassis/odysseus + name = "Odysseus Chassis" + icon_state = "odysseus_chassis" +/obj/structure/prop/mech/parts/odysseus_head + name="Odysseus Head" + icon_state = "odysseus_head" +/obj/structure/prop/mech/parts/odysseus_torso + name="Odysseus Torso" + desc="A torso part of Odysseus. Contains power unit, processing core and life support systems." + icon_state = "odysseus_torso" +/obj/structure/prop/mech/parts/odysseus_left_arm + name="Odysseus Left Arm" + desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "odysseus_l_arm" +/obj/structure/prop/mech/parts/odysseus_right_arm + name="Odysseus Right Arm" + desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "odysseus_r_arm" +/obj/structure/prop/mech/parts/odysseus_left_leg + name="Odysseus Left Leg" + desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "odysseus_l_leg" +/obj/structure/prop/mech/parts/odysseus_right_leg + name="Odysseus Right Leg" + desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "odysseus_r_leg" +/obj/structure/prop/mech/parts/odysseus_armor_plates + name="Odysseus Armor Plates" + icon_state = "odysseus_armor" diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index e14eee13b1dd..8aad7de3e04c 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -235,212 +235,6 @@ /obj/structure/prop/dam/wide_boulder/boulder1 icon_state = "boulder1" - -/obj/structure/prop/mech - icon = 'icons/obj/structures/props/mech.dmi' - -/obj/structure/prop/mech/hydralic_clamp - name = "Hydraulic Clamp" - icon_state = "mecha_clamp" - -/obj/structure/prop/mech/drill - name = "Drill" - desc = "This is the drill that'll pierce the heavens!" - icon_state = "mecha_drill" - -/obj/structure/prop/mech/armor_booster - name = "Armor Booster Module (Close Combat Weaponry)" - desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate." - icon_state = "mecha_abooster_ccw" - -/obj/structure/prop/mech/repair_droid - name = "Repair Droid" - desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost all types of external or internal damage." - icon_state = "repair_droid" - -/obj/structure/prop/mech/tesla_energy_relay - name = "Energy Relay" - desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low." - icon_state = "tesla" - -/obj/structure/prop/mech/mech_parts - name = "mecha part" - flags_atom = FPRINT|CONDUCT - -/obj/structure/prop/mech/mech_parts/chassis - name="Mecha Chassis" - icon_state = "backbone" - -/obj/structure/prop/mech/mech_parts/chassis/ripley - name = "Ripley Chassis" - icon_state = "ripley_chassis" - -/obj/structure/prop/mech/mech_parts/part/ripley_torso - name="Ripley Torso" - desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems." - icon_state = "ripley_harness" - -/obj/structure/prop/mech/mech_parts/part/ripley_left_arm - name="Ripley Left Arm" - desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "ripley_l_arm" - -/obj/structure/prop/mech/mech_parts/part/ripley_right_arm - name="Ripley Right Arm" - desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "ripley_r_arm" - -/obj/structure/prop/mech/mech_parts/part/ripley_left_leg - name="Ripley Left Leg" - desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "ripley_l_leg" - -/obj/structure/prop/mech/mech_parts/part/ripley_right_leg - name="Ripley Right Leg" - desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "ripley_r_leg" - -/obj/structure/prop/mech/mech_parts/chassis/gygax - name = "Gygax Chassis" - icon_state = "gygax_chassis" - -/obj/structure/prop/mech/mech_parts/part/gygax_torso - name="Gygax Torso" - desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot." - icon_state = "gygax_harness" - -/obj/structure/prop/mech/mech_parts/part/gygax_head - name="Gygax Head" - desc="A Gygax head. Houses advanced surveilance and targeting sensors." - icon_state = "gygax_head" - -/obj/structure/prop/mech/mech_parts/part/gygax_left_arm - name="Gygax Left Arm" - desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons." - icon_state = "gygax_l_arm" - -/obj/structure/prop/mech/mech_parts/part/gygax_right_arm - name="Gygax Right Arm" - desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons." - icon_state = "gygax_r_arm" - -/obj/structure/prop/mech/mech_parts/part/gygax_left_leg - name="Gygax Left Leg" - icon_state = "gygax_l_leg" - -/obj/structure/prop/mech/mech_parts/part/gygax_right_leg - name="Gygax Right Leg" - icon_state = "gygax_r_leg" - -/obj/structure/prop/mech/mech_parts/part/gygax_armor - name="Gygax Armor Plates" - icon_state = "gygax_armor" - -/obj/structure/prop/mech/mech_parts/chassis/durand - name = "Durand Chassis" - icon_state = "durand_chassis" - -/obj/structure/prop/mech/mech_parts/part/durand_torso - name="Durand Torso" - icon_state = "durand_harness" - -/obj/structure/prop/mech/mech_parts/part/durand_head - name="Durand Head" - icon_state = "durand_head" - -/obj/structure/prop/mech/mech_parts/part/durand_left_arm - name="Durand Left Arm" - icon_state = "durand_l_arm" - -/obj/structure/prop/mech/mech_parts/part/durand_right_arm - name="Durand Right Arm" - icon_state = "durand_r_arm" - -/obj/structure/prop/mech/mech_parts/part/durand_left_leg - name="Durand Left Leg" - icon_state = "durand_l_leg" - -/obj/structure/prop/mech/mech_parts/part/durand_right_leg - name="Durand Right Leg" - icon_state = "durand_r_leg" - -/obj/structure/prop/mech/mech_parts/part/durand_armor - name="Durand Armor Plates" - icon_state = "durand_armor" - -/obj/structure/prop/mech/mech_parts/chassis/firefighter - name = "Firefighter Chassis" - icon_state = "ripley_chassis" - -/obj/structure/prop/mech/mech_parts/chassis/phazon - name = "Phazon Chassis" - icon_state = "phazon_chassis" - -/obj/structure/prop/mech/mech_parts/part/phazon_torso - name="Phazon Torso" - icon_state = "phazon_harness" - -/obj/structure/prop/mech/mech_parts/part/phazon_head - name="Phazon Head" - icon_state = "phazon_head" - -/obj/structure/prop/mech/mech_parts/part/phazon_left_arm - name="Phazon Left Arm" - icon_state = "phazon_l_arm" - -/obj/structure/prop/mech/mech_parts/part/phazon_right_arm - name="Phazon Right Arm" - icon_state = "phazon_r_arm" - -/obj/structure/prop/mech/mech_parts/part/phazon_left_leg - name="Phazon Left Leg" - icon_state = "phazon_l_leg" - -/obj/structure/prop/mech/mech_parts/part/phazon_right_leg - name="Phazon Right Leg" - icon_state = "phazon_r_leg" - -/obj/structure/prop/mech/mech_parts/part/phazon_armor_plates - name="Phazon Armor Plates" - icon_state = "phazon_armor" - -/obj/structure/prop/mech/mech_parts/chassis/odysseus - name = "Odysseus Chassis" - icon_state = "odysseus_chassis" - -/obj/structure/prop/mech/mech_parts/part/odysseus_head - name="Odysseus Head" - icon_state = "odysseus_head" - -/obj/structure/prop/mech/mech_parts/part/odysseus_torso - name="Odysseus Torso" - desc="A torso part of Odysseus. Contains power unit, processing core and life support systems." - icon_state = "odysseus_torso" - -/obj/structure/prop/mech/mech_parts/part/odysseus_left_arm - name="Odysseus Left Arm" - desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "odysseus_l_arm" - -/obj/structure/prop/mech/mech_parts/part/odysseus_right_arm - name="Odysseus Right Arm" - desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools." - icon_state = "odysseus_r_arm" - -/obj/structure/prop/mech/mech_parts/part/odysseus_left_leg - name="Odysseus Left Leg" - desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "odysseus_l_leg" - -/obj/structure/prop/mech/mech_parts/part/odysseus_right_leg - name="Odysseus Right Leg" - desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems." - icon_state = "odysseus_r_leg" - -/obj/structure/prop/mech/mech_parts/part/odysseus_armor_plates - name="Odysseus Armor Plates" - icon_state = "odysseus_armor" - //Use these to replace non-functional machinery 'props' around maps from bay12 /obj/structure/prop/server_equipment diff --git a/code/game/objects/structures/reagent_dispensers.dm b/code/game/objects/structures/reagent_dispensers.dm index 6471dfa21520..1981dcaba569 100644 --- a/code/game/objects/structures/reagent_dispensers.dm +++ b/code/game/objects/structures/reagent_dispensers.dm @@ -148,13 +148,6 @@ icon_state = "ammoniatank" chemical = "ammonia" -/obj/structure/reagent_dispensers/oxygentank - name = "oxygentank" - desc = "An oxygen tank" - icon = 'icons/obj/objects.dmi' - icon_state = "oxygentank" - chemical = "oxygen" - /obj/structure/reagent_dispensers/acidtank name = "sulfuric acid tank" desc = "A sulfuric acid tank" @@ -394,6 +387,13 @@ icon_state = "hydrogentank" chemical = "hydrogen" +/obj/structure/reagent_dispensers/fueltank/oxygentank + name = "oxygentank" + desc = "An oxygen tank" + icon = 'icons/obj/objects.dmi' + icon_state = "oxygentank" + chemical = "oxygen" + /obj/structure/reagent_dispensers/fueltank/custom name = "reagent tank" desc = "A reagent tank, typically used to store large quantities of chemicals." diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index adabf0c54141..e19d190c7442 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -305,7 +305,7 @@ icon_state = "lifesupport" /obj/structure/sign/safety/maint - name = "maintenace semiotic" + name = "maintenance semiotic" desc = "Semiotic Standard denoting the nearby presence of maintenance access." icon_state = "maint" 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 ee2c2bcee882..7469a568f7e0 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -420,6 +420,8 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) buckling_y = 0 foldabletype = /obj/item/roller/bedroll accepts_bodybag = FALSE + debris = null + buildstacktype = null /obj/item/roller/bedroll name = "folded bedroll" diff --git a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm index 63681d948620..a3ccffc466c4 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm @@ -248,6 +248,7 @@ do_buckle(mob, user) ADD_TRAIT(mob, TRAIT_NESTED, TRAIT_SOURCE_BUCKLE) + SEND_SIGNAL(mob, COMSIG_MOB_NESTED, user) if(!human) return TRUE diff --git a/code/game/objects/structures/surface.dm b/code/game/objects/structures/surface.dm index 13a81af2dc3d..ac8cf51a407e 100644 --- a/code/game/objects/structures/surface.dm +++ b/code/game/objects/structures/surface.dm @@ -27,8 +27,8 @@ var/mouse_x = text2num(click_data["icon-x"])-1 // Ranging from 0 to 31 var/mouse_y = text2num(click_data["icon-y"])-1 - var/cell_x = Clamp(round(mouse_x/CELLSIZE), 0, CELLS-1) // Ranging from 0 to CELLS-1 - var/cell_y = Clamp(round(mouse_y/CELLSIZE), 0, CELLS-1) + var/cell_x = clamp(round(mouse_x/CELLSIZE), 0, CELLS-1) // Ranging from 0 to CELLS-1 + var/cell_y = clamp(round(mouse_y/CELLSIZE), 0, CELLS-1) var/list/center = cached_key_number_decode(new_item.center_of_mass) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 2ed19485acc9..a1542f7baf75 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -254,8 +254,6 @@ /obj/structure/surface/table/MouseDrop_T(obj/item/I, mob/user) if (!istype(I) || user.get_active_hand() != I) return ..() - if(isrobot(user)) - return user.drop_held_item() if(I.loc != loc) step(I, get_dir(I, src)) @@ -303,7 +301,7 @@ deconstruct(TRUE) return - if((W.flags_item & ITEM_ABSTRACT) || isrobot(user)) + if(W.flags_item & ITEM_ABSTRACT) return if(istype(W, /obj/item/weapon/wristblades)) @@ -355,7 +353,11 @@ set category = "Object" set src in oview(1) - if(!can_touch(usr) || ismouse(usr)) + if(!can_touch(usr)) + return + + if(usr.mob_size == MOB_SIZE_SMALL) + to_chat(usr, SPAN_WARNING("[isxeno(usr) ? "We are" : "You're"] too small to flip [src].")) return if(usr.a_intent != INTENT_HARM) @@ -659,8 +661,6 @@ /obj/structure/surface/rack/MouseDrop_T(obj/item/I, mob/user) if (!istype(I) || user.get_active_hand() != I) return ..() - if(isrobot(user)) - return user.drop_held_item() if(I.loc != loc) step(I, get_dir(I, src)) @@ -670,7 +670,7 @@ deconstruct(TRUE) playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) return - if((W.flags_item & ITEM_ABSTRACT) || isrobot(user)) + if(W.flags_item & ITEM_ABSTRACT) return ..() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index daf4a47a8ef6..ea93d868c5a1 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -493,11 +493,7 @@ user.apply_effect(10, STUN) user.stuttering = 10 user.apply_effect(10, WEAKEN) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - B.deductcharge(B.hitcost) + B.deductcharge(B.hitcost) user.visible_message( \ SPAN_DANGER("[user] was stunned by \his wet [O]!"), \ SPAN_DANGER("You were stunned by your wet [O]!")) diff --git a/code/game/runtimes.dm b/code/game/runtimes.dm index 2cdc955aa426..41c18c221ae7 100644 --- a/code/game/runtimes.dm +++ b/code/game/runtimes.dm @@ -28,7 +28,7 @@ GLOBAL_REAL_VAR(total_runtimes) if(!full_init_runtimes) full_init_runtimes = list() - // If this occured during early init, we store the full error to write it to world.log when it's available + // If this occurred during early init, we store the full error to write it to world.log when it's available if(!runtime_logging_ready) full_init_runtimes += E.desc diff --git a/code/game/sound.dm b/code/game/sound.dm index ac863a3bc51e..f2b71d9a64c7 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -100,8 +100,8 @@ //This is the replacement for playsound_local. Use this for sending sounds directly to a client -/proc/playsound_client(client/C, soundin, atom/origin, vol = 100, random_freq, vol_cat = VOLUME_SFX, channel = 0, status, list/echo, y_s_offset, x_s_offset) - if(!istype(C) || !C.soundOutput) return FALSE +/proc/playsound_client(client/client, soundin, atom/origin, vol = 100, random_freq, vol_cat = VOLUME_SFX, channel = 0, status, list/echo, y_s_offset, x_s_offset) + if(!istype(client) || !client.soundOutput) return FALSE var/datum/sound_template/S = new() if(origin) var/turf/T = get_turf(origin) @@ -126,7 +126,7 @@ S.echo = echo S.y_s_offset = y_s_offset S.x_s_offset = x_s_offset - SSsound.queue(S, list(C)) + SSsound.queue(S, list(client)) /// Plays sound to all mobs that are map-level contents of an area /proc/playsound_area(area/A, soundin, vol = 100, channel = 0, status, vol_cat = VOLUME_SFX, list/echo, y_s_offset, x_s_offset) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 8214ee76d091..893071c758ed 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -383,7 +383,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) ///How close the CMB is to investigating | 100 sends an ERT var/black_market_heat = 0 - /// This contains a list of all typepaths of sold items and how many times they've been recieved. Used to calculate points dropoff (Can't send down a hundred blue souto cans for infinite points) + /// This contains a list of all typepaths of sold items and how many times they've been received. Used to calculate points dropoff (Can't send down a hundred blue souto cans for infinite points) var/list/black_market_sold_items /// If the players killed him by sending a live hostile below.. this goes false and they can't order any more contraband. @@ -752,7 +752,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) if(..()) return - if( isturf(loc) && (in_range(src, usr) || ishighersilicon(usr)) ) + if( isturf(loc) && (in_range(src, usr) || isSilicon(usr)) ) usr.set_interaction(src) if(href_list["order"]) @@ -802,7 +802,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) var/mob/living/carbon/human/H = usr idname = H.get_authentification_name() idrank = H.get_assignment() - else if(ishighersilicon(usr)) + else if(isSilicon(usr)) idname = usr.real_name GLOB.supply_controller.ordernum++ @@ -924,10 +924,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) if(..()) return - if(ismaintdrone(usr)) - return - - if(isturf(loc) && ( in_range(src, usr) || ishighersilicon(usr) ) ) + if(isturf(loc) && in_range(src, usr) ) usr.set_interaction(src) //Calling the shuttle @@ -1449,10 +1446,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) to_chat(usr, SPAN_WARNING("The elevator needs to be in the cargo bay dock to call a vehicle up. Ask someone to send it away.")) return - if(ismaintdrone(usr)) - return - - if(isturf(loc) && ( in_range(src, usr) || ishighersilicon(usr) ) ) + if(isturf(loc) && ( in_range(src, usr) || isSilicon(usr) ) ) usr.set_interaction(src) if(href_list["get_vehicle"]) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 7d9dd6303c64..e21dd142f931 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -115,10 +115,10 @@ scorchedness = 1 if(2 to 30) - scorchedness = Clamp(scorchedness + 1, 0, 3) //increase scorch by 1 (not that hot of a fire) + scorchedness = clamp(scorchedness + 1, 0, 3) //increase scorch by 1 (not that hot of a fire) if(31 to 60) - scorchedness = Clamp(scorchedness + 2, 0, 3) //increase scorch by 2 (hotter fire) + scorchedness = clamp(scorchedness + 2, 0, 3) //increase scorch by 2 (hotter fire) if(61 to INFINITY) scorchedness = 3 //max out the scorchedness (hottest fire) @@ -910,10 +910,67 @@ allow_construction = FALSE supports_surgery = FALSE +/turf/open/shuttle/can_surgery + allow_construction = TRUE + supports_surgery = TRUE + +/turf/open/shuttle/can_surgery/blue + name = "floor" + icon_state = "floor" + icon = 'icons/turf/shuttle.dmi' + +/turf/open/shuttle/can_surgery/red + icon_state = "floor6" + +/turf/open/shuttle/can_surgery/black + icon_state = "floor7" + /turf/open/shuttle/dropship name = "floor" icon_state = "rasputin1" +/turf/open/shuttle/dropship/can_surgery + icon_state = "rasputin1" + allow_construction = TRUE + supports_surgery = TRUE + +/turf/open/shuttle/dropship/can_surgery/light_grey_middle + icon_state = "rasputin13" + +/turf/open/shuttle/dropship/can_surgery/light_grey_top + icon_state = "rasputin10" + +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right + icon_state = "floor8" + +/*same two but helps with finding if you think top to bottom or up to down*/ +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down + icon_state = "rasputin3" + +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom + icon_state = "rasputin3" + +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left + icon_state = "rasputin6" + +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left + icon_state = "rasputin4" + +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right + icon_state = "rasputin7" + +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right + icon_state = "rasputin8" + +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right + icon_state = "rasputin14" + +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down + icon_state = "rasputin15" + +/turf/open/shuttle/dropship/can_surgery/dark_grey + icon_state = "rasputin15" + /turf/open/shuttle/predship name = "ship floor" icon_state = "floor6" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 22fe85bdde65..be58259e17ba 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -79,8 +79,6 @@ levelupdate() - visibilityChanged() - pass_flags = GLOB.pass_flags_cache[type] if (isnull(pass_flags)) pass_flags = new() @@ -127,7 +125,6 @@ for(var/I in B.vars) B.vars[I] = null return - visibilityChanged() flags_atom &= ~INITIALIZED ..() diff --git a/code/game/turfs/walls/r_wall.dm b/code/game/turfs/walls/r_wall.dm index 8933ad31c0e8..9d256b257090 100644 --- a/code/game/turfs/walls/r_wall.dm +++ b/code/game/turfs/walls/r_wall.dm @@ -6,7 +6,6 @@ density = TRUE damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 6000 walltype = WALL_REINFORCED @@ -16,10 +15,6 @@ if(hull) return - if (!(istype(user, /mob/living/carbon/human) || isrobot(user) || SSticker) && SSticker.mode.name != "monkey") - to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!")) - return - //get the user's location if( !istype(user.loc, /turf) ) return //can't do this stuff whilst inside objects and such diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 05c97a681be9..d546e7274331 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -12,8 +12,6 @@ damage = 0 damage_cap = HEALTH_WALL //Wall will break down to girders if damage reaches this point - max_temperature = 18000 //K, walls will take damage if they're next to a fire hotter than this - opacity = TRUE density = TRUE @@ -225,14 +223,12 @@ hull = 0 //Can't be deconstructed damage_cap = HEALTH_WALL - max_temperature = 28000 //K, walls will take damage if they're next to a fire hotter than this walltype = WALL_SULACO //Changes all the sprites and icons. /turf/closed/wall/sulaco/hull name = "outer hull" desc = "A reinforced outer hull, probably to prevent breaches" hull = 1 - max_temperature = 50000 // Nearly impossible to melt walltype = WALL_SULACO @@ -240,7 +236,6 @@ name = "outer hull" desc = "A reinforced outer hull, probably to prevent breaches" hull = 1 - max_temperature = 50000 // Nearly impossible to melt walltype = WALL_SULACO @@ -550,7 +545,6 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) desc = "A thick and chunky metal wall covered in jagged ribs." walltype = WALL_STRATA_OUTPOST_RIBBED damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/strata_outpost name = "bare outpost walls" @@ -565,7 +559,6 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) desc = "A thick and chunky metal wall covered in jagged ribs." walltype = WALL_STRATA_OUTPOST_RIBBED damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/strata_outpost/reinforced/hull hull = 1 @@ -586,7 +579,6 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) icon_state = "solaris_interior_r" walltype = WALL_SOLARISR damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/solaris/reinforced/hull name = "heavy reinforced colony wall" @@ -619,7 +611,6 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) desc = "Just like in the orange box! This one is reinforced" walltype = WALL_DEVWALL_R damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/dev/reinforced/hull name = "greybox hull wall" @@ -653,7 +644,6 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) desc = "Dusty worn down walls that were once built to last. This one is reinforced" walltype = WALL_KUTJEVO_COLONYR damage_cap = HEALTH_WALL_REINFORCED - max_temperature = 28000 /turf/closed/wall/kutjevo/colony/reinforced/hull icon_state = "colonyh" @@ -777,6 +767,14 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) icon_state = "thickresin" walltype = WALL_THICKRESIN +/turf/closed/wall/resin/tutorial + name = "tutorial resin wall" + desc = "Weird slime solidified into a wall. Remarkably resilient." + hivenumber = XENO_HIVE_TUTORIAL + +/turf/closed/wall/resin/tutorial/attack_alien(mob/living/carbon/xenomorph/xeno) + return + /turf/closed/wall/resin/membrane name = "resin membrane" desc = "Weird slime translucent enough to let light pass through." diff --git a/code/game/turfs/walls/walls.dm b/code/game/turfs/walls/walls.dm index 77143384e7e7..cb58ad2274a4 100644 --- a/code/game/turfs/walls/walls.dm +++ b/code/game/turfs/walls/walls.dm @@ -5,9 +5,11 @@ icon_state = "0" opacity = TRUE layer = WALL_LAYER - var/hull = 0 //1 = Can't be deconstructed by tools or thermite. Used for Sulaco walls + /// 1 = Can't be deconstructed by tools or thermite. Used for Sulaco walls + var/hull = 0 var/walltype = WALL_METAL - var/junctiontype //when walls smooth with one another, the type of junction each wall is. + /// when walls smooth with one another, the type of junction each wall is. + var/junctiontype var/thermite = 0 var/melting = FALSE var/claws_minimum = CLAW_TYPE_SHARP @@ -21,7 +23,8 @@ ) var/damage = 0 - var/damage_cap = HEALTH_WALL //Wall will break down to girders if damage reaches this point + /// Wall will break down to girders if damage reaches this point + var/damage_cap = HEALTH_WALL var/damage_overlay var/global/damage_overlays[8] @@ -30,12 +33,12 @@ var/image/bullet_overlay = null var/list/wall_connections = list("0", "0", "0", "0") var/neighbors_list = 0 - var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this var/repair_materials = list("wood"= 0.075, "metal" = 0.15, "plasteel" = 0.3) //Max health % recovered on a nailgun repair var/d_state = 0 //Normal walls are now as difficult to remove as reinforced walls - var/obj/effect/acid_hole/acided_hole //the acid hole inside the wall + /// the acid hole inside the wall + var/obj/effect/acid_hole/acided_hole var/acided_hole_dir = SOUTH var/special_icon = 0 @@ -335,7 +338,7 @@ var/mob/living/carbon/xenomorph/user_as_xenomorph = user user_as_xenomorph.do_nesting_host(attacker_grab.grabbed_thing, src) - if(!ishuman(user) && !isrobot(user)) + if(!ishuman(user)) to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!")) return diff --git a/code/game/verbs/records.dm b/code/game/verbs/records.dm index 6b80d19bbabf..743a09d0ab6e 100644 --- a/code/game/verbs/records.dm +++ b/code/game/verbs/records.dm @@ -97,13 +97,13 @@ return target = ckey(target) - if(GLOB.RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_COMMANDER_COUNCIL) + if(check_whitelist_status(WHITELIST_COMMANDER_COUNCIL)) options |= "Commanding Officer" edit_C = TRUE - if(GLOB.RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_SYNTHETIC_COUNCIL) + if(check_whitelist_status(WHITELIST_SYNTHETIC_COUNCIL)) options |= "Synthetic" edit_S = TRUE - if(GLOB.RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_YAUTJA_COUNCIL) + if(check_whitelist_status(WHITELIST_YAUTJA_COUNCIL)) options |= "Yautja" edit_Y = TRUE @@ -116,17 +116,17 @@ if("Merit") show_other_record(NOTE_MERIT, choice, target, TRUE) if("Commanding Officer") - if(MA || (GLOB.RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_COMMANDER_LEADER)) + if(MA || check_whitelist_status(WHITELIST_COMMANDER_LEADER)) show_other_record(NOTE_COMMANDER, choice, target, TRUE, TRUE) else show_other_record(NOTE_COMMANDER, choice, target, edit_C) if("Synthetic") - if(MA || (GLOB.RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_SYNTHETIC_LEADER)) + if(MA || check_whitelist_status(WHITELIST_SYNTHETIC_LEADER)) show_other_record(NOTE_SYNTHETIC, choice, target, TRUE, TRUE) else show_other_record(NOTE_SYNTHETIC, choice, target, edit_S) if("Yautja") - if(MA || (GLOB.RoleAuthority.roles_whitelist[src.ckey] & WHITELIST_YAUTJA_LEADER)) + if(MA || check_whitelist_status(WHITELIST_YAUTJA_LEADER)) show_other_record(NOTE_YAUTJA, choice, target, TRUE, TRUE) else show_other_record(NOTE_YAUTJA, choice, target, edit_Y) diff --git a/code/modules/admin/STUI.dm b/code/modules/admin/STUI.dm index 87a2ca2cf11a..96307cd91b86 100644 --- a/code/modules/admin/STUI.dm +++ b/code/modules/admin/STUI.dm @@ -40,7 +40,7 @@ GLOBAL_DATUM_INIT(STUI, /datum/STUI, new) /datum/STUI/New() . = ..() - if(length(stui_init_runtimes)) // Report existing errors that might have occured during static initializers + if(length(stui_init_runtimes)) // Report existing errors that might have occurred during static initializers runtime = stui_init_runtimes.Copy() /datum/STUI/Topic(href, href_list) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4623df8a5dc5..56002d139599 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -190,7 +190,6 @@ GLOBAL_LIST_INIT(admin_verbs_debug, list( /client/proc/cmd_admin_delete, /client/proc/cmd_debug_del_all, /client/proc/reload_admins, - /client/proc/reload_whitelist, /client/proc/restart_controller, /client/proc/debug_controller, /client/proc/cmd_debug_toggle_should_check_for_win, @@ -243,7 +242,8 @@ GLOBAL_LIST_INIT(admin_verbs_possess, list( )) GLOBAL_LIST_INIT(admin_verbs_permissions, list( - /client/proc/ToRban + /client/proc/ToRban, + /client/proc/whitelist_panel, )) GLOBAL_LIST_INIT(admin_verbs_color, list( @@ -347,15 +347,9 @@ GLOBAL_LIST_INIT(roundstart_mod_verbs, list( add_verb(src, GLOB.admin_verbs_spawn) if(CLIENT_HAS_RIGHTS(src, R_STEALTH)) add_verb(src, GLOB.admin_verbs_stealth) - if(GLOB.RoleAuthority && (GLOB.RoleAuthority.roles_whitelist[ckey] & WHITELIST_YAUTJA_LEADER)) + if(check_whitelist_status(WHITELIST_YAUTJA_LEADER)) add_verb(src, GLOB.clan_verbs) -/client/proc/add_admin_whitelists() - if(CLIENT_IS_MENTOR(src)) - GLOB.RoleAuthority.roles_whitelist[ckey] |= WHITELIST_MENTOR - if(CLIENT_IS_STAFF(src)) - GLOB.RoleAuthority.roles_whitelist[ckey] |= WHITELIST_JOE - /client/proc/remove_admin_verbs() remove_verb(src, list( GLOB.admin_verbs_default, diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 13c3b4664a15..dd6516b2ede3 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -42,8 +42,6 @@ GLOBAL_LIST_EMPTY(jobban_keylist) if(guest_jobbans(rank)) if(CONFIG_GET(flag/guest_jobban) && IsGuestKey(M.key)) return "Guest Job-ban" - if(CONFIG_GET(flag/usewhitelist) && !check_whitelist(M)) - return "Whitelisted Job" var/datum/entity/player_job_ban/PJB = M.client.player_data.job_bans[rank] return PJB ? PJB.text : null diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index e31d372743c5..82f25a6ebe3e 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -47,7 +47,6 @@ GLOBAL_PROTECT(href_token) owner = C owner.admin_holder = src owner.add_admin_verbs() - owner.add_admin_whitelists() owner.tgui_say.load() owner.update_special_keybinds() GLOB.admins |= C diff --git a/code/modules/admin/player_panel/player_panel.dm b/code/modules/admin/player_panel/player_panel.dm index 0fef0415bb38..772e9d4e3f91 100644 --- a/code/modules/admin/player_panel/player_panel.dm +++ b/code/modules/admin/player_panel/player_panel.dm @@ -206,12 +206,7 @@ else M_job = "Carbon-based" else if(isSilicon(M)) //silicon - if(isAI(M)) - M_job = "AI" - else if(isrobot(M)) - M_job = "Cyborg" - else - M_job = "Silicon-based" + M_job = "Silicon-based" else if(isanimal(M)) //simple animals if(iscorgi(M)) M_job = "Corgi" @@ -292,10 +287,8 @@ dat += "[(M.client ? "[M.client]" : "No client")]" dat += "[M.name]" - if(isAI(M)) + if(isSilicon(M)) dat += "AI" - else if(isrobot(M)) - dat += "Cyborg" else if(ishuman(M)) dat += "[M.real_name]" else if(istype(M, /mob/new_player)) diff --git a/code/modules/admin/tabs/debug_tab.dm b/code/modules/admin/tabs/debug_tab.dm index df11917f087a..03068c577045 100644 --- a/code/modules/admin/tabs/debug_tab.dm +++ b/code/modules/admin/tabs/debug_tab.dm @@ -161,15 +161,6 @@ message_admins("[usr.ckey] manually reloaded admins.") load_admins() -/client/proc/reload_whitelist() - set name = "Reload Whitelist" - set category = "Debug" - if(alert("Are you sure you want to do this?",, "Yes", "No") != "Yes") return - if(!check_rights(R_SERVER) || !GLOB.RoleAuthority) return - - message_admins("[usr.ckey] manually reloaded the role whitelist.") - GLOB.RoleAuthority.load_whitelist() - /client/proc/bulk_fetcher() set name = "Bulk Fetch Items" set category = "Debug" diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index 839dea7b2334..5833428c7af6 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -23,7 +23,7 @@ faction = temp_list[faction] if(!GLOB.custom_event_info_list[faction]) - to_chat(usr, "Error has occured, [faction] category is not found.") + to_chat(usr, "Error has occurred, [faction] category is not found.") return var/datum/custom_event_info/CEI = GLOB.custom_event_info_list[faction] @@ -322,7 +322,11 @@ if(!admin_holder) return - var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "CMB", "Other", "Cancel") + var/list/options = list( + "Weyland-Yutani", "High Command", "Provost", "Press", + "Colonial Marshal Bureau", "Union of Progressive Peoples", + "Three World Empire", "Colonial Liberation Front", + "Other", "Cancel") var/answer = tgui_input_list(src, "Which kind of faxes would you like to see?", "Faxes", options) switch(answer) if("Weyland-Yutani") @@ -334,6 +338,7 @@ body += "

      " show_browser(src, body, "Faxes to Weyland-Yutani", "wyfaxviewer", "size=300x600") + if("High Command") var/body = "" @@ -343,6 +348,7 @@ body += "

      " show_browser(src, body, "Faxes to High Command", "uscmfaxviewer", "size=300x600") + if("Provost") var/body = "" @@ -361,9 +367,9 @@ body += "

      " body += "

      " - show_browser(src, body, "Faxes to Press organizations", "otherfaxviewer", "size=300x600") + show_browser(src, body, "Faxes to Press organizations", "pressfaxviewer", "size=300x600") - if("CMB") + if("Colonial Marshal Bureau") var/body = "" for(var/text in GLOB.CMBFaxes) @@ -373,6 +379,36 @@ body += "

      " show_browser(src, body, "Faxes to the Colonial Marshal Bureau", "cmbfaxviewer", "size=300x600") + if("Union of Progressive Peoples") + var/body = "" + + for(var/text in GLOB.UPPFaxes) + body += text + body += "

      " + + body += "

      " + show_browser(src, body, "Faxes to the Union of Progressive Peoples", "uppfaxviewer", "size=300x600") + + if("Three World Empire") + var/body = "" + + for(var/text in GLOB.TWEFaxes) + body += text + body += "

      " + + body += "

      " + show_browser(src, body, "Faxes to the Three World Empire", "twefaxviewer", "size=300x600") + + if("Colonial Liberation Front") + var/body = "" + + for(var/text in GLOB.CLFFaxes) + body += text + body += "

      " + + body += "

      " + show_browser(src, body, "Faxes to the Colonial Liberation Front", "clffaxviewer", "size=300x600") + if("Other") var/body = "" diff --git a/code/modules/admin/tabs/round_tab.dm b/code/modules/admin/tabs/round_tab.dm index 39a9050053f1..4a993459e7d1 100644 --- a/code/modules/admin/tabs/round_tab.dm +++ b/code/modules/admin/tabs/round_tab.dm @@ -169,8 +169,10 @@ set name = "Start Round" set desc = "Start the round RIGHT NOW" set category = "Server.Round" - if (alert("Are you sure you want to start the round early?",,"Yes","No") != "Yes") - return + var/response = tgui_alert(usr, "Are you sure you want to start the round early?", "Force Start Round", list("Yes", "Bypass Checks", "No"), 30 SECONDS) + if (response != "Yes" && response != "Bypass Checks") + return FALSE + SSticker.bypass_checks = response == "Bypass Checks" if (SSticker.current_state == GAME_STATE_STARTUP) message_admins("Game is setting up and will launch as soon as it is ready.") message_admins(SPAN_ADMINNOTICE("[usr.key] has started the process to start the game when loading is finished.")) diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index fa814ca16b7c..825f7c3cdbf4 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -745,9 +745,6 @@ if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return - if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") - return for(var/obj/item/I in M) M.drop_inv_item_on_ground(I) @@ -769,9 +766,6 @@ if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return - if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") - return for(var/obj/item/I in M) M.drop_inv_item_on_ground(I) @@ -793,9 +787,6 @@ if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return - if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") - return M.apply_effect(5, PARALYZE) sleep(5) @@ -814,9 +805,6 @@ if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return - if(isAI(M)) - to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai") - return for(var/obj/item/I in M) M.drop_inv_item_on_ground(I) @@ -854,17 +842,6 @@ usr.client.cmd_admin_alienize(H) - else if(href_list["makeai"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeai"]) - if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") - return - - message_admins(SPAN_DANGER("Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!"), 1) - H.AIize() - else if(href_list["changehivenumber"]) if(!check_rights(R_DEBUG|R_ADMIN)) return @@ -917,12 +894,7 @@ qdel(M.skills) M.skills = null //no skill restriction - if(is_alien_whitelisted(M,"Yautja Elder")) - M.change_real_name(M, "Elder [y_name]") - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/yautja/hunter/full(H), WEAR_JACKET) - H.equip_to_slot_or_del(new /obj/item/weapon/twohanded/yautja/glaive(H), WEAR_L_HAND) - else - M.change_real_name(M, y_name) + M.change_real_name(M, y_name) M.name = "Unknown" // Yautja names are not visible for oomans if(H) @@ -930,16 +902,6 @@ return - else if(href_list["makerobot"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) - if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") - return - - usr.client.cmd_admin_robotize(H) - else if(href_list["makeanimal"]) if(!check_rights(R_SPAWN)) return @@ -1163,7 +1125,7 @@ GLOB.fax_contents += fax_message // save a copy var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null - GLOB.USCMFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") + GLOB.PressFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") var/msg_ghost = SPAN_NOTICE("PRESS REPLY: ") msg_ghost += "Transmitting '[customname]' via secure connection ... " @@ -1199,6 +1161,7 @@ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1) return to_chat(src.owner, "/red Unable to locate fax!") + else if(href_list["USCMFaxReply"]) var/mob/living/carbon/human/H = locate(href_list["USCMFaxReply"]) var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"]) @@ -1226,7 +1189,7 @@ return else return - var/message_body = input(src.owner, "Enter Message Body, use

      for paragraphs", "Outgoing message from Weyland USCM", "") as message|null + var/message_body = input(src.owner, "Enter Message Body, use

      for paragraphs", "Outgoing message from USCM", "") as message|null if(!message_body) return var/sent_by = input(src.owner, "Enter the name and rank you are sending from.", "Outgoing message from USCM", "") as message|null @@ -1282,8 +1245,8 @@ return to_chat(src.owner, "/red Unable to locate fax!") - else if(href_list["CLFaxReply"]) - var/mob/living/carbon/human/H = locate(href_list["CLFaxReply"]) + else if(href_list["WYFaxReply"]) + var/mob/living/carbon/human/H = locate(href_list["WYFaxReply"]) var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"]) var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom")) @@ -1364,6 +1327,249 @@ return to_chat(src.owner, "/red Unable to locate fax!") + else if(href_list["TWEFaxReply"]) + var/mob/living/carbon/human/H = locate(href_list["TWEFaxReply"]) + var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"]) + + var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom")) + if(!template_choice) return + var/datum/fax/fax_message + switch(template_choice) + if("Custom") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
      for line breaks.", "Outgoing message from TWE", "") as message|null + if(!input) + return + fax_message = new(input) + if("Template") + var/subject = input(src.owner, "Enter subject line", "Outgoing message from TWE", "") as message|null + if(!subject) + return + var/addressed_to = "" + var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom")) + if(address_option == "Sender") + addressed_to = "[H.real_name]" + else if(address_option == "Custom") + addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from TWE", "") as message|null + if(!addressed_to) + return + else + return + var/message_body = input(src.owner, "Enter Message Body, use

      for paragraphs", "Outgoing message from TWE", "") as message|null + if(!message_body) + return + var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from TWE", "") as message|null + if(!sent_by) + return + fax_message = new(generate_templated_fax(0, "THREE WORLD EMPIRE - ROYAL MILITARY COMMAND", subject, addressed_to, message_body, sent_by, "Office of Military Communications", "Three World Empire")) + show_browser(usr, "[fax_message.data]", "PREVIEW OF TWE FAX", "size=500x400") + var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel")) + if(send_choice != "Send") + return + GLOB.fax_contents += fax_message // save a copy + + var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null + if(!customname) + return + + GLOB.TWEFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP + + var/msg_ghost = SPAN_NOTICE("THREE WORLD EMPIRE FAX REPLY: ") + msg_ghost += "Transmitting '[customname]' via secure connection ... " + msg_ghost += "view message" + announce_fax( ,msg_ghost) + + for(var/obj/structure/machinery/faxmachine/F in GLOB.machines) + if(F == fax) + if(!(F.inoperable())) + + // animate! it's alive! + flick("faxreceive", F) + + // give the sprite some time to flick + spawn(20) + var/obj/item/paper/P = new /obj/item/paper( F.loc ) + P.name = "Three World Empire - [customname]" + P.info = fax_message.data + P.update_icon() + + playsound(F.loc, "sound/machines/fax.ogg", 15) + + // Stamps + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-twe" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped by the Three World Empire Quantum Relay (tm)." + + to_chat(src.owner, "Message reply to transmitted successfully.") + message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1) + return + to_chat(src.owner, "/red Unable to locate fax!") + + else if(href_list["UPPFaxReply"]) + var/mob/living/carbon/human/H = locate(href_list["UPPFaxReply"]) + var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"]) + + var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom")) + if(!template_choice) return + var/datum/fax/fax_message + switch(template_choice) + if("Custom") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
      for line breaks.", "Outgoing message from UPP", "") as message|null + if(!input) + return + fax_message = new(input) + if("Template") + var/subject = input(src.owner, "Enter subject line", "Outgoing message from UPP", "") as message|null + if(!subject) + return + var/addressed_to = "" + var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom")) + if(address_option == "Sender") + addressed_to = "[H.real_name]" + else if(address_option == "Custom") + addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from UPP", "") as message|null + if(!addressed_to) + return + else + return + var/message_body = input(src.owner, "Enter Message Body, use

      for paragraphs", "Outgoing message from UPP", "") as message|null + if(!message_body) + return + var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from UPP", "") as message|null + if(!sent_by) + return + fax_message = new(generate_templated_fax(0, "UNION OF PROGRESSIVE PEOPLES - MILITARY HIGH KOMMAND", subject, addressed_to, message_body, sent_by, "Military High Kommand", "Union of Progressive Peoples")) + show_browser(usr, "[fax_message.data]", "PREVIEW OF UPP FAX", "size=500x400") + var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel")) + if(send_choice != "Send") + return + GLOB.fax_contents += fax_message // save a copy + + var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null + if(!customname) + return + + GLOB.UPPFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP + + var/msg_ghost = SPAN_NOTICE("UNION OF PROGRESSIVE PEOPLES FAX REPLY: ") + msg_ghost += "Transmitting '[customname]' via secure connection ... " + msg_ghost += "view message" + announce_fax( ,msg_ghost) + + for(var/obj/structure/machinery/faxmachine/F in GLOB.machines) + if(F == fax) + if(!(F.inoperable())) + + // animate! it's alive! + flick("faxreceive", F) + + // give the sprite some time to flick + spawn(20) + var/obj/item/paper/P = new /obj/item/paper( F.loc ) + P.name = "Union of Progressive Peoples - [customname]" + P.info = fax_message.data + P.update_icon() + + playsound(F.loc, "sound/machines/fax.ogg", 15) + + // Stamps + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-upp" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped by the Union of Progressive Peoples Quantum Relay (tm)." + + to_chat(src.owner, "Message reply to transmitted successfully.") + message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1) + return + to_chat(src.owner, "/red Unable to locate fax!") + + else if(href_list["CLFFaxReply"]) + var/mob/living/carbon/human/H = locate(href_list["CLFFaxReply"]) + var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"]) + + var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom")) + if(!template_choice) return + var/datum/fax/fax_message + switch(template_choice) + if("Custom") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
      for line breaks.", "Outgoing message from CLF", "") as message|null + if(!input) + return + fax_message = new(input) + if("Template") + var/subject = input(src.owner, "Enter subject line", "Outgoing message from CLF", "") as message|null + if(!subject) + return + var/addressed_to = "" + var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom")) + if(address_option == "Sender") + addressed_to = "[H.real_name]" + else if(address_option == "Custom") + addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from CLF", "") as message|null + if(!addressed_to) + return + else + return + var/message_body = input(src.owner, "Enter Message Body, use

      for paragraphs", "Outgoing message from CLF", "") as message|null + if(!message_body) + return + var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from CLF", "") as message|null + if(!sent_by) + return + fax_message = new(generate_templated_fax(0, "COLONIAL LIBERATION FRONT - COLONIAL COUNCIL OF LIBERATION", subject, addressed_to, message_body, sent_by, "Guerilla Forces Command", "Colonial Liberation Front")) + show_browser(usr, "[fax_message.data]", "PREVIEW OF CLF FAX", "size=500x400") + var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel")) + if(send_choice != "Send") + return + GLOB.fax_contents += fax_message // save a copy + + var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null + if(!customname) + return + + GLOB.CLFFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP + + var/msg_ghost = SPAN_NOTICE("COLONIAL LIBERATION FRONT FAX REPLY: ") + msg_ghost += "Transmitting '[customname]' via secure connection ... " + msg_ghost += "view message" + announce_fax( ,msg_ghost) + + for(var/obj/structure/machinery/faxmachine/F in GLOB.machines) + if(F == fax) + if(!(F.inoperable())) + + // animate! it's alive! + flick("faxreceive", F) + + // give the sprite some time to flick + spawn(20) + var/obj/item/paper/P = new /obj/item/paper( F.loc ) + P.name = "Colonial Liberation Front - [customname]" + P.info = fax_message.data + P.update_icon() + + playsound(F.loc, "sound/machines/fax.ogg", 15) + + // Stamps + var/image/stampoverlay = image('icons/obj/items/paper.dmi') + stampoverlay.icon_state = "paper_stamp-clf" + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/tool/stamp + P.overlays += stampoverlay + P.stamps += "
      This paper has been stamped and encrypted by the Colonial Liberation Front Quantum Relay (tm)." + + to_chat(src.owner, "Message reply to transmitted successfully.") + message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1) + return + to_chat(src.owner, "/red Unable to locate fax!") + else if(href_list["CMBFaxReply"]) var/mob/living/carbon/human/H = locate(href_list["CMBFaxReply"]) var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"]) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c776a12eb330..535a55ca47b3 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -18,21 +18,6 @@ usr.show_message(t, SHOW_MESSAGE_VISIBLE) -/client/proc/cmd_admin_robotize(mob/M in GLOB.mob_list) - set category = null - set name = "Make Robot" - - if(!SSticker.mode) - alert("Wait until the game starts") - return - if(istype(M, /mob/living/carbon/human)) - log_admin("[key_name(src)] has robotized [M.key].") - spawn(10) - M:Robotize() - - else - alert("Invalid mob") - /client/proc/cmd_admin_animalize(mob/M in GLOB.mob_list) set category = null set name = "Make Simple Animal" diff --git a/code/modules/admin/view_variables/get_variables.dm b/code/modules/admin/view_variables/get_variables.dm index a2b87b0909d0..9ec449e4c3f6 100644 --- a/code/modules/admin/view_variables/get_variables.dm +++ b/code/modules/admin/view_variables/get_variables.dm @@ -121,12 +121,12 @@ switch(.["class"]) if(VV_TEXT) - .["value"] = tgui_input_text(usr, "Enter new text:", "Text", current_value, encode = FALSE) + .["value"] = tgui_input_text(usr, "Enter new text:", "Text", current_value, encode = FALSE, trim = FALSE) if(.["value"] == null) .["class"] = null return if(VV_MESSAGE) - .["value"] = tgui_input_text(usr, "Enter new text:", "Text", current_value, encode = FALSE) + .["value"] = tgui_input_text(usr, "Enter new text:", "Text", current_value, encode = FALSE, trim = FALSE) if(.["value"] == null) .["class"] = null return diff --git a/code/modules/animations/animation_library.dm b/code/modules/animations/animation_library.dm index d4fd8feeaf24..f153338487cd 100644 --- a/code/modules/animations/animation_library.dm +++ b/code/modules/animations/animation_library.dm @@ -47,22 +47,22 @@ Instead of being uniform, it starts out a littler slower, goes fast in the middl animate(A, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3) //Flashes a color, then goes back to regular. -/proc/animation_flash_color(atom/A, flash_color = "#FF0000", speed = 3) //Flashes red on default. +/proc/animation_flash_color(atom/A, flash_color = COLOR_RED, speed = 3) //Flashes red on default. var/oldcolor = A.color animate(A, color = flash_color, time = speed, flags = ANIMATION_PARALLEL) animate(color = oldcolor, time = speed) /* fuck this, only halloween uses this -spookydonut //Gives it a spooky overlay and animation. Same as above, mostly, only adds a cool overlay effect. -/proc/animation_horror_flick(atom/A, flash_color = "#000000", speed = 4) +/proc/animation_horror_flick(atom/A, flash_color = COLOR_BLACK, speed = 4) animate(A, color = flash_color, time = speed) - animate(color = "#FFFFFF", time = speed) + animate(color = COLOR_WHITE, time = speed) var/image/I = image('icons/mob/mob.dmi',A,"spook") I.flick_overlay(A,7) /proc/animation_blood_spatter(atom/A, flash_color = "#8A0707", speed = 4) animate(A, color = flash_color, time = speed) - animate(color = "#FFFFFF", time = speed) + animate(color = COLOR_WHITE, time = speed) var/image/I = image('icons/mob/mob.dmi',A,"blood_spatter") if(prob(50)) I.transform = matrix(rand(0,45), MATRIX_ROTATE) @@ -91,13 +91,13 @@ Instead of being uniform, it starts out a littler slower, goes fast in the middl /proc/animation_teleport_quick_in(atom/A, speed = 10) A.transform = matrix(0, 4, MATRIX_SCALE) A.alpha = 0 //Start with transparency, just in case. - animate(A, alpha = 255, transform = null, color = "#FFFFFF", time = speed, easing = BACK_EASING) + animate(A, alpha = 255, transform = null, color = COLOR_WHITE, time = speed, easing = BACK_EASING) /*A magical teleport animation, for when the person is transported with some magic. Good for Halloween type events. Can look good elsewhere as well.*/ /*proc/animation_teleport_magic_out(atom/A, speed = 6) animate(A, transform = matrix(1.5, 0, MATRIX_SCALE), time = speed, easing = BACK_EASING) - animate(transform = matrix(0, 4, MATRIX_SCALE) * matrix(0, 6, MATRIX_TRANSLATE), color = "#FFFF00", time = speed, alpha = 100, easing = BOUNCE_EASING|EASE_IN) + animate(transform = matrix(0, 4, MATRIX_SCALE) * matrix(0, 6, MATRIX_TRANSLATE), color = COLOR_YELLOW, time = speed, alpha = 100, easing = BOUNCE_EASING|EASE_IN) animate(alpha = 0, time = speed) var/image/I = image('icons/effects/effects.dmi',A,"sparkle") I.flick_overlay(A,9) @@ -106,8 +106,8 @@ Can look good elsewhere as well.*/ /proc/animation_teleport_magic_in(atom/A, speed = 6) A.transform = matrix(0,3.5, MATRIX_SCALE) A.alpha = 0 - animate(A, alpha = 255, color = "#FFFF00", time = speed, easing = BACK_EASING) - animate(transform = matrix(1.5, 0, MATRIX_SCALE), color = "#FFFFFF", time = speed, easing = CIRCULAR_EASING|EASE_OUT) + animate(A, alpha = 255, color = COLOR_YELLOW, time = speed, easing = BACK_EASING) + animate(transform = matrix(1.5, 0, MATRIX_SCALE), color = COLOR_WHITE, time = speed, easing = CIRCULAR_EASING|EASE_OUT) animate(transform = null, time = speed-1) var/image/I = image('icons/effects/effects.dmi',A,"sparkle") I.flick_overlay(A,10) @@ -115,7 +115,7 @@ Can look good elsewhere as well.*/ //A spooky teleport for evil dolls, horrors, and whatever else. Halloween type stuff. /proc/animation_teleport_spooky_out(atom/A, speed = 6, sleep_duration = 0) animate(A, transform = matrix() * 1.5, color = "#551a8b", time = speed, easing = BACK_EASING) - animate(transform = matrix() * 0.2, alpha = 100, color = "#000000", time = speed, easing = BACK_EASING) + animate(transform = matrix() * 0.2, alpha = 100, color = COLOR_BLACK, time = speed, easing = BACK_EASING) animate(alpha = 0, time = speed) var/image/I = image('icons/effects/effects.dmi',A,"spooky") I.flick_overlay(A,9,RESET_COLOR|RESET_ALPHA|TILE_BOUND) @@ -125,7 +125,7 @@ Can look good elsewhere as well.*/ A.transform *= 1.2 A.alpha = 0 animate(A, alpha = 255, color = "#551a8b", time = speed) - animate(transform = null, color = "#FFFFFF", time = speed, easing = QUAD_EASING|EASE_OUT) + animate(transform = null, color = COLOR_WHITE, time = speed, easing = QUAD_EASING|EASE_OUT) var/image/I = image('icons/effects/effects.dmi',A,"spooky") I.flick_overlay(A,10)*/ @@ -135,7 +135,7 @@ Can look good elsewhere as well.*/ A.mouse_opacity = MOUSE_OPACITY_TRANSPARENT //We don't want them to click this while the animation is still playing. A.density = FALSE //So it doesn't block anything. var/i = 1 + (0.1 * rand(1,5)) - animate(A, transform = matrix() * i, color = "#808080", time = speed, easing = SINE_EASING) + animate(A, transform = matrix() * i, color = COLOR_GRAY, time = speed, easing = SINE_EASING) animate(alpha = 0, time = speed) return speed @@ -166,7 +166,7 @@ Can look good elsewhere as well.*/ animate(alpha = 100, matrix(rand(45,90) * pick(1,-1), MATRIX_ROTATE), time = speed) animate(pixel_x = x_o+rand(-x_n, x_n), pixel_y = y_o+rand(-y_n, y_n), time = speed, easing = ELASTIC_EASING|EASE_IN) animate(pixel_x = x_o, pixel_y = y_o, time = speed, easing = CIRCULAR_EASING|EASE_OUT) - animate(alpha = 0, color = "#808080", time = speed) + animate(alpha = 0, color = COLOR_GRAY, time = speed) var/image/I = image('icons/effects/effects.dmi',A,"red_particles") I.flick_overlay(A,25) return speed*9*/ diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index e9587319a160..e35974bc6276 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -61,33 +61,9 @@ "nano/templates/", ) -/datum/asset/directory/nanoui/weapons - common_dirs = list( - "nano/images/weapons/", - ) - - uncommon_dirs = list() - -/datum/asset/directory/nanoui/weapons/send(client) - if(!client) - log_debug("Warning! Tried to send nanoui weapon data with a null client! (asset_list_items.dm line 93)") - return - SSassets.transport.send_assets(client, common) - - /datum/asset/simple/nanoui_images keep_local_name = TRUE - assets = list( - "auto.png" = 'nano/images/weapons/auto.png', - "burst.png" = 'nano/images/weapons/burst.png', - "single.png" = 'nano/images/weapons/single.png', - "disabled_automatic.png" = 'nano/images/weapons/disabled_automatic.png', - "disabled_burst.png" = 'nano/images/weapons/disabled_burst.png', - "disabled_single.png" = 'nano/images/weapons/disabled_single.png', - "no_name.png" = 'nano/images/weapons/no_name.png', - ) - var/list/common_dirs = list( "nano/images/", ) @@ -398,9 +374,22 @@ name = "gunlineart" /datum/asset/spritesheet/gun_lineart/register() - InsertAll("", 'icons/obj/items/weapons/guns/lineart.dmi') + var/icon_file = 'icons/obj/items/weapons/guns/lineart.dmi' + InsertAll("", icon_file) + + for(var/obj/item/weapon/gun/current_gun as anything in subtypesof(/obj/item/weapon/gun)) + var/icon_state = initial(current_gun.base_gun_icon) + if(icon_state && isnull(sprites[icon_state])) + stack_trace("[current_gun] does not have a valid lineart icon state, icon=[icon_file], icon_state=[json_encode(icon_state)](\ref[icon_state])") + ..() +/datum/asset/spritesheet/gun_lineart_modes + name = "gunlineartmodes" + +/datum/asset/spritesheet/gun_lineart_modes/register() + InsertAll("", 'icons/obj/items/weapons/guns/lineart_modes.dmi') + ..() /datum/asset/simple/orbit assets = list( @@ -414,17 +403,6 @@ "ntosradarpointerS.png" = 'icons/images/ui_images/ntosradar_pointer_S.png' ) -/datum/asset/simple/firemodes - assets = list( - "auto.png" = 'html/images/auto.png', - "disabled_auto.png" = 'html/images/disabled_automatic.png', - "burst.png" = 'html/images/burst.png', - "disabled_burst.png" = 'html/images/disabled_burst.png', - "single.png" = 'html/images/single.png', - "disabled_single.png" = 'html/images/disabled_single.png', - ) - - /datum/asset/simple/particle_editor assets = list( "motion" = 'icons/images/ui_images/particle_editor/motion.png', diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm index eeab65ec031a..bc20a714027d 100644 --- a/code/modules/buildmode/buildmode.dm +++ b/code/modules/buildmode/buildmode.dm @@ -80,7 +80,7 @@ var/pos_idx = 0 for(var/thing in elements) var/x = pos_idx % switch_width - var/y = FLOOR(pos_idx / switch_width, 1) + var/y = Floor(pos_idx / switch_width) var/atom/movable/screen/buildmode/B = new buttontype(src, thing) // extra .5 for a nice offset look B.screen_loc = "NORTH-[(1 + 0.5 + y*1.5)],WEST+[0.5 + x*1.5]" diff --git a/code/modules/character_traits/biology_traits.dm b/code/modules/character_traits/biology_traits.dm index efd894fe20cf..9074e833e718 100644 --- a/code/modules/character_traits/biology_traits.dm +++ b/code/modules/character_traits/biology_traits.dm @@ -49,13 +49,13 @@ var/string_paygrade = preset.load_rank(target) var/datum/paygrade/paygrade_datum = GLOB.paygrades[string_paygrade] if(paygrade_datum?.ranking > maximum_ranking) - to_chat(target, SPAN_WARNING("Your paygrade is too high for you to be able to recieve the lisping trait.")) + to_chat(target, SPAN_WARNING("Your paygrade is too high for you to be able to receive the lisping trait.")) return if(target.job in inapplicable_roles) - to_chat(target, SPAN_WARNING("Your office is too high for you to be able to recieve the lisping trait.")) + to_chat(target, SPAN_WARNING("Your office is too high for you to be able to receive the lisping trait.")) return if(target.species.group in inapplicable_species) - to_chat(target, SPAN_WARNING("Your species is too sophisticated for you be able to recieve the lisping trait.")) + to_chat(target, SPAN_WARNING("Your species is too sophisticated for you be able to receive the lisping trait.")) return ADD_TRAIT(target, TRAIT_LISPING, ROUNDSTART_TRAIT) @@ -89,10 +89,10 @@ /datum/character_trait/biology/bad_leg/apply_trait(mob/living/carbon/human/target, datum/equipment_preset/preset) if(target.job in inapplicable_roles) - to_chat(target, SPAN_WARNING("Your office is too combat-geared for you to be able to recieve the bad leg trait.")) + to_chat(target, SPAN_WARNING("Your office is too combat-geared for you to be able to receive the bad leg trait.")) return if(target.species.group in inapplicable_species) - to_chat(target, SPAN_WARNING("Your species is too sophisticated for you be able to recieve the bad leg trait.")) + to_chat(target, SPAN_WARNING("Your species is too sophisticated for you be able to receive the bad leg trait.")) return target.AddComponent(/datum/component/bad_leg) diff --git a/code/modules/clans/client.dm b/code/modules/clans/client.dm index c46adf89711a..c4948b2a6923 100644 --- a/code/modules/clans/client.dm +++ b/code/modules/clans/client.dm @@ -5,11 +5,11 @@ set waitfor = FALSE . = ..() - if(GLOB.RoleAuthority && (GLOB.RoleAuthority.roles_whitelist[ckey] & WHITELIST_PREDATOR)) + if(GLOB.RoleAuthority && check_whitelist_status(WHITELIST_PREDATOR)) clan_info = GET_CLAN_PLAYER(player.id) clan_info.sync() - if(GLOB.RoleAuthority.roles_whitelist[ckey] & WHITELIST_YAUTJA_LEADER) + if(check_whitelist_status(WHITELIST_YAUTJA_LEADER)) clan_info.clan_rank = GLOB.clan_ranks_ordered[CLAN_RANK_ADMIN] clan_info.permissions |= CLAN_PERMISSION_ALL else diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 3dfe2d38d81f..44820444a955 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -319,12 +319,9 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( player_entity = setup_player_entity(ckey) - if(!CONFIG_GET(flag/no_localhost_rank)) - var/static/list/localhost_addresses = list("127.0.0.1", "::1") - if(isnull(address) || (address in localhost_addresses)) - var/datum/admins/admin = new("!localhost!", RL_HOST, ckey) - admin.associate(src) - GLOB.RoleAuthority.roles_whitelist[ckey] = WHITELIST_EVERYTHING + if(check_localhost_status()) + var/datum/admins/admin = new("!localhost!", RL_HOST, ckey) + admin.associate(src) //Admin Authorisation admin_holder = GLOB.admin_datums[ckey] @@ -878,3 +875,41 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( if(!selected_action.player_hidden && selected_action.hidden) //Inform the player that even if they are unhiding it, itll still not be visible to_chat(user, SPAN_NOTICE("[selected_action] is forcefully hidden, bypassing player unhiding.")) + + +/client/proc/check_whitelist_status(flag_to_check) + if(check_localhost_status()) + return TRUE + + if((flag_to_check & WHITELIST_MENTOR) && CLIENT_IS_MENTOR(src)) + return TRUE + + if((flag_to_check & WHITELIST_JOE) && CLIENT_IS_STAFF(src)) + return TRUE + + if(!player_data) + load_player_data() + if(!player_data) + return FALSE + + return player_data.check_whitelist_status(flag_to_check) + +/client/proc/check_whitelist_status_list(flags_to_check) /// Logical OR list, not match all. + var/success = FALSE + if(!player_data) + load_player_data() + for(var/bitfield in flags_to_check) + success = player_data.check_whitelist_status(bitfield) + if(success) + break + return success + +/client/proc/check_localhost_status() + if(CONFIG_GET(flag/no_localhost_rank)) + return FALSE + + var/static/list/localhost_addresses = list("127.0.0.1", "::1") + if(isnull(address) || (address in localhost_addresses)) + return TRUE + + return FALSE diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 29676ddb4ac8..221736b5c84f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -308,13 +308,13 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "
      " dat += "Human - " dat += "Xenomorph - " - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_COMMANDER) + if(owner.check_whitelist_status(WHITELIST_COMMANDER)) dat += "Commanding Officer - " - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) + if(owner.check_whitelist_status(WHITELIST_SYNTHETIC)) dat += "Synthetic - " - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_PREDATOR) + if(owner.check_whitelist_status(WHITELIST_PREDATOR)) dat += "Yautja - " - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_MENTOR) + if(owner.check_whitelist_status(WHITELIST_MENTOR)) dat += "Mentor - " dat += "Settings - " dat += "Special Roles" @@ -484,7 +484,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( n++ if(MENU_CO) - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_COMMANDER) + if(owner.check_whitelist_status(WHITELIST_COMMANDER)) dat += "
      " dat += "

      Commander Settings:

      " dat += "Commander Whitelist Status: [commander_status]
      " @@ -494,7 +494,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( else dat += "You do not have the whitelist for this role." if(MENU_SYNTHETIC) - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) + if(owner.check_whitelist_status(WHITELIST_SYNTHETIC)) dat += "
      " dat += "

      Synthetic Settings:

      " dat += "Synthetic Name: [synthetic_name]
      " @@ -504,7 +504,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( else dat += "You do not have the whitelist for this role." if(MENU_YAUTJA) - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_PREDATOR) + if(owner.check_whitelist_status(WHITELIST_PREDATOR)) dat += "
      " dat += "

      Yautja Information:

      " dat += "Yautja Name: [predator_name]
      " @@ -518,7 +518,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "
      " dat += "

      Equipment Setup:

      " - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_YAUTJA_LEGACY) + if(owner.check_whitelist_status(WHITELIST_YAUTJA_LEGACY)) dat += "Legacy Gear: [predator_use_legacy]
      " dat += "Translator Type: [predator_translator_type]
      " dat += "Mask Style: ([predator_mask_type])
      " @@ -542,7 +542,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( else dat += "You do not have the whitelist for this role." if(MENU_MENTOR) - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_MENTOR) + if(owner.check_whitelist_status(WHITELIST_MENTOR)) dat += "Nothing here. For now." else dat += "You do not have the whitelist for this role." @@ -636,7 +636,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "Spawn as Engineer: [toggles_ert & PLAY_ENGINEER ? "Yes" : "No"]
      " dat += "Spawn as Specialist: [toggles_ert & PLAY_HEAVY ? "Yes" : "No"]
      " dat += "Spawn as Smartgunner: [toggles_ert & PLAY_SMARTGUNNER ? "Yes" : "No"]
      " - if(GLOB.RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) + if(owner.check_whitelist_status(WHITELIST_SYNTHETIC)) dat += "Spawn as Synth: [toggles_ert & PLAY_SYNTH ? "Yes" : "No"]
      " dat += "Spawn as Miscellaneous: [toggles_ert & PLAY_MISC ? "Yes" : "No"]
      " dat += "
      " @@ -684,7 +684,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(jobban_isbanned(user, job.title)) HTML += "[job.disp_title]BANNED" continue - else if(job.flags_startup_parameters & ROLE_WHITELISTED && !(GLOB.RoleAuthority.roles_whitelist[user.ckey] & job.flags_whitelist)) + else if(!job.check_whitelist_status(user)) HTML += "[job.disp_title]WHITELISTED" continue else if(!job.can_play_role(user.client)) @@ -796,7 +796,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(jobban_isbanned(user, job.title)) HTML += "[job.disp_title]BANNED" continue - else if(job.flags_startup_parameters & ROLE_WHITELISTED && !(GLOB.RoleAuthority.roles_whitelist[user.ckey] & job.flags_whitelist)) + else if(!job.check_whitelist_status(user)) HTML += "[job.disp_title]WHITELISTED" continue else if(!job.can_play_role(user.client)) @@ -962,7 +962,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( pref_job_slots[J.title] = JOB_SLOT_CURRENT_SLOT /datum/preferences/proc/process_link(mob/user, list/href_list) - var/whitelist_flags = GLOB.RoleAuthority.roles_whitelist[user.ckey] + switch(href_list["preference"]) if("job") @@ -1198,6 +1198,9 @@ GLOBAL_LIST_INIT(bgstate_options, list( if ("all") randomize_appearance() if("input") + var/datum/entity/player/player = get_player_from_key(user.ckey) + var/whitelist_flags = player.whitelist_flags + switch(href_list["preference"]) if("name") if(human_name_ban) @@ -1286,7 +1289,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( predator_caster_material = new_pred_caster_mat if("pred_cape_type") var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_PREDATOR] - var/whitelist_status = GLOB.clan_ranks_ordered[J.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, owner)] + var/whitelist_status = GLOB.clan_ranks_ordered[J.get_whitelist_status(owner)] var/list/options = list("None" = "None") for(var/cape_name in GLOB.all_yautja_capes) @@ -1325,7 +1328,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(whitelist_flags & (WHITELIST_COMMANDER_COUNCIL|WHITELIST_COMMANDER_COUNCIL_LEGACY)) options += list("Council" = WHITELIST_COUNCIL) - if(whitelist_flags & WHITELIST_COMMANDER_LEADER) + if(whitelist_flags & (WHITELIST_COMMANDER_LEADER|WHITELIST_COMMANDER_COLONEL)) options += list("Leader" = WHITELIST_LEADER) var/new_commander_status = tgui_input_list(user, "Choose your new Commander Whitelist Status.", "Commander Status", options) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index a71f7dbcb3e9..0c1a7a31b5e8 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -58,14 +58,26 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) display_name = "Ballistic goggles, black" path = /obj/item/clothing/glasses/mgoggles/black +/datum/gear/eyewear/goggles_black/prescription + display_name = "Prescription ballistic goggles, black" + path = /obj/item/clothing/glasses/mgoggles/black/prescription + /datum/gear/eyewear/goggles_orange display_name = "Ballistic goggles, orange" path = /obj/item/clothing/glasses/mgoggles/orange +/datum/gear/eyewear/goggles_orange/prescription + display_name = "Prescription ballistic goggles, orange" + path = /obj/item/clothing/glasses/mgoggles/orange/prescription + /datum/gear/eyewear/goggles2 display_name = "Ballistic goggles, M1A1" path = /obj/item/clothing/glasses/mgoggles/v2 +/datum/gear/eyewear/goggles2/prescription + display_name = "Prescription ballistic goggles, M1A1" + path = /obj/item/clothing/glasses/mgoggles/v2/prescription + /datum/gear/eyewear/bimex_shades display_name = "BiMex personal shades" path = /obj/item/clothing/glasses/sunglasses/big @@ -215,7 +227,7 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) /datum/gear/headwear/uscm/beret_green display_name = "USCM beret, green" - path = /obj/item/clothing/head/beret/cm + path = /obj/item/clothing/head/beret/cm/green /datum/gear/headwear/uscm/beret_tan display_name = "USCM beret, tan" @@ -863,6 +875,14 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) display_name = "Lighter, zippo" path = /obj/item/tool/lighter/zippo +/datum/gear/smoking/zippo/black + display_name = "Black lighter, zippo" + path = /obj/item/tool/lighter/zippo/black + +/datum/gear/smoking/zippo/blue + display_name = "Blue lighter, zippo" + path = /obj/item/tool/lighter/zippo/blue + /datum/gear/smoking/electronic_cigarette display_name = "Electronic cigarette" path = /obj/item/clothing/mask/electronic_cigarette @@ -891,7 +911,7 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) /datum/gear/misc/facepaint_skull display_name = "Facepaint, skull" path = /obj/item/facepaint/skull - cost = 3 + cost = 3 /datum/gear/misc/facepaint_body display_name = "Fullbody paint" diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index dae7f633f05d..88605cb3b792 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -87,6 +87,36 @@ if(istype(A, /datum/action/item_action/toggle)) A.update_button_icon() +/obj/item/clothing/glasses/proc/try_make_offhand_prescription(mob/user) + if(!prescription) + return FALSE + + var/obj/item/clothing/glasses/offhand = user.get_inactive_hand() + if(istype(offhand) && !offhand.prescription) + if(tgui_alert(user, "Do you wish to take out the prescription lenses and put them in [offhand]?", "Insert Prescription Lenses", list("Yes", "No")) == "Yes") + if(QDELETED(src) || offhand != user.get_inactive_hand()) + return FALSE + offhand.prescription = TRUE + offhand.AddElement(/datum/element/poor_eyesight_correction) + offhand.desc += " Fitted with prescription lenses." + user.visible_message(SPAN_DANGER("[user] takes the lenses out of [src] and puts them in [offhand]."), SPAN_NOTICE("You take the lenses out of [src] and put them in [offhand].")) + qdel(src) + return TRUE + + return FALSE + +/obj/item/clothing/glasses/sunglasses/prescription/attack_self(mob/user) + if(try_make_offhand_prescription(user)) + return + + return ..() + +/obj/item/clothing/glasses/regular/attack_self(mob/user) + if(try_make_offhand_prescription(user)) + return + + return ..() + /obj/item/clothing/glasses/equipped(mob/user, slot) if(active && slot == WEAR_EYES) if(!can_use_active_effect(user)) @@ -225,7 +255,7 @@ desc = "The Corps may call them Regulation Prescription Glasses but you know them as Rut Prevention Glasses. These ones actually have a proper prescribed lens." icon_state = "mBCG" item_state = "mBCG" - prescription = 1 + prescription = TRUE flags_equip_slot = SLOT_EYES|SLOT_FACE /obj/item/clothing/glasses/m42_goggles @@ -311,7 +341,7 @@ /obj/item/clothing/glasses/disco_fever/proc/apply_discovision(mob/user) //Caramelldansen HUD overlay. //Use of this filter in armed conflict is in direct contravention of the Geneva Suggestions (2120 revision) - //Colours are based on a bit of the music video. Original version was a rainbow with #c20000 and #db6c03 as well. + //Colors are based on a bit of the music video. Original version was a rainbow with #c20000 and #db6c03 as well. //Animate the obj and onmob in sync with the client. for(var/I in list(obj_glass_overlay, mob_glass_overlay)) @@ -331,35 +361,35 @@ if(!user.client) //Shouldn't happen but can't hurt to check. return - var/base_colour + var/base_colors if(!user.client.color) //No set client color. - base_colour = color_matrix_saturation(1.35) //Crank up the saturation and get ready to party. + base_colors = color_matrix_saturation(1.35) //Crank up the saturation and get ready to party. else if(istext(user.client.color)) //Hex color string. - base_colour = color_matrix_multiply(color_matrix_from_string(user.client.color), color_matrix_saturation(1.35)) - else //Colour matrix. - base_colour = color_matrix_multiply(user.client.color, color_matrix_saturation(1.35)) + base_colors = color_matrix_multiply(color_matrix_from_string(user.client.color), color_matrix_saturation(1.35)) + else //Color matrix. + base_colors = color_matrix_multiply(user.client.color, color_matrix_saturation(1.35)) var/list/colours = list( - "yellow" = color_matrix_multiply(base_colour, color_matrix_from_string("#d4c218")), - "green" = color_matrix_multiply(base_colour, color_matrix_from_string("#2dc404")), - "cyan" = color_matrix_multiply(base_colour, color_matrix_from_string("#2ac1db")), - "blue" = color_matrix_multiply(base_colour, color_matrix_from_string("#005BF7")), - "indigo" = color_matrix_multiply(base_colour, color_matrix_from_string("#b929f7")) + "yellow" = color_matrix_multiply(base_colors, color_matrix_from_string("#d4c218")), + "green" = color_matrix_multiply(base_colors, color_matrix_from_string("#2dc404")), + "cyan" = color_matrix_multiply(base_colors, color_matrix_from_string("#2ac1db")), + "blue" = color_matrix_multiply(base_colors, color_matrix_from_string("#005BF7")), + "indigo" = color_matrix_multiply(base_colors, color_matrix_from_string("#b929f7")) ) //Animate the victim's client. animate(user.client, color = colours["indigo"], time = 0.3 SECONDS, loop = -1) - animate(color = base_colour, time = 0.3 SECONDS) + animate(color = base_colors, time = 0.3 SECONDS) animate(color = colours["cyan"], time = 0.3 SECONDS) - animate(color = base_colour, time = 0.3 SECONDS) + animate(color = base_colors, time = 0.3 SECONDS) animate(color = colours["yellow"], time = 0.3 SECONDS) - animate(color = base_colour, time = 0.3 SECONDS) + animate(color = base_colors, time = 0.3 SECONDS) animate(color = colours["green"], time = 0.3 SECONDS) - animate(color = base_colour, time = 0.3 SECONDS) + animate(color = base_colors, time = 0.3 SECONDS) animate(color = colours["blue"], time = 0.3 SECONDS) - animate(color = base_colour, time = 0.3 SECONDS) + animate(color = base_colors, time = 0.3 SECONDS) animate(color = colours["yellow"], time = 0.3 SECONDS) - animate(color = base_colour, time = 0.3 SECONDS) + animate(color = base_colors, time = 0.3 SECONDS) /obj/item/clothing/glasses/disco_fever/dropped(mob/living/carbon/human/user) . = ..() @@ -404,6 +434,14 @@ active_icon_state = "mgogglesblk_down" inactive_icon_state = "mgogglesblk" +/obj/item/clothing/glasses/mgoggles/black/prescription + name = "prescription black marine ballistic goggles" + desc = "Standard issue USCM goggles. While commonly found mounted atop M10 pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes. This one has black tinted lenses. ntop of that, these ones contain prescription lenses." + icon_state = "mgogglesblk" + active_icon_state = "mgogglesblk_down" + inactive_icon_state = "mgogglesblk" + prescription = TRUE + /obj/item/clothing/glasses/mgoggles/orange name = "orange marine ballistic goggles" desc = "Standard issue USCM goggles. While commonly found mounted atop M10 pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes. This one has amber colored day lenses." @@ -411,6 +449,14 @@ active_icon_state = "mgogglesorg_down" inactive_icon_state = "mgogglesorg" +/obj/item/clothing/glasses/mgoggles/orange/prescription + name = "prescription orange marine ballistic goggles" + desc = "Standard issue USCM goggles. While commonly found mounted atop M10 pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes. This one has amber colored day lenses." + icon_state = "mgogglesorg" + active_icon_state = "mgogglesorg_down" + inactive_icon_state = "mgogglesorg" + prescription = TRUE + /obj/item/clothing/glasses/mgoggles/v2 name = "M1A1 marine ballistic goggles" desc = "Newer issue USCM goggles. While commonly found mounted atop M10 pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes. This version has larger lenses." @@ -418,6 +464,14 @@ active_icon_state = "mgoggles2_down" inactive_icon_state = "mgoggles2" +/obj/item/clothing/glasses/mgoggles/v2/prescription + name = "prescription M1A1 marine ballistic goggles" + desc = "Newer issue USCM goggles. While commonly found mounted atop M10 pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes. This version has larger lenses." + icon_state = "mgoggles2" + active_icon_state = "mgoggles2_down" + inactive_icon_state = "mgoggles2" + prescription = TRUE + /obj/item/clothing/glasses/mgoggles/on_enter_storage(obj/item/storage/internal/S) ..() diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm index ac4eb485c111..9121485ee76a 100644 --- a/code/modules/clothing/head/head.dm +++ b/code/modules/clothing/head/head.dm @@ -81,6 +81,9 @@ /obj/item/clothing/head/beret/cm/black icon_state = "beret_black" +/obj/item/clothing/head/beret/cm/green + icon_state = "beret_green" + /obj/item/clothing/head/beret/cm/squadberet name = "USCM Squad Beret" desc = "For those who want to show pride and have nothing to lose (in their head, at least)." @@ -247,8 +250,11 @@ /obj/item/clothing/glasses/mgoggles = HAT_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/prescription = HAT_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/black = HAT_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/black/prescription = HAT_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/orange = HAT_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/orange/prescription = HAT_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/v2 = HAT_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/v2/prescription = HAT_GARB_RELAY_ICON_STATE, /obj/item/prop/helmetgarb/helmet_nvg = HAT_GARB_RELAY_ICON_STATE, /obj/item/prop/helmetgarb/helmet_nvg/cosmetic = HAT_GARB_RELAY_ICON_STATE, /obj/item/prop/helmetgarb/helmet_nvg/marsoc = HAT_GARB_RELAY_ICON_STATE, diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 3d7d774bd1ed..e8643e14a144 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -248,9 +248,12 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( // EYEWEAR /obj/item/clothing/glasses/mgoggles = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/v2 = HELMET_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/v2/prescription = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/prescription = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/black = HELMET_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/black/prescription = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/orange = HELMET_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/orange/prescription = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/sunglasses = "sunglasses", /obj/item/clothing/glasses/sunglasses/prescription = "sunglasses", /obj/item/clothing/glasses/sunglasses/aviator = "aviator", @@ -666,29 +669,39 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( return FALSE if(active_visor) + var/visor_to_deactivate = active_visor + var/skipped_hud = FALSE var/iterator = 1 - for(var/hud_type in total_visors) - if(hud_type == active_visor) + for(var/obj/item/device/helmet_visor/current_visor as anything in total_visors) + if(current_visor == active_visor || skipped_hud) if(length(total_visors) > iterator) - active_visor = total_visors[(iterator + 1)] - toggle_visor(user, total_visors[iterator], TRUE) + var/obj/item/device/helmet_visor/next_visor = total_visors[iterator + 1] + + if(!isnull(GLOB.huds[next_visor.hud_type].hudusers[user])) + iterator++ + skipped_hud = TRUE + continue + + active_visor = next_visor + toggle_visor(user, visor_to_deactivate, silent = TRUE) // disables the old visor toggle_visor(user) return active_visor else active_visor = null - toggle_visor(user, total_visors[iterator], FALSE) + toggle_visor(user, visor_to_deactivate, FALSE) return FALSE iterator++ - if(total_visors[1]) - active_visor = total_visors[1] + for(var/obj/item/device/helmet_visor/new_visor in total_visors) + + if(!isnull(GLOB.huds[new_visor.hud_type].hudusers[user])) + continue + + active_visor = new_visor toggle_visor(user) return active_visor - active_visor = null - recalculate_visors(user) return FALSE - /datum/action/item_action/cycle_helmet_huds/New(Target, obj/item/holder) . = ..() name = "Cycle helmet HUD" @@ -769,7 +782,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/clothing/head/helmet/marine/covert name = "\improper M10 covert helmet" - desc = "An M10 marine helmet version designed for use in darkened enviroments. It is coated with a special anti-reflective paint." + desc = "An M10 marine helmet version designed for use in darkened environments. It is coated with a special anti-reflective paint." icon_state = "marsoc_helmet" armor_melee = CLOTHING_ARMOR_MEDIUM armor_bullet = CLOTHING_ARMOR_MEDIUM diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 18ffacf57b1f..4f928f62399f 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -54,7 +54,7 @@ /obj/item/clothing/mask/balaclava name = "balaclava" - desc = "A basic single eye-hole balaclava, available in almost every sporting goods, outdoor supply, or military surplus store in existance, protects your face from the cold almost as well as it conceals it. This one is in a standard black color." + desc = "A basic single eye-hole balaclava, available in almost every sporting goods, outdoor supply, or military surplus store in existence, protects your face from the cold almost as well as it conceals it. This one is in a standard black color." icon_state = "balaclava" item_state = "balaclava" flags_inventory = COVERMOUTH|ALLOWREBREATH|ALLOWCPR @@ -65,7 +65,7 @@ /obj/item/clothing/mask/balaclava/tactical name = "green balaclava" - desc = "A basic single eye-hole balaclava, available in almost every sporting goods, outdoor supply, or military surplus store in existance, protects your face from the cold almost as well as it conceals it. This one is in a non-standard green color." + desc = "A basic single eye-hole balaclava, available in almost every sporting goods, outdoor supply, or military surplus store in existence, protects your face from the cold almost as well as it conceals it. This one is in a non-standard green color." icon_state = "swatclava" item_state = "swatclava" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index e3b07a76a2ff..1fe48130157f 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -140,6 +140,9 @@ desc = "The height of fashion, and they're pre-polished!" icon_state = "laceups" +/obj/item/clothing/shoes/laceup/brown + icon_state = "laceups_brown" + /obj/item/clothing/shoes/swimmingfins desc = "Help you swim good." name = "swimming fins" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 54e9d91576f1..1bdb4ca31176 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -144,6 +144,10 @@ icon_state = "sciencecoat" item_state = "sciencecoat" +/obj/item/clothing/suit/chef/classic/medical + name = "medical's apron" + desc = "A basic and sterile white apron, good for surgical and, of course, other medical practices." + /obj/item/clothing/suit/storage/snow_suit name = "snow suit" desc = "A standard snow suit. It can protect the wearer from extreme cold." diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 844655049a69..1a8de0a89223 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -78,6 +78,7 @@ /obj/item/device/motiondetector, /obj/item/device/walkman, /obj/item/storage/belt/gun/m39, + /obj/item/storage/belt/gun/xm51, ) valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_PONCHO) @@ -190,7 +191,7 @@ if(. != CHECKS_PASSED) return set_light_range(initial(light_range)) - set_light_power(FLOOR(initial(light_power) * 0.5, 1)) + set_light_power(Floor(initial(light_power) * 0.5)) set_light_on(toggle_on) flags_marine_armor ^= ARMOR_LAMP_ON @@ -1011,7 +1012,7 @@ if(camo_active) if(current_camo < full_camo_alpha) current_camo = full_camo_alpha - current_camo = Clamp(current_camo + incremental_shooting_camo_penalty, full_camo_alpha, 255) + current_camo = clamp(current_camo + incremental_shooting_camo_penalty, full_camo_alpha, 255) H.alpha = current_camo addtimer(CALLBACK(src, PROC_REF(fade_out_finish), H), camouflage_break, TIMER_OVERRIDE|TIMER_UNIQUE) animate(H, alpha = full_camo_alpha + 5, time = camouflage_break, easing = LINEAR_EASING, flags = ANIMATION_END_NOW) diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm index 3aa43706c7d8..49569ec1295d 100644 --- a/code/modules/clothing/suits/marine_coat.dm +++ b/code/modules/clothing/suits/marine_coat.dm @@ -287,3 +287,85 @@ icon_state = "wc_suit" item_state = "wc_suit" contained_sprite = TRUE + +//==================Corporate Liaison==================\\ + +/obj/item/clothing/suit/storage/jacket/marine/vest + name = "brown vest" + desc = "A casual brown vest." + icon_state = "vest_brown" + item_state = "vest_brown" + flags_atom = NO_SNOW_TYPE + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/vest/tan + name = "tan vest" + desc = "A casual tan vest." + icon_state = "vest_tan" + item_state = "vest_tan" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/vest/grey + name = "grey vest" + desc = "A casual grey vest." + icon_state = "vest_grey" + item_state = "vest_grey" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/corporate + name = "khaki suit jacket" + desc = "A khaki suit jacket." + icon_state = "corporate_ivy" + item_state = "corporate_ivy" + flags_atom = NO_SNOW_TYPE + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/corporate/formal + name = "formal suit jacket" + desc = "An ivory suit jacket; a Weyland-Yutani corporate badge is attached to the right lapel." + icon_state = "corporate_formal" + item_state = "corporate_formal" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/corporate/black + name = "black suit jacket" + desc = "A black suit jacket." + icon_state = "corporate_black" + item_state = "corporate_black" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/corporate/brown + name = "brown suit jacket" + desc = "A brown suit jacket." + icon_state = "corporate_brown" + item_state = "corporate_brown" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/corporate/blue + name = "blue suit jacket" + desc = "A blue suit jacket." + icon_state = "corporate_blue" + item_state = "corporate_blue" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/bomber + name = "khaki bomber jacket" + desc = "A khaki bomber jacket popular among stationeers and blue-collar workers everywhere." + icon_state = "jacket_khaki" + item_state = "jacket_khaki" + flags_atom = NO_SNOW_TYPE + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/bomber/red + name = "red bomber jacket" + desc = "A reddish-brown bomber jacket popular among stationeers and blue-collar workers everywhere." + icon_state = "jacket_red" + item_state = "jacket_red" + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/bomber/grey + name = "grey bomber jacket" + desc = "A blue-grey bomber jacket popular among stationeers and blue-collar workers everywhere." + icon_state = "jacket_grey" + item_state = "jacket_grey" + has_buttons = FALSE diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 2a6c07e95932..2142312fe995 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -2,10 +2,27 @@ * Science */ +/obj/item/clothing/under/rank/rd + desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer is a Research Director." + name = "research director's uniform" + icon_state = "rdalt_s" + worn_state = "rdalt_s" + permeability_coefficient = 0.50 + armor_melee = CLOTHING_ARMOR_NONE + armor_bullet = CLOTHING_ARMOR_NONE + armor_laser = CLOTHING_ARMOR_NONE + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_NONE + armor_bio = CLOTHING_ARMOR_LOW + armor_rad = CLOTHING_ARMOR_LOW + armor_internaldamage = CLOTHING_ARMOR_LOW + flags_jumpsuit = FALSE + /obj/item/clothing/under/rank/rdalt - desc = "A simple blue utilitarian jumpsuit that serves as the standard issue service uniform of support synthetics onboard USCM facilities. While commonly associated with the staple Bishop units, reduced funding to the Colonial Marines has led to a wide range of models filling these uniforms, especially in battalions operating in the edge frontier." - name = "synthetic service uniform" + desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer is a Research Director." + name = "research director's jumpsuit" icon_state = "rdalt" + permeability_coefficient = 0.50 armor_melee = CLOTHING_ARMOR_NONE armor_bullet = CLOTHING_ARMOR_NONE armor_laser = CLOTHING_ARMOR_NONE diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index 6e92d0bd1343..d09b1984420e 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -510,6 +510,9 @@ has_sensor = UNIFORM_NO_SENSORS suit_restricted = list(/obj/item/clothing/suit/storage/marine/veteran/bear) + item_icons = list( + WEAR_BODY = 'icons/mob/humans/onmob/uniform_1.dmi', + ) /obj/item/clothing/under/marine/veteran/UPP name = "\improper UPP fatigues" @@ -805,6 +808,42 @@ icon_state = "liaison_blue_blazer" worn_state = "liaison_blue_blazer" +/obj/item/clothing/under/liaison_suit/field + name = "corporate casual" + desc = "A pair of dark brown slacks paired with a dark blue button-down shirt. A popular look among those in the corporate world that conduct the majority of their business from night clubs." + icon_state = "corporate_field" + worn_state = "corporate_field" + +/obj/item/clothing/under/liaison_suit/ivy + name = "country club outfit" + desc = "A pair of khaki slacks paired with a light blue button-down shirt. A popular look with those in the corporate world that conduct the majority of their business from country clubs." + icon_state = "corporate_ivy" + worn_state = "corporate_ivy" + +/obj/item/clothing/under/liaison_suit/corporate_formal + name = "white suit pants" + desc = "A pair of ivory slacks paired with a white shirt. A popular pairing for formal corporate events." + icon_state = "corporate_formal" + worn_state = "corporate_formal" + +/obj/item/clothing/under/liaison_suit/black + name = "black suit pants" + desc = "A pair of black slacks paired with a white shirt. The most common pairing among corporate workers." + icon_state = "corporate_black" + worn_state = "corporate_black" + +/obj/item/clothing/under/liaison_suit/brown + name = "brown suit pants" + desc = "A pair of brown slacks paired with a white shirt. A common pairing among corporate workers." + icon_state = "corporate_brown" + worn_state = "corporate_brown" + +/obj/item/clothing/under/liaison_suit/blue + name = "blue suit pants" + desc = "A pair of blue slacks paired with a white shirt. A common pairing among corporate workers." + icon_state = "corporate_blue" + worn_state = "corporate_blue" + /obj/item/clothing/under/marine/reporter name = "combat correspondent uniform" desc = "A relaxed and robust uniform fit for any potential reporting needs." diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index a0c8219ffe69..0743756a6878 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -79,6 +79,22 @@ name = "red tie" icon_state = "redtie" +/obj/item/clothing/accessory/green + name = "green tie" + icon_state = "greentie" + +/obj/item/clothing/accessory/black + name = "black tie" + icon_state = "blacktie" + +/obj/item/clothing/accessory/gold + name = "gold tie" + icon_state = "goldtie" + +/obj/item/clothing/accessory/purple + name = "purple tie" + icon_state = "purpletie" + /obj/item/clothing/accessory/horrible name = "horrible tie" desc = "A neosilk clip-on tie. This one is disgusting." @@ -377,7 +393,8 @@ /obj/item/clothing/accessory/poncho/Initialize() . = ..() - select_gamemode_skin(type) + // Only do this for the base type '/obj/item/clothing/accessory/poncho'. + select_gamemode_skin(/obj/item/clothing/accessory/poncho) inv_overlay = image("icon" = 'icons/obj/items/clothing/ties_overlay.dmi', "icon_state" = "[icon_state]") update_icon() diff --git a/code/modules/cm_aliens/XenoStructures.dm b/code/modules/cm_aliens/XenoStructures.dm index 7e4f7996d3f8..1f27df25fc52 100644 --- a/code/modules/cm_aliens/XenoStructures.dm +++ b/code/modules/cm_aliens/XenoStructures.dm @@ -577,7 +577,7 @@ var/turf/last_turf = loc var/atom/temp_atom = new acid_type() var/current_pos = 1 - for(var/i in getline(src, current_mob)) + for(var/i in get_line(src, current_mob)) current_turf = i if(LinkBlocked(temp_atom, last_turf, current_turf)) qdel(temp_atom) diff --git a/code/modules/cm_aliens/structures/fruit.dm b/code/modules/cm_aliens/structures/fruit.dm index a1d3624c7337..384da5da39a7 100644 --- a/code/modules/cm_aliens/structures/fruit.dm +++ b/code/modules/cm_aliens/structures/fruit.dm @@ -97,7 +97,7 @@ //Notify and update the xeno count if(!QDELETED(bound_xeno)) if(!picked) - to_chat(bound_xeno, SPAN_XENOWARNING("You sense one of your fruit has been destroyed.")) + to_chat(bound_xeno, SPAN_XENOHIGHDANGER("We sense one of our fruit has been destroyed.")) bound_xeno.current_fruits.Remove(src) var/datum/action/xeno_action/onclick/plant_resin_fruit/prf = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/plant_resin_fruit) prf.update_button_icon() @@ -146,9 +146,12 @@ /obj/effect/alien/resin/fruit/proc/finish_consume(mob/living/carbon/xenomorph/recipient) playsound(loc, 'sound/voice/alien_drool1.ogg', 50, 1) mature = FALSE + picked = TRUE icon_state = consumed_icon_state update_icon() - QDEL_IN(src, 3 SECONDS) + if(!QDELETED(bound_xeno)) + to_chat(bound_xeno, SPAN_XENOHIGHDANGER("One of our picked resin fruits has been consumed.")) + QDEL_IN(src, 1 SECONDS) /obj/effect/alien/resin/fruit/attack_alien(mob/living/carbon/xenomorph/affected_xeno) if(picked) @@ -239,7 +242,7 @@ /obj/effect/alien/resin/fruit/unstable/consume_effect(mob/living/carbon/xenomorph/recipient, do_consume = TRUE) if(mature && recipient && !QDELETED(recipient)) - recipient.add_xeno_shield(Clamp(overshield_amount, 0, recipient.maxHealth * 0.3), XENO_SHIELD_SOURCE_GARDENER, duration = shield_duration, decay_amount_per_second = shield_decay) + recipient.add_xeno_shield(clamp(overshield_amount, 0, recipient.maxHealth * 0.3), XENO_SHIELD_SOURCE_GARDENER, duration = shield_duration, decay_amount_per_second = shield_decay) to_chat(recipient, SPAN_XENONOTICE("We feel our defense being bolstered, and begin to regenerate rapidly.")) // Every seconds, heal him for 5. new /datum/effects/heal_over_time(recipient, regeneration_amount_total, regeneration_ticks, 1) @@ -360,7 +363,7 @@ pixel_y = 0 /obj/item/reagent_container/food/snacks/resin_fruit/proc/link_xeno(mob/living/carbon/xenomorph/X) - to_chat(X, SPAN_XENOWARNING("One of our resin fruits has been picked.")) + to_chat(X, SPAN_XENOHIGHDANGER("One of our resin fruits has been picked.")) X.current_fruits.Add(src) bound_xeno = X RegisterSignal(X, COMSIG_PARENT_QDELETING, PROC_REF(handle_xeno_qdel)) @@ -403,7 +406,8 @@ if(cant_consume) user.affected_message(affected_xeno, SPAN_HELPFUL("You fail to [user == affected_xeno ? "eat" : "feed [affected_xeno]"] [current_fruit]."), - SPAN_HELPFUL("[user] fails to feed you [current_fruit].")) + SPAN_HELPFUL("[user] fails to feed you [current_fruit]."), + SPAN_NOTICE("[user] fails to [user == affected_xeno ? "eat" : "feed [affected_xeno]"] [current_fruit].")) return user.affected_message(affected_xeno, SPAN_HELPFUL("You start [user == affected_xeno ? "eating" : "feeding [affected_xeno]"] [current_fruit]."), @@ -417,7 +421,8 @@ if(cant_consume) //Check again after the timer incase they ate another fruit user.affected_message(affected_xeno, SPAN_HELPFUL("You fail to [user == affected_xeno ? "eat" : "feed [affected_xeno]"] [current_fruit]."), - SPAN_HELPFUL("[user] fails to feed you [current_fruit].")) + SPAN_HELPFUL("[user] fails to feed you [current_fruit]."), + SPAN_NOTICE("[user] fails to [user == affected_xeno ? "eat" : "feed [affected_xeno]"] [current_fruit].")) return user.affected_message(affected_xeno, @@ -429,7 +434,7 @@ //Notify the fruit's bound xeno if they exist if(!QDELETED(bound_xeno)) - to_chat(bound_xeno, SPAN_XENOWARNING("One of our picked resin fruits has been consumed.")) + to_chat(bound_xeno, SPAN_XENOHIGHDANGER("One of our picked resin fruits has been consumed.")) qdel(src) return TRUE diff --git a/code/modules/cm_aliens/structures/special/egg_morpher.dm b/code/modules/cm_aliens/structures/special/egg_morpher.dm index bcd0ecc03be5..e24ff8d167d8 100644 --- a/code/modules/cm_aliens/structures/special/egg_morpher.dm +++ b/code/modules/cm_aliens/structures/special/egg_morpher.dm @@ -190,7 +190,8 @@ if(stored_huggers) to_chat(M, SPAN_XENONOTICE("You retrieve a child.")) stored_huggers = max(0, stored_huggers - 1) - new /obj/item/clothing/mask/facehugger(loc, linked_hive.hivenumber) + var/obj/item/clothing/mask/facehugger/hugger = new(loc, linked_hive.hivenumber) + SEND_SIGNAL(M, COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER, hugger) return XENO_NONCOMBAT_ACTION ..() diff --git a/code/modules/cm_aliens/structures/special/recovery_node.dm b/code/modules/cm_aliens/structures/special/recovery_node.dm index a0d01bab89dc..649d7811fb6a 100644 --- a/code/modules/cm_aliens/structures/special/recovery_node.dm +++ b/code/modules/cm_aliens/structures/special/recovery_node.dm @@ -5,7 +5,7 @@ desc = "A warm, soothing light source that pulsates with a faint hum." icon_state = "recovery" health = 400 - var/heal_amount = 10 + var/heal_amount = 20 var/heal_cooldown = 5 SECONDS var/last_healed diff --git a/code/modules/cm_aliens/structures/tunnel.dm b/code/modules/cm_aliens/structures/tunnel.dm index 8e2993704f31..33f50ab06326 100644 --- a/code/modules/cm_aliens/structures/tunnel.dm +++ b/code/modules/cm_aliens/structures/tunnel.dm @@ -48,8 +48,22 @@ if(resin_trap) qdel(resin_trap) + if(hivenumber == XENO_HIVE_NORMAL) + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING, PROC_REF(forsaken_handling)) + SSminimaps.add_marker(src, z, get_minimap_flag_for_faction(hivenumber), "xenotunnel") +/obj/structure/tunnel/proc/forsaken_handling() + SIGNAL_HANDLER + if(is_ground_level(z)) + hive.tunnels -= src + hivenumber = XENO_HIVE_FORSAKEN + set_hive_data(src, XENO_HIVE_FORSAKEN) + hive = GLOB.hive_datum[XENO_HIVE_FORSAKEN] + hive.tunnels += src + + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + /obj/structure/tunnel/Destroy() if(hive) hive.tunnels -= src @@ -130,15 +144,17 @@ if(!istype(X) || X.is_mob_incapacitated(TRUE) || !isfriendly(X) || !hive) return FALSE if(X in contents) - var/list/tunnels = list() - for(var/obj/structure/tunnel/T in hive.tunnels) + var/list/input_tunnels = list() + + var/list/sorted_tunnels = sort_list_dist(hive.tunnels, get_turf(X)) + for(var/obj/structure/tunnel/T in sorted_tunnels) if(T == src) continue if(!is_ground_level(T.z)) continue - tunnels += list(T.tunnel_desc = T) - var/pick = tgui_input_list(usr, "Which tunnel would you like to move to?", "Tunnel", tunnels, theme="hive_status") + input_tunnels += list(T.tunnel_desc = T) + var/pick = tgui_input_list(usr, "Which tunnel would you like to move to?", "Tunnel", input_tunnels, theme="hive_status") if(!pick) return FALSE @@ -159,7 +175,7 @@ if(!do_after(X, tunnel_time, INTERRUPT_NO_NEEDHAND, 0)) return FALSE - var/obj/structure/tunnel/T = tunnels[pick] + var/obj/structure/tunnel/T = input_tunnels[pick] if(T.contents.len > 2)// max 3 xenos in a tunnel to_chat(X, SPAN_WARNING("The tunnel is too crowded, wait for others to exit!")) diff --git a/code/modules/cm_aliens/weeds.dm b/code/modules/cm_aliens/weeds.dm index 45c78b979105..5298e7ab02f1 100644 --- a/code/modules/cm_aliens/weeds.dm +++ b/code/modules/cm_aliens/weeds.dm @@ -58,9 +58,9 @@ if(spread_on_semiweedable && weed_strength < WEED_LEVEL_HIVE) if(color) var/list/RGB = ReadRGB(color) - RGB[1] = Clamp(RGB[1] + 35, 0, 255) - RGB[2] = Clamp(RGB[2] + 35, 0, 255) - RGB[3] = Clamp(RGB[3] + 35, 0, 255) + RGB[1] = clamp(RGB[1] + 35, 0, 255) + RGB[2] = clamp(RGB[2] + 35, 0, 255) + RGB[3] = clamp(RGB[3] + 35, 0, 255) color = rgb(RGB[1], RGB[2], RGB[3]) else color = "#a1a1a1" diff --git a/code/modules/cm_marines/Donator_Items.dm b/code/modules/cm_marines/Donator_Items.dm index e313fa380036..ffea48b71c84 100644 --- a/code/modules/cm_marines/Donator_Items.dm +++ b/code/modules/cm_marines/Donator_Items.dm @@ -421,12 +421,12 @@ item_state = "merc_armor" /obj/item/clothing/suit/storage/marine/fluff/steelpoint //CKEY=steelpoint (UNIQUE) - name = "M4X Armor" - desc = "Armor to the M4X!!!! DONOR ITEM" + name = "M4-X Armor" + desc = "A next generation body armor system intended for Marines fighting against xenomorphs, the system is coated in a unique acid resistant polymer coating, as well as enhanced ballistics protection. This prototype version lacks those two features. DONOR ITEM" + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE icon_state = "steelpoint_armor" item_state = "steelpoint_armor" - /obj/item/clothing/suit/storage/marine/fluff/valentine //CKEY=markvalentine name = "Shocky's Armor" desc = "Shockingly good armor. DONOR ITEM" @@ -842,10 +842,11 @@ flags_inv_hide = HIDEEARS|HIDEMASK|HIDEEYES|HIDEALLHAIR /obj/item/clothing/head/helmet/marine/fluff/steelpoint //CKEY=steelpoint (UNIQUE) - name = "M4X Helmet" - desc = "Helmets to the M4X!!! DONOR ITEM" + name = "M4-X Helmet" + desc = "A next generation combat helmet intended to be paired with the M4-X armor. The full faced helmet provides complete light ballistic-resistant protection alongside enchanced acid resistance. This prototype version lacks those features. DONOR ITEM" icon_state = "steelpoint_helmet" item_state = "steelpoint_helmet" + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE flags_inventory = BLOCKSHARPOBJ flags_inv_hide = HIDEEARS|HIDEMASK|HIDEEYES|HIDEALLHAIR @@ -1148,8 +1149,8 @@ flags_jumpsuit = FALSE /obj/item/clothing/under/marine/fluff/steelpoint //CKEY=steelpoint (UNIQUE) - name = "M4X Jumpsuit" - desc = "Jumpsuit to the M4X!!! DONOR ITEM" + name = "M4-X Jumpsuit" + desc = "Jumpsuit issued alongside the M4-X armor. Considered outdated compared to the more modern armor system. DONOR ITEM" icon_state = "steelpoint_jumpsuit" worn_state = "steelpoint_jumpsuit" flags_jumpsuit = FALSE @@ -1319,10 +1320,10 @@ item_state = "doom_boots" /obj/item/clothing/shoes/marine/fluff/steelpoint //CKEY=steelpoint (UNIQUE) - name = "M4X Boot" - desc = "Boots to the M4X. DONOR ITEM" - icon_state = "jackboots" - item_state = "jackboots" + name = "M4-X Boot" + desc = "Standard issue boots issued alongside M4-X armor, features a special coating of acid-resistant layering to allow its operator to move through acid-dretched environments safely. This prototype version lacks that feature. DONOR ITEM" + icon_state = "marine" + item_state = "marine" //GENERIC GLASSES, GLOVES, AND MISC //////////////////// diff --git a/code/modules/cm_marines/NonLethalRestraints.dm b/code/modules/cm_marines/NonLethalRestraints.dm index e1eb7ec60a77..d3ed38269144 100644 --- a/code/modules/cm_marines/NonLethalRestraints.dm +++ b/code/modules/cm_marines/NonLethalRestraints.dm @@ -32,10 +32,6 @@ add_fingerprint(user) /obj/item/weapon/stunprod/attack(mob/living/M, mob/user) - if(isrobot(M)) - ..() - return - if(user.a_intent == INTENT_HARM) return else if(!status) diff --git a/code/modules/cm_marines/altitude_control_console.dm b/code/modules/cm_marines/altitude_control_console.dm index a8281806be10..7e0a8c395152 100644 --- a/code/modules/cm_marines/altitude_control_console.dm +++ b/code/modules/cm_marines/altitude_control_console.dm @@ -63,7 +63,7 @@ GLOBAL_VAR_INIT(ship_alt, SHIP_ALT_MED) temperature_change = COOLING if(SHIP_ALT_HIGH) temperature_change = COOLING - GLOB.ship_temp = Clamp(GLOB.ship_temp += temperature_change, 0, 120) + GLOB.ship_temp = clamp(GLOB.ship_temp += temperature_change, 0, 120) if(prob(50)) return if(GLOB.ship_alt == SHIP_ALT_LOW) diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm index 59aa1428e23e..785283541eb8 100644 --- a/code/modules/cm_marines/dropship_equipment.dm +++ b/code/modules/cm_marines/dropship_equipment.dm @@ -332,11 +332,11 @@ /obj/structure/dropship_equipment/mg_holder/ui_data(mob/user) . = list() - var/is_deployed = deployed_mg.loc == src + var/is_deployed = deployed_mg.loc != src .["name"] = name .["selection_state"] = list() .["health"] = health - .["health_max"] = 100 + .["health_max"] = initial(health) .["rounds"] = deployed_mg.rounds .["max_rounds"] = deployed_mg.rounds_max .["deployed"] = is_deployed @@ -486,8 +486,6 @@ point_cost = 0 -#define LIGHTING_MAX_LUMINOSITY_SHIPLIGHTS 12 - /obj/structure/dropship_equipment/electronics/spotlights name = "\improper AN/LEN-15 Spotlight" shorthand = "Spotlight" @@ -502,7 +500,7 @@ if(spotlights_cooldown > world.time) to_chat(user, SPAN_WARNING("[src] is busy.")) return //prevents spamming deployment/undeployment - if(luminosity != brightness) + if(!light_on) set_light(brightness) icon_state = "spotlights_on" to_chat(user, SPAN_NOTICE("You turn on [src].")) @@ -515,13 +513,13 @@ /obj/structure/dropship_equipment/electronics/spotlights/update_equipment() ..() if(ship_base) - if(luminosity != brightness) + if(!light_on) icon_state = "spotlights_off" else icon_state = "spotlights_on" else icon_state = "spotlights" - if(luminosity) + if(light_on) set_light(0) /obj/structure/dropship_equipment/electronics/spotlights/on_launch() @@ -530,7 +528,13 @@ /obj/structure/dropship_equipment/electronics/spotlights/on_arrival() set_light(brightness) -#undef LIGHTING_MAX_LUMINOSITY_SHIPLIGHTS +/obj/structure/dropship_equipment/electronics/spotlights/ui_data(mob/user) + . = list() + var/is_deployed = light_on + .["name"] = name + .["health"] = health + .["health_max"] = initial(health) + .["deployed"] = is_deployed @@ -887,7 +891,8 @@ if (evaccee_triagecard_color && evaccee_triagecard_color == "none") evaccee_triagecard_color = null - .["[evaccee_name] [evaccee_triagecard_color ? "\[" + uppertext(evaccee_triagecard_color) + "\]" : ""] ([AR.name])"] = MS + var/key_name = strip_improper("[evaccee_name] [evaccee_triagecard_color ? "\[" + uppertext(evaccee_triagecard_color) + "\]" : ""] ([AR.name])") + .[key_name] = MS /obj/structure/dropship_equipment/medevac_system/proc/can_medevac(mob/user) if(!linked_shuttle) @@ -907,7 +912,7 @@ var/list/possible_stretchers = get_targets() - if(!possible_stretchers.len) + if(!length(possible_stretchers)) to_chat(user, SPAN_WARNING("No active medevac stretcher detected.")) return FALSE return TRUE diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index 8ab83116f605..0cf097cb9b4c 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -348,13 +348,28 @@ new /obj/item/device/vulture_spotter_scope/skillless(src, WEAKREF(rifle)) new /obj/item/tool/screwdriver(src) // Spotter scope needs a screwdriver to disassemble +/obj/item/storage/box/guncase/xm51 + name = "\improper XM51 breaching scattergun case" + desc = "A gun case containing the XM51 Breaching Scattergun. Comes with two spare magazines, two spare shell boxes, an optional stock and a belt to holster the weapon." + storage_slots = 7 + can_hold = list(/obj/item/weapon/gun/rifle/xm51, /obj/item/ammo_magazine/rifle/xm51, /obj/item/storage/belt/gun/xm51, /obj/item/attachable/stock/xm51) + +/obj/item/storage/box/guncase/xm51/fill_preset_inventory() + new /obj/item/attachable/stock/xm51(src) + new /obj/item/weapon/gun/rifle/xm51(src) + new /obj/item/ammo_magazine/rifle/xm51(src) + new /obj/item/ammo_magazine/rifle/xm51(src) + new /obj/item/ammo_magazine/shotgun/light/breaching(src) + new /obj/item/ammo_magazine/shotgun/light/breaching(src) + new /obj/item/storage/belt/gun/xm51(src) + //Handgun case for Military police vendor three mag , a railflashligh and the handgun. //88 Mod 4 Combat Pistol /obj/item/storage/box/guncase/mod88 name = "\improper 88 Mod 4 Combat Pistol case" desc = "A gun case containing an 88 Mod 4 Combat Pistol." - storage_slots = 5 + storage_slots = 8 can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/pistol/mod88, /obj/item/ammo_magazine/pistol/mod88) /obj/item/storage/box/guncase/mod88/fill_preset_inventory() @@ -363,12 +378,15 @@ new /obj/item/ammo_magazine/pistol/mod88(src) new /obj/item/ammo_magazine/pistol/mod88(src) new /obj/item/ammo_magazine/pistol/mod88(src) + new /obj/item/ammo_magazine/pistol/mod88(src) + new /obj/item/ammo_magazine/pistol/mod88(src) + new /obj/item/ammo_magazine/pistol/mod88(src) //M44 Combat Revolver /obj/item/storage/box/guncase/m44 name = "\improper M44 Combat Revolver case" desc = "A gun case containing an M44 Combat Revolver loaded with marksman ammo." - storage_slots = 5 + storage_slots = 8 can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/revolver/m44, /obj/item/ammo_magazine/revolver) /obj/item/storage/box/guncase/m44/fill_preset_inventory() @@ -377,12 +395,15 @@ new /obj/item/ammo_magazine/revolver/marksman(src) new /obj/item/ammo_magazine/revolver/marksman(src) new /obj/item/ammo_magazine/revolver/marksman(src) + new /obj/item/ammo_magazine/revolver/marksman(src) + new /obj/item/ammo_magazine/revolver/marksman(src) + new /obj/item/ammo_magazine/revolver/marksman(src) //M4A3 Service Pistol /obj/item/storage/box/guncase/m4a3 name = "\improper M4A3 Service Pistol case" desc = "A gun case containing an M4A3 Service Pistol." - storage_slots = 5 + storage_slots = 8 can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/pistol/m4a3, /obj/item/ammo_magazine/pistol) /obj/item/storage/box/guncase/m4a3/fill_preset_inventory() @@ -391,3 +412,6 @@ new /obj/item/ammo_magazine/pistol(src) new /obj/item/ammo_magazine/pistol(src) new /obj/item/ammo_magazine/pistol(src) + new /obj/item/ammo_magazine/pistol(src) + new /obj/item/ammo_magazine/pistol(src) + new /obj/item/ammo_magazine/pistol(src) diff --git a/code/modules/cm_marines/equipment/weapons.dm b/code/modules/cm_marines/equipment/weapons.dm index 858b9dbeb79d..50ad5dcaf385 100644 --- a/code/modules/cm_marines/equipment/weapons.dm +++ b/code/modules/cm_marines/equipment/weapons.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/items/storage.dmi' icon_state = "kit_case" w_class = SIZE_HUGE - storage_slots = 4 + storage_slots = 7 slowdown = 1 can_hold = list() //Nada. Once you take the stuff out it doesn't fit back in. foldable = null @@ -16,6 +16,8 @@ new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) new /obj/item/clothing/suit/storage/marine/smartgunner(src) + for(var/i in 1 to 3) + new /obj/item/ammo_magazine/smartgun(src) update_icon() /obj/item/storage/box/m56_system/update_icon() diff --git a/code/modules/cm_marines/m2c.dm b/code/modules/cm_marines/m2c.dm index 742ad954c20b..dea7d80b50f9 100644 --- a/code/modules/cm_marines/m2c.dm +++ b/code/modules/cm_marines/m2c.dm @@ -131,20 +131,21 @@ if(!check_can_setup(user, rotate_check, OT, ACR)) return - var/obj/structure/machinery/m56d_hmg/auto/M = new /obj/structure/machinery/m56d_hmg/auto(user.loc) - transfer_label_component(M) - M.setDir(user.dir) // Make sure we face the right direction - M.anchored = TRUE - playsound(M, 'sound/items/m56dauto_setup.ogg', 75, TRUE) - to_chat(user, SPAN_NOTICE("You deploy [M].")) - M.rounds = rounds - M.overheat_value = overheat_value - M.health = health - M.update_icon() + var/obj/structure/machinery/m56d_hmg/auto/HMG = new(user.loc) + transfer_label_component(HMG) + HMG.setDir(user.dir) // Make sure we face the right direction + HMG.anchored = TRUE + playsound(HMG, 'sound/items/m56dauto_setup.ogg', 75, TRUE) + to_chat(user, SPAN_NOTICE("You deploy [HMG].")) + HMG.rounds = rounds + HMG.overheat_value = overheat_value + HMG.health = health + HMG.update_damage_state() + HMG.update_icon() qdel(src) - if(M.rounds > 0) - M.try_mount_gun(user) + if(HMG.rounds > 0) + HMG.try_mount_gun(user) /obj/item/device/m2c_gun/attackby(obj/item/O as obj, mob/user as mob) if(!ishuman(user)) @@ -313,12 +314,13 @@ if(health <= 0) playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) visible_message(SPAN_WARNING("[src] has broken down completely!")) - var/obj/item/device/m2c_gun/HMG = new(src.loc) + var/obj/item/device/m2c_gun/HMG = new(loc) HMG.rounds = rounds HMG.broken_gun = TRUE HMG.unacidable = FALSE HMG.health = 0 HMG.update_icon() + transfer_label_component(HMG) qdel(src) return @@ -454,8 +456,12 @@ // DISASSEMBLY /obj/structure/machinery/m56d_hmg/auto/MouseDrop(over_object, src_location, over_location) - if(!ishuman(usr)) return + if(!ishuman(usr)) + return var/mob/living/carbon/human/user = usr + // If the user is unconscious or dead. + if(user.stat) + return if(over_object == user && in_range(src, user)) if((rounds > 0) && (user.a_intent & (INTENT_GRAB))) @@ -471,10 +477,10 @@ return user.visible_message(SPAN_NOTICE("[user] disassembles [src]."),SPAN_NOTICE("You fold up the tripod for [src], disassembling it.")) playsound(src.loc, 'sound/items/m56dauto_setup.ogg', 75, 1) - var/obj/item/device/m2c_gun/HMG = new(src.loc) + var/obj/item/device/m2c_gun/HMG = new(loc) transfer_label_component(HMG) - HMG.rounds = src.rounds - HMG.overheat_value = round(0.5 * src.overheat_value) + HMG.rounds = rounds + HMG.overheat_value = round(0.5 * overheat_value) if (HMG.overheat_value <= 10) HMG.overheat_value = 0 HMG.update_icon() diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index 00a8c442b770..1d72ab5a4d99 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -798,7 +798,7 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) /datum/crewmonitor/ui_data(mob/user) . = list( "sensors" = update_data(), - "link_allowed" = isAI(user), + "link_allowed" = isSilicon(user), ) /datum/crewmonitor/proc/update_data() @@ -868,26 +868,17 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) return results +/* + * Unimplemented. Was for AIs tracking but we never had them working. + * /datum/crewmonitor/ui_act(action,params) . = ..() if(.) return switch (action) if ("select_person") - // May work badly cause currently there is no player-controlled AI - var/mob/living/silicon/ai/AI = usr - if(!istype(AI)) - return - var/mob/living/carbon/human/H - for(var/entry in data) - if(entry["name"] == params["name"]) - H = locate(entry["ref"]) - break - if(!H) // Sanity check - to_chat(AI, SPAN_NOTICE("ERROR: unable to track subject with ID '[params["name"]]'")) - else - // We do not care is there camera or no - we just know his location - AI.ai_actual_track(H) + +*/ /datum/crewmonitor/proc/setup_for_faction(set_faction = FACTION_MARINE) switch(set_faction) diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index b003237f68ee..23bce06fdc1a 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -224,8 +224,8 @@ GLOBAL_LIST_EMPTY(orbital_cannon_cancellation) var/area/area = get_area(T) var/off_x = (inaccurate_fuel + 1) * round(rand(-3,3), 1) var/off_y = (inaccurate_fuel + 1) * round(rand(-3,3), 1) - var/target_x = Clamp(T.x + off_x, 1, world.maxx) - var/target_y = Clamp(T.y + off_y, 1, world.maxy) + var/target_x = clamp(T.x + off_x, 1, world.maxx) + var/target_y = clamp(T.y + off_y, 1, world.maxy) var/turf/target = locate(target_x, target_y, T.z) var/area/target_area = get_area(target) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index c5b296772c79..e68ef467faa9 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -56,8 +56,7 @@ return FALSE /obj/structure/machinery/computer/overwatch/attack_remote(mob/user as mob) - if(!ismaintdrone(user)) - return attack_hand(user) + return attack_hand(user) /obj/structure/machinery/computer/overwatch/attack_hand(mob/user) if(..()) //Checks for power outages @@ -66,7 +65,7 @@ if(istype(src, /obj/structure/machinery/computer/overwatch/almayer/broken)) return - if(!ishighersilicon(usr) && !skillcheck(user, SKILL_OVERWATCH, SKILL_OVERWATCH_TRAINED) && SSmapping.configs[GROUND_MAP].map_name != MAP_WHISKEY_OUTPOST) + if(!isSilicon(usr) && !skillcheck(user, SKILL_OVERWATCH, SKILL_OVERWATCH_TRAINED) && SSmapping.configs[GROUND_MAP].map_name != MAP_WHISKEY_OUTPOST) to_chat(user, SPAN_WARNING("You don't have the training to use [src].")) return @@ -317,10 +316,12 @@ has_supply_pad = TRUE data["can_launch_crates"] = has_supply_pad data["has_crate_loaded"] = supply_crate - data["supply_cooldown"] = COOLDOWN_TIMELEFT(current_squad, next_supplydrop) - data["ob_cooldown"] = COOLDOWN_TIMELEFT(GLOB.almayer_orbital_cannon, ob_firing_cooldown) - data["ob_loaded"] = GLOB.almayer_orbital_cannon.chambered_tray + data["can_launch_obs"] = GLOB.almayer_orbital_cannon + if(GLOB.almayer_orbital_cannon) + data["ob_cooldown"] = COOLDOWN_TIMELEFT(GLOB.almayer_orbital_cannon, ob_firing_cooldown) + data["ob_loaded"] = GLOB.almayer_orbital_cannon.chambered_tray + data["supply_cooldown"] = COOLDOWN_TIMELEFT(current_squad, next_supplydrop) data["operator"] = operator.name return data @@ -335,7 +336,7 @@ var/mob/user = usr - if((user.contents.Find(src) || (in_range(src, user) && istype(loc, /turf))) || (ishighersilicon(user))) + if((user.contents.Find(src) || (in_range(src, user) && istype(loc, /turf))) || (isSilicon(user))) user.set_interaction(src) switch(action) @@ -360,7 +361,7 @@ return TRUE if("logout") if(current_squad?.release_overwatch()) - if(ishighersilicon(user)) + if(isSilicon(user)) current_squad.send_squad_message("Attention. [operator.name] has released overwatch system control. Overwatch functions deactivated.", displayed_icon = src) to_chat(user, "[icon2html(src, user)] [SPAN_BOLDNOTICE("Overwatch system control override disengaged.")]") else @@ -370,7 +371,7 @@ visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Overwatch systems deactivated. Goodbye, [ID ? "[ID.rank] ":""][operator ? "[operator.name]":"sysadmin"].")]") operator = null current_squad = null - if(cam && !ishighersilicon(user)) + if(cam && !isSilicon(user)) user.reset_view(null) user.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) cam = null @@ -516,12 +517,12 @@ user.RegisterSignal(cam, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, reset_observer_view_on_deletion)) if("change_operator") if(operator != user) - if(operator && ishighersilicon(operator)) + if(operator && isSilicon(operator)) visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("AI override in progress. Access denied.")]") return if(!current_squad || current_squad.assume_overwatch(user)) operator = user - if(ishighersilicon(user)) + if(isSilicon(user)) to_chat(user, "[icon2html(src, usr)] [SPAN_BOLDNOTICE("Overwatch system AI override protocol successful.")]") current_squad?.send_squad_message("Attention. [operator.name] has engaged overwatch system control override.", displayed_icon = src) else diff --git a/code/modules/cm_marines/shuttle_backend.dm b/code/modules/cm_marines/shuttle_backend.dm index 142caa81eb8a..6974e078e2de 100644 --- a/code/modules/cm_marines/shuttle_backend.dm +++ b/code/modules/cm_marines/shuttle_backend.dm @@ -123,8 +123,8 @@ DOCUMENTATION ON HOW TO ADD A NEW SHUTTLE: Fourkhan, 6/7/19 y = C.y_pos C1.x_pos = x*cos(deg) + y*sin(deg) C1.y_pos = y*cos(deg) - x*sin(deg) - C1.x_pos = roundNearest(C.x_pos) //Sometimes you get very close to the right number but off by around 1e-15 and I want integers dammit - C1.y_pos = roundNearest(C.y_pos) + C1.x_pos = round(C.x_pos, 1) //Sometimes you get very close to the right number but off by around 1e-15 and I want integers dammit + C1.y_pos = round(C.y_pos, 1) toReturn += i toReturn[i] = C1 diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index b4c01a8842aa..7cb3b4fa051b 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -45,7 +45,7 @@ ///How many rounds are in the weapon. This is useful if we break down our guns. var/rounds = 0 ///Indicates whether the M56D will come with its folding mount already attached - var/has_mount = FALSE + var/has_mount = FALSE ///The distance this has to be away from other m56d_hmg and m56d_post to be placed. var/defense_check_range = 5 @@ -137,14 +137,15 @@ to_chat(user, SPAN_WARNING("This is too close to [machine]!")) return - var/obj/structure/machinery/m56d_post/M = new /obj/structure/machinery/m56d_post(user.loc) - M.setDir(user.dir) // Make sure we face the right direction - M.gun_rounds = src.rounds //Inherit the amount of ammo we had. - M.gun_mounted = TRUE - M.anchored = TRUE - M.update_icon() - transfer_label_component(M) - to_chat(user, SPAN_NOTICE("You deploy \the [src].")) + var/obj/structure/machinery/m56d_post/post = new(user.loc) + post.setDir(user.dir) // Make sure we face the right direction + post.gun_rounds = rounds + post.gun_mounted = TRUE + post.gun_health = health // retain damage + post.anchored = TRUE + post.update_icon() + transfer_label_component(post) + to_chat(user, SPAN_NOTICE("You deploy [src].")) qdel(src) @@ -223,8 +224,8 @@ return to_chat(user, SPAN_NOTICE("You deploy \the [src].")) - var/obj/structure/machinery/m56d_post/M = new /obj/structure/machinery/m56d_post(user.loc) - transfer_label_component(M) + var/obj/structure/machinery/m56d_post/post = new(user.loc) + transfer_label_component(post) qdel(src) @@ -238,8 +239,12 @@ density = TRUE layer = ABOVE_MOB_LAYER projectile_coverage = PROJECTILE_COVERAGE_LOW - var/gun_mounted = FALSE //Has the gun been mounted? - var/gun_rounds = 0 //Did the gun come with any ammo? + ///Whether a gun is mounted + var/gun_mounted = FALSE + ///Ammo amount of the mounted gun + var/gun_rounds = 0 + ///Health of the mounted gun + var/gun_health = 0 health = 50 /obj/structure/machinery/m56d_post/initialize_pass_flags(datum/pass_flags_container/PF) @@ -302,8 +307,9 @@ to_chat(user, SPAN_WARNING("\The [src] can't be folded while screwed to the floor. Unscrew it first.")) return to_chat(user, SPAN_NOTICE("You fold [src].")) - var/obj/item/device/m56d_post/P = new(loc) - user.put_in_hands(P) + var/obj/item/device/m56d_post/post = new(loc) + transfer_label_component(post) + user.put_in_hands(post) qdel(src) /obj/structure/machinery/m56d_post/attackby(obj/item/O, mob/user) @@ -331,6 +337,8 @@ user.visible_message(SPAN_NOTICE("[user] installs [MG] into place."),SPAN_NOTICE("You install [MG] into place.")) gun_mounted = 1 gun_rounds = MG.rounds + gun_health = MG.health + MG.transfer_label_component(src) update_icon() user.temp_drop_inv_item(MG) qdel(MG) @@ -343,12 +351,19 @@ to_chat(user, "You begin dismounting [src]'s gun...") if(do_after(user, 30 * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD) && gun_mounted) playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) - user.visible_message(SPAN_NOTICE("[user] removes [src]'s gun."),SPAN_NOTICE("You remove [src]'s gun.")) - var/obj/item/device/m56d_gun/G = new(loc) - G.rounds = gun_rounds - G.update_icon() + user.visible_message(SPAN_NOTICE("[user] removes [src]'s gun."), SPAN_NOTICE("You remove [src]'s gun.")) + var/obj/item/device/m56d_gun/HMG = new(loc) + HMG.rounds = gun_rounds + if(gun_health) + HMG.health = gun_health + HMG.update_icon() + transfer_label_component(HMG) + var/datum/component/label/label = GetComponent(/datum/component/label) + if(label) + label.remove_label() gun_mounted = FALSE gun_rounds = 0 + gun_health = 0 update_icon() return @@ -389,13 +404,16 @@ var/disassemble_time = 30 if(do_after(user, disassemble_time * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) playsound(src.loc, 'sound/items/Deconstruct.ogg', 25, 1) - user.visible_message(SPAN_NOTICE("[user] screws the M56D into the mount."),SPAN_NOTICE("You finalize the M56D heavy machine gun.")) - var/obj/structure/machinery/m56d_hmg/G = new(src.loc) //Here comes our new turret. - transfer_label_component(G) - G.visible_message("[icon2html(G, viewers(src))] \The [G] is now complete!") //finished it for everyone to - G.setDir(dir) //make sure we face the right direction - G.rounds = src.gun_rounds //Inherent the amount of ammo we had. - G.update_icon() + user.visible_message(SPAN_NOTICE("[user] screws the M56D into the mount."), SPAN_NOTICE("You finalize the M56D heavy machine gun.")) + var/obj/structure/machinery/m56d_hmg/HMG = new(loc) + transfer_label_component(HMG) + HMG.visible_message("[icon2html(HMG, viewers(src))] \The [HMG] is now complete!") + HMG.setDir(dir) + HMG.rounds = gun_rounds + if(gun_health) + HMG.health = gun_health + HMG.update_damage_state() + HMG.update_icon() qdel(src) else if(anchored) @@ -476,7 +494,6 @@ /// What firemodes this gun has var/static/list/gun_firemodes = list( GUN_FIREMODE_SEMIAUTO, - GUN_FIREMODE_BURSTFIRE, GUN_FIREMODE_AUTOMATIC, ) /// A multiplier for how slow this gun should fire in automatic as opposed to burst. 1 is normal, 1.2 is 20% slower, 0.8 is 20% faster, etc. @@ -563,7 +580,7 @@ return else playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - user.visible_message("[user] rotates \the [src].","You rotate \the [src].") + user.visible_message("[user] rotates [src].", "You rotate [src].") setDir(turn(dir, -90)) if(operator) update_pixels(operator) @@ -577,14 +594,15 @@ var/disassemble_time = 30 if(do_after(user, disassemble_time * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - user.visible_message(SPAN_NOTICE(" [user] disassembles [src]! "),SPAN_NOTICE(" You disassemble [src]!")) + user.visible_message(SPAN_NOTICE("[user] disassembles [src]!"), SPAN_NOTICE("You disassemble [src]!")) playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, 1) - var/obj/item/device/m56d_gun/HMG = new(src.loc) //Here we generate our disassembled mg. + var/obj/item/device/m56d_gun/HMG = new(loc) transfer_label_component(HMG) - HMG.rounds = src.rounds //Inherent the amount of ammo we had. + HMG.rounds = rounds HMG.has_mount = TRUE + HMG.health = health HMG.update_icon() - qdel(src) //Now we clean up the constructed gun. + qdel(src) return if(istype(O, /obj/item/ammo_magazine/m56d)) // RELOADING DOCTOR FREEMAN. @@ -596,7 +614,7 @@ if(user.action_busy) return if(!do_after(user, 25 * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) return - user.visible_message(SPAN_NOTICE("[user] loads [src]! "),SPAN_NOTICE("You load [src]!")) + user.visible_message(SPAN_NOTICE("[user] loads [src]!"), SPAN_NOTICE("You load [src]!")) playsound(loc, 'sound/weapons/gun_minigun_cocked.ogg', 25, 1) if(rounds) var/obj/item/ammo_magazine/m56d/D = new(user.loc) @@ -639,10 +657,10 @@ if(health <= 0) var/destroyed = rand(0,1) //Ammo cooks off or something. Who knows. playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) - if(!destroyed) new /obj/structure/machinery/m56d_post(loc) - else + if(!destroyed) var/obj/item/device/m56d_gun/HMG = new(loc) - HMG.rounds = src.rounds //Inherent the amount of ammo we had. + transfer_label_component(HMG) + HMG.rounds = rounds qdel(src) return @@ -827,6 +845,9 @@ // If the user isn't a human. if(!istype(user)) return + // If the user is unconscious or dead. + if(user.stat) + return // If the user isn't actually allowed to use guns. if(!user.allow_gun_usage) @@ -979,6 +1000,7 @@ to_chat(operator, SPAN_HIGHDANGER("You are knocked off the gun by the sheer force of the ram!")) operator.unset_interaction() operator.apply_effect(3, WEAKEN) + operator.emote("pain") /// Getter for burst_firing /obj/structure/machinery/m56d_hmg/proc/get_burst_firing() diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index 1cf8310a607e..95d545fbd72b 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -774,7 +774,7 @@ to_chat(M, SPAN_WARNING("As you fall into unconsciousness you fail to activate your self-destruct device before you collapse.")) return if(M.stat) - to_chat(M, SPAN_WARNING("Not while you're unconcious...")) + to_chat(M, SPAN_WARNING("Not while you're unconscious...")) return var/obj/item/grab/G = M.get_active_hand() @@ -812,7 +812,7 @@ to_chat(M, SPAN_WARNING("Little too late for that now!")) return if(M.stat) - to_chat(M, SPAN_WARNING("Not while you're unconcious...")) + to_chat(M, SPAN_WARNING("Not while you're unconscious...")) return exploding = FALSE to_chat(M, SPAN_NOTICE("Your bracers stop beeping.")) @@ -838,7 +838,7 @@ to_chat(M, SPAN_WARNING("Little too late for that now!")) return if(M.stat) - to_chat(M, SPAN_WARNING("Not while you're unconcious...")) + to_chat(M, SPAN_WARNING("Not while you're unconscious...")) return if(exploding) return diff --git a/code/modules/cm_preds/yaut_weapons.dm b/code/modules/cm_preds/yaut_weapons.dm index c9bb0fddeaa5..9cb8a8bef3fc 100644 --- a/code/modules/cm_preds/yaut_weapons.dm +++ b/code/modules/cm_preds/yaut_weapons.dm @@ -128,6 +128,7 @@ attack_speed = 5 attack_verb = list("sliced", "slashed", "jabbed", "torn", "gored") force = MELEE_FORCE_TIER_5 + has_speed_bonus = FALSE /*######################################### ########### One Handed Weapons ############ diff --git a/code/modules/cm_tech/resources/resource.dm b/code/modules/cm_tech/resources/resource.dm index 44af2234afd3..02c46e3e8910 100644 --- a/code/modules/cm_tech/resources/resource.dm +++ b/code/modules/cm_tech/resources/resource.dm @@ -82,7 +82,7 @@ update_icon() /obj/structure/resource_node/proc/take_damage(damage) - health = Clamp(health - damage, 0, max_health) + health = clamp(health - damage, 0, max_health) healthcheck() /obj/structure/resource_node/bullet_act(obj/projectile/P) diff --git a/code/modules/cm_tech/tech_tiers.dm b/code/modules/cm_tech/tech_tiers.dm index 498c267afa05..b2d2c0a08de3 100644 --- a/code/modules/cm_tech/tech_tiers.dm +++ b/code/modules/cm_tech/tech_tiers.dm @@ -4,8 +4,8 @@ var/flags = NO_FLAGS - var/disabled_color = "#FFFFFF" - var/color = "#FFFFFF" + var/disabled_color = COLOR_WHITE + var/color = COLOR_WHITE var/max_techs = INFINITE_TECHS // Infinite var/list/turf/tier_turfs @@ -19,22 +19,22 @@ /datum/tier/free name = "Initial Tier" tier = 0 - color = "#000000" - disabled_color = "#000000" + color = COLOR_BLACK + disabled_color = COLOR_BLACK flags = TIER_FLAG_TRANSITORY /datum/tier/one name = "Tier 1" tier = 1 - color = "#00FF00" + color = COLOR_GREEN disabled_color = "#007d00" /datum/tier/one_transition_two name = "Tier 1 to Tier 2 transition" tier = 1 - color = "#000000" - disabled_color = "#000000" + color = COLOR_BLACK + disabled_color = COLOR_BLACK flags = TIER_FLAG_TRANSITORY /datum/tier/two @@ -47,27 +47,27 @@ /datum/tier/two_transition_three name = "Tier 2 to Tier 3 transition" tier = 2 - color = "#000000" - disabled_color = "#000000" + color = COLOR_BLACK + disabled_color = COLOR_BLACK flags = TIER_FLAG_TRANSITORY /datum/tier/three name = "Tier 3" tier = 3 - color = "#FF0000" + color = COLOR_RED disabled_color = "#7d0000" /datum/tier/three_transition_four name = "Tier 3 to Tier 4 transition" tier = 3 - color = "#000000" - disabled_color = "#000000" + color = COLOR_BLACK + disabled_color = COLOR_BLACK flags = TIER_FLAG_TRANSITORY /datum/tier/four name = "Tier 4" tier = 4 - color = "#FF00FF" + color = COLOR_MAGENTA disabled_color = "#7d007d" max_techs = 1 diff --git a/code/modules/cm_tech/trees/marine.dm b/code/modules/cm_tech/trees/marine.dm index 55e82882b848..aae057b90198 100644 --- a/code/modules/cm_tech/trees/marine.dm +++ b/code/modules/cm_tech/trees/marine.dm @@ -9,7 +9,7 @@ GLOBAL_LIST_EMPTY(marine_leaders) var/mob/living/carbon/human/leader var/mob/living/carbon/human/dead_leader - var/job_cannot_be_overriden = list( + var/job_cannot_be_overridden = list( JOB_XO, JOB_CO ) @@ -70,7 +70,7 @@ GLOBAL_LIST_EMPTY(marine_leaders) /datum/techtree/marine/proc/handle_death(mob/living/carbon/human/H) SIGNAL_HANDLER - if((H.job in job_cannot_be_overriden) && (!dead_leader || !dead_leader.check_tod())) + if((H.job in job_cannot_be_overridden) && (!dead_leader || !dead_leader.check_tod())) RegisterSignal(H, COMSIG_PARENT_QDELETING, PROC_REF(cleanup_dead_leader)) RegisterSignal(H, COMSIG_HUMAN_REVIVED, PROC_REF(readd_leader)) dead_leader = H diff --git a/code/modules/defenses/bell_tower.dm b/code/modules/defenses/bell_tower.dm index 52207298c4b0..6939557342f0 100644 --- a/code/modules/defenses/bell_tower.dm +++ b/code/modules/defenses/bell_tower.dm @@ -110,7 +110,7 @@ if(M.get_target_lock(faction)) return - var/list/turf/path = getline2(src, linked_bell, include_from_atom = TRUE) + var/list/turf/path = get_line(src, linked_bell) for(var/turf/PT in path) if(PT.density) return @@ -210,7 +210,7 @@ if(turned_on) if(cloak_alpha_current < cloak_alpha_max) cloak_alpha_current = cloak_alpha_max - cloak_alpha_current = Clamp(cloak_alpha_current + incremental_ring_camo_penalty, cloak_alpha_max, 255) + cloak_alpha_current = clamp(cloak_alpha_current + incremental_ring_camo_penalty, cloak_alpha_max, 255) cloakebelltower.alpha = cloak_alpha_current addtimer(CALLBACK(src, PROC_REF(cloaker_fade_out_finish), cloakebelltower), camouflage_break, TIMER_OVERRIDE|TIMER_UNIQUE) animate(cloakebelltower, alpha = cloak_alpha_max, time = camouflage_break, easing = LINEAR_EASING, flags = ANIMATION_END_NOW) diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index 999df7c22579..bfb44a38a6a5 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -404,7 +404,7 @@ targets.Remove(A) continue - var/list/turf/path = getline2(src, A, include_from_atom = FALSE) + var/list/turf/path = get_line(src, A, include_start_atom = FALSE) if(!path.len || get_dist(src, A) > sentry_range) if(A == target) target = null diff --git a/code/modules/defenses/tesla_coil.dm b/code/modules/defenses/tesla_coil.dm index 8dc8e6498ba1..4c0888e28f6d 100644 --- a/code/modules/defenses/tesla_coil.dm +++ b/code/modules/defenses/tesla_coil.dm @@ -71,7 +71,7 @@ targets = list() for(var/mob/living/M in oview(tesla_range, src)) - if(M.stat == DEAD || isrobot(M)) + if(M.stat == DEAD) continue if(HAS_TRAIT(M, TRAIT_CHARGING)) to_chat(M, SPAN_WARNING("You ignore some weird noises as you charge.")) @@ -125,7 +125,7 @@ if(!istype(M)) return FALSE - var/list/turf/path = getline2(src, M, include_from_atom = FALSE) + var/list/turf/path = get_line(src, M, include_start_atom = FALSE) var/blocked = FALSE for(var/turf/T in path) diff --git a/code/modules/destilery/main.dm b/code/modules/destilery/main.dm deleted file mode 100644 index a7274b317003..000000000000 --- a/code/modules/destilery/main.dm +++ /dev/null @@ -1,298 +0,0 @@ -//This dm file includes some food processing machines: -// - I. Mill -// - II. Fermenter -// - III. Still -// - IV. Squeezer -// - V. Centrifuge - - - -// I. The mill is intended to be loaded with produce and returns ground up items. For example: Wheat should become flour and grapes should become raisins. - -/obj/structure/machinery/mill - var/list/obj/item/reagent_container/food/input = list() - var/list/obj/item/reagent_container/food/output = list() - var/obj/item/reagent_container/food/milled_item - var/busy = FALSE - var/progress = 0 - var/error = 0 - name = "\improper Mill" - desc = "It is a machine that grinds produce." - icon_state = "autolathe" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 10 - active_power_usage = 1000 - -/obj/structure/machinery/mill/Destroy() - QDEL_NULL(milled_item) - return ..() - -/obj/structure/machinery/mill/process() - if(error) - return - - if(!busy) - update_use_power(USE_POWER_IDLE) - if(input.len) - milled_item = input[1] - input -= milled_item - progress = 0 - busy = TRUE - update_use_power(USE_POWER_ACTIVE) - return - - progress++ - if(progress < 10) //Edit this value to make milling faster or slower - return //Not done yet. - - switch(milled_item.type) - if(/obj/item/reagent_container/food/snacks/grown/wheat) //Wheat becomes flour - var/obj/item/reagent_container/food/snacks/flour/F = new(src) - output += F - if(/obj/item/reagent_container/food/snacks/flour) //Flour is still flour - var/obj/item/reagent_container/food/snacks/flour/F = new(src) - output += F - else - error = 1 - - QDEL_NULL(milled_item) - busy = FALSE - -/obj/structure/machinery/mill/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/reagent_container/food)) - if(user.drop_inv_item_to_loc(W, src)) - input += W - else - ..() - -/obj/structure/machinery/mill/attack_hand(mob/user as mob) - for(var/obj/item/reagent_container/food/F in output) - F.forceMove(loc) - output -= F - - - - - - -// II. The fermenter is intended to be loaded with food items and returns medium-strength alcohol items, sucha s wine and beer. - -/obj/structure/machinery/fermenter - var/list/obj/item/reagent_container/food/input = list() - var/list/obj/item/reagent_container/food/output = list() - var/obj/item/reagent_container/food/fermenting_item - var/water_level = 0 - var/busy = FALSE - var/progress = 0 - var/error = 0 - name = "\improper Fermenter" - desc = "It is a machine that ferments produce into alcoholic drinks." - icon_state = "autolathe" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 10 - active_power_usage = 500 - -/obj/structure/machinery/fermenter/Destroy() - QDEL_NULL(fermenting_item) - return ..() - -/obj/structure/machinery/fermenter/process() - if(error) - return - - if(!busy) - update_use_power(USE_POWER_IDLE) - if(input.len) - fermenting_item = input[1] - input -= fermenting_item - progress = 0 - busy = TRUE - update_use_power(USE_POWER_ACTIVE) - return - - if(!water_level) - return - - water_level-- - - progress++ - if(progress < 10) //Edit this value to make milling faster or slower - return //Not done yet. - - switch(fermenting_item.type) - if(/obj/item/reagent_container/food/snacks/flour) //Flour is still flour - var/obj/item/reagent_container/food/drinks/cans/beer/B = new(src) - output += B - else - error = 1 - - QDEL_NULL(fermenting_item) - busy = FALSE - -/obj/structure/machinery/fermenter/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/reagent_container/food)) - if(user.drop_inv_item_to_loc(W, src)) - input += W - else - ..() - -/obj/structure/machinery/fermenter/attack_hand(mob/user as mob) - for(var/obj/item/reagent_container/food/F in output) - F.forceMove(loc) - output -= F - - - -// III. The still is a machine that is loaded with food items and returns hard liquor, such as vodka. - -/obj/structure/machinery/still - var/list/obj/item/reagent_container/food/input = list() - var/list/obj/item/reagent_container/food/output = list() - var/obj/item/reagent_container/food/destilling_item - var/busy = FALSE - var/progress = 0 - var/error = 0 - name = "\improper Still" - desc = "It is a machine that produces hard liquor from alcoholic drinks." - icon_state = "autolathe" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 10 - active_power_usage = 10000 - -/obj/structure/machinery/still/Destroy() - QDEL_NULL(destilling_item) - return ..() - -/obj/structure/machinery/still/process() - if(error) - return - - if(!busy) - update_use_power(USE_POWER_IDLE) - if(input.len) - destilling_item = input[1] - input -= destilling_item - progress = 0 - busy = TRUE - update_use_power(USE_POWER_ACTIVE) - return - - progress++ - if(progress < 10) //Edit this value to make distilling faster or slower - return //Not done yet. - - switch(destilling_item.type) - if(/obj/item/reagent_container/food/drinks/cans/beer) //Flour is still flour - var/obj/item/reagent_container/food/drinks/bottle/vodka/V = new(src) - output += V - else - error = 1 - - QDEL_NULL(destilling_item) - busy = FALSE - -/obj/structure/machinery/still/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/reagent_container/food)) - if(user.drop_inv_item_to_loc(W, loc)) - input += W - else - ..() - -/obj/structure/machinery/still/attack_hand(mob/user as mob) - for(var/obj/item/reagent_container/food/F in output) - F.forceMove(loc) - output -= F - - - - -// IV. The squeezer is intended to destroy inserted food items, but return some of the reagents they contain. - -/obj/structure/machinery/squeezer - var/list/obj/item/reagent_container/food/input = list() - var/obj/item/reagent_container/food/squeezed_item - var/water_level = 0 - var/busy = FALSE - var/progress = 0 - var/error = 0 - name = "\improper Squeezer" - desc = "It is a machine that squeezes extracts from produce." - icon_state = "autolathe" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 10 - active_power_usage = 500 - - - - - -// V. The centrifuge spins inserted food items. It is intended to squeeze out the reagents that are common food catalysts (enzymes currently) - -/obj/structure/machinery/centrifuge - var/list/obj/item/reagent_container/food/input = list() - var/list/obj/item/reagent_container/food/output = list() - var/obj/item/reagent_container/food/spinning_item - var/busy = FALSE - var/progress = 0 - var/error = 0 - var/enzymes = 0 - var/water = 0 - name = "\improper Centrifuge" - desc = "It is a machine that spins produce." - icon_state = "autolathe" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 10 - active_power_usage = 10000 - -/obj/structure/machinery/centrifuge/process() - if(error) - return - - if(!busy) - update_use_power(USE_POWER_IDLE) - if(input.len) - spinning_item = input[1] - input -= spinning_item - progress = 0 - busy = TRUE - update_use_power(USE_POWER_ACTIVE) - return - - progress++ - if(progress < 10) //Edit this value to make milling faster or slower - return //Not done yet. - - var/transfer_enzymes = spinning_item.reagents.get_reagent_amount("enzyme") - - if(transfer_enzymes) - enzymes += transfer_enzymes - spinning_item.reagents.remove_reagent("enzyme",transfer_enzymes) - - output += spinning_item - busy = FALSE - -/obj/structure/machinery/centrifuge/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/reagent_container/food)) - if(user.drop_inv_item_to_loc(W, src)) - input += W - else - ..() - -/obj/structure/machinery/centrifuge/attack_hand(mob/user as mob) - for(var/obj/item/reagent_container/food/F in output) - F.forceMove(loc) - output -= F - while(enzymes >= 50) - enzymes -= 50 - new/obj/item/reagent_container/food/condiment/enzyme(src.loc) - diff --git a/code/modules/dropships/attach_points/attach_point.dm b/code/modules/dropships/attach_points/attach_point.dm index cee26f0b13f2..7230e67e0af1 100644 --- a/code/modules/dropships/attach_points/attach_point.dm +++ b/code/modules/dropships/attach_points/attach_point.dm @@ -7,6 +7,7 @@ unacidable = TRUE anchored = TRUE layer = ABOVE_TURF_LAYER + plane = GAME_PLANE /// The currently installed equipment, if any var/obj/structure/dropship_equipment/installed_equipment /// What kind of equipment this base accepts diff --git a/code/modules/dropships/attach_points/templates.dm b/code/modules/dropships/attach_points/templates.dm index 51c870f04b0b..bcdad8836e25 100644 --- a/code/modules/dropships/attach_points/templates.dm +++ b/code/modules/dropships/attach_points/templates.dm @@ -87,9 +87,15 @@ /obj/effect/attach_point/crew_weapon/dropship1 ship_tag = DROPSHIP_ALAMO +/obj/effect/attach_point/crew_weapon/dropship1/floor + plane = FLOOR_PLANE + /obj/effect/attach_point/crew_weapon/dropship2 ship_tag = DROPSHIP_NORMANDY +/obj/effect/attach_point/crew_weapon/dropship2/floor + plane = FLOOR_PLANE + /obj/effect/attach_point/electronics name = "electronic system attach point" base_category = DROPSHIP_ELECTRONICS diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index ad09eaf3fa09..6ab8164c248d 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -88,7 +88,7 @@ ..() var/oldloc = loc var/amount = tgui_input_number(user, "How many dollars do you want to take? (0 to [src.worth])", "Take Money", 0, src.worth, 0) - amount = round(Clamp(amount, 0, src.worth)) + amount = round(clamp(amount, 0, src.worth)) if(amount == 0) return if(QDELETED(src) || loc != oldloc) diff --git a/code/modules/events/_events.dm b/code/modules/events/_events.dm index 2cc3304e78c9..af85be04238f 100644 --- a/code/modules/events/_events.dm +++ b/code/modules/events/_events.dm @@ -21,7 +21,7 @@ ///The minimum amount of alive, non-AFK human players on server required to start the event. var/min_players = 0 - ///How many times this event has occured + ///How many times this event has occurred var/occurrences = 0 //The maximum number of times this event can occur (naturally), it can still be forced.By setting this to 0 you can effectively disable an event. var/max_occurrences = 20 diff --git a/code/modules/events/inflation.dm b/code/modules/events/inflation.dm index 377c689fa1a0..b410d9795838 100644 --- a/code/modules/events/inflation.dm +++ b/code/modules/events/inflation.dm @@ -32,7 +32,7 @@ /* You may be thinking 'Why the fuck would W-Y directly send a broadcast to a in-operation vessel and reveal their location to any hostiles nearby?' The answer is they don't, it's a signal sent across entire sectors for every UA-affiliated vessel and colony to take note of when it passes by. Colony vendors aren't updated because the colony's network has collapsed. */ - shipwide_ai_announcement("An encrypted broadband signal from Weyland-Yutani has been recieved notifying the sector of sudden changes in the UA's economy during cryosleep, due to [get_random_story()], and have requested UA vessels to increase the prices of [product_type] products by [get_percentage()]%. This change will come into effect in [time_to_update] minutes.") + shipwide_ai_announcement("An encrypted broadband signal from Weyland-Yutani has been received notifying the sector of sudden changes in the UA's economy during cryosleep, due to [get_random_story()], and have requested UA vessels to increase the prices of [product_type] products by [get_percentage()]%. This change will come into effect in [time_to_update] minutes.") /datum/round_event/economy_inflation/start() for(var/obj/structure/machinery/vending/vending_machine as anything in GLOB.total_vending_machines) diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index 90032423fa10..9de9d11607c2 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -312,7 +312,7 @@ //clothes new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/ICC, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/black, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/mod88, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88, WEAR_IN_ACCESSORY) @@ -372,7 +372,7 @@ //clothes new_human.equip_to_slot_or_del(new headset_type, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/pen, WEAR_R_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/suspenders, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/blue, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_J_STORE) diff --git a/code/modules/gear_presets/contractor.dm b/code/modules/gear_presets/contractor.dm index 896771d26aca..bbea2a74339f 100644 --- a/code/modules/gear_presets/contractor.dm +++ b/code/modules/gear_presets/contractor.dm @@ -61,7 +61,7 @@ /datum/equipment_preset/contractor/duty/standard name = "Military Contractor (Standard)" - paygrade = "VAI" + paygrade = PAY_SHORT_VAI_S role_comm_title = "Merc" flags = EQUIPMENT_PRESET_EXTRA assignment = "VAIPO Mercenary" @@ -160,7 +160,7 @@ /datum/equipment_preset/contractor/duty/heavy name = "Military Contractor (Machinegunner)" - paygrade = "VAI-G" + paygrade = PAY_SHORT_VAI_G role_comm_title = "MG" flags = EQUIPMENT_PRESET_EXTRA @@ -205,7 +205,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/contractor/duty/engi name = "Military Contractor (Engineer)" - paygrade = "VAI-E" + paygrade = PAY_SHORT_VAI_E role_comm_title = "Eng" flags = EQUIPMENT_PRESET_EXTRA @@ -252,7 +252,7 @@ /datum/equipment_preset/contractor/duty/medic name = "Military Contractor (Medic)" - paygrade = "VAI-M" + paygrade = PAY_SHORT_VAI_M role_comm_title = "Med" flags = EQUIPMENT_PRESET_EXTRA @@ -298,7 +298,7 @@ /datum/equipment_preset/contractor/duty/leader name = "Military Contractor (Leader)" - paygrade = "VAI-L" + paygrade = PAY_SHORT_VAI_L role_comm_title = "TL" flags = EQUIPMENT_PRESET_EXTRA @@ -348,7 +348,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/contractor/duty/synth name = "Military Contractor (Synthetic)" - paygrade = "VAI-S" + paygrade = PAY_SHORT_VAI_SN role_comm_title = "Syn" flags = EQUIPMENT_PRESET_EXTRA @@ -439,7 +439,7 @@ /datum/equipment_preset/contractor/covert/standard name = "Military Contractor (Covert Standard)" - paygrade = "VAI" + paygrade = PAY_SHORT_VAI_S role_comm_title = "Merc" flags = EQUIPMENT_PRESET_EXTRA @@ -540,7 +540,7 @@ /datum/equipment_preset/contractor/covert/heavy name = "Military Contractor (Covert Machinegunner)" - paygrade = "VAI-G" + paygrade = PAY_SHORT_VAI_G role_comm_title = "MG" flags = EQUIPMENT_PRESET_EXTRA @@ -587,7 +587,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/contractor/covert/engi name = "Military Contractor (Covert Engineer)" - paygrade = "VAI-E" + paygrade = PAY_SHORT_VAI_E role_comm_title = "Eng" flags = EQUIPMENT_PRESET_EXTRA @@ -635,7 +635,7 @@ /datum/equipment_preset/contractor/covert/medic name = "Military Contractor (Covert Medic)" - paygrade = "VAI-M" + paygrade = PAY_SHORT_VAI_M role_comm_title = "Med" flags = EQUIPMENT_PRESET_EXTRA @@ -682,7 +682,7 @@ /datum/equipment_preset/contractor/covert/leader name = "Military Contractor (Covert Leader)" - paygrade = "VAI-L" + paygrade = PAY_SHORT_VAI_L role_comm_title = "TL" flags = EQUIPMENT_PRESET_EXTRA @@ -733,7 +733,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/contractor/covert/synth name = "Military Contractor (Covert Synthetic)" - paygrade = "VAI-S" + paygrade = PAY_SHORT_VAI_SN role_comm_title = "Syn" flags = EQUIPMENT_PRESET_EXTRA diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index 72513a95f880..cfec62a3c65b 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -350,7 +350,7 @@ ) /datum/equipment_preset/corpse/security/liaison/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/black(new_human), WEAR_BODY) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) add_ice_colony_survivor_equipment(new_human) else @@ -758,7 +758,7 @@ faction = FACTION_PMC faction_group = FACTION_LIST_WY rank = JOB_PMC_STANDARD - paygrade = "PMC-OP" + paygrade = PAY_SHORT_PMC_OP idtype = /obj/item/card/id/pmc skills = /datum/skills/civilian/survivor/pmc languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) diff --git a/code/modules/gear_presets/fun.dm b/code/modules/gear_presets/fun.dm index 44b2a1a1157a..9811699d5974 100644 --- a/code/modules/gear_presets/fun.dm +++ b/code/modules/gear_presets/fun.dm @@ -240,7 +240,7 @@ /datum/equipment_preset/fun/santa name = "Fun - Santa" - paygrade = PAY_SHORT_CIV + paygrade = PAY_SHORT_CDNM flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/everything faction = FACTION_MARINE @@ -289,6 +289,7 @@ /datum/equipment_preset/upp/ivan name = "Fun - Ivan" flags = EQUIPMENT_PRESET_EXTRA + paygrade = PAY_SHORT_UE6 skills = /datum/skills/everything assignment = "UPP Armsmaster" rank = "UPP Armsmaster" diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm index d97a032337ee..cc9fcf269a4d 100644 --- a/code/modules/gear_presets/other.dm +++ b/code/modules/gear_presets/other.dm @@ -60,7 +60,7 @@ /datum/equipment_preset/other/freelancer/standard name = "Freelancer (Standard)" - paygrade = "Freelancer Standard" + paygrade = PAY_SHORT_FL_S flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/freelancer @@ -132,7 +132,7 @@ /datum/equipment_preset/other/freelancer/medic name = "Freelancer (Medic)" - paygrade = "Freelancer Medic" + paygrade = PAY_SHORT_FL_M flags = EQUIPMENT_PRESET_EXTRA assignment = "Freelancer Medic" skills = /datum/skills/freelancer/combat_medic @@ -203,7 +203,7 @@ /datum/equipment_preset/other/freelancer/leader name = "Freelancer (Leader)" - paygrade = "Freelancer Leader" + paygrade = PAY_SHORT_FL_WL flags = EQUIPMENT_PRESET_EXTRA assignment = "Freelancer Warlord" languages = list(LANGUAGE_ENGLISH, LANGUAGE_RUSSIAN, LANGUAGE_CHINESE, LANGUAGE_JAPANESE) @@ -269,7 +269,7 @@ /datum/equipment_preset/other/elite_merc/standard name = "Elite Mercenary (Standard Miner)" - paygrade = "Elite Freelancer Standard" + paygrade = PAY_SHORT_EFL_S flags = EQUIPMENT_PRESET_EXTRA idtype = /obj/item/card/id/centcom @@ -306,7 +306,7 @@ /datum/equipment_preset/other/elite_merc/heavy name = "Elite Mercenary (Heavy)" - paygrade = "Elite Freelancer Heavy" + paygrade = PAY_SHORT_EFL_H flags = EQUIPMENT_PRESET_EXTRA idtype = /obj/item/card/id/centcom @@ -346,7 +346,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/other/elite_merc/engineer name = "Elite Mercenary (Engineer)" - paygrade = "Elite Freelancer Engineer" + paygrade = PAY_SHORT_EFL_E flags = EQUIPMENT_PRESET_EXTRA idtype = /obj/item/card/id/data @@ -400,7 +400,7 @@ /datum/equipment_preset/other/elite_merc/medic name = "Elite Mercenary (Medic)" - paygrade = "Elite Freelancer Medic" + paygrade = PAY_SHORT_EFL_M flags = EQUIPMENT_PRESET_EXTRA idtype = /obj/item/card/id/centcom @@ -446,7 +446,7 @@ /datum/equipment_preset/other/elite_merc/leader name = "Elite Mercenary (Leader)" - paygrade = "Elite Freelancer Leader" + paygrade = PAY_SHORT_EFL_TL flags = EQUIPMENT_PRESET_EXTRA idtype = /obj/item/card/id/centcom @@ -884,7 +884,7 @@ idtype = /obj/item/card/id/dogtag assignment = JOB_CREWMAN rank = JOB_CREWMAN - paygrade = "E4" + paygrade = PAY_SHORT_ME4 role_comm_title = "CRMN" minimum_age = 30 skills = /datum/skills/tank_crew @@ -924,7 +924,7 @@ idtype = /obj/item/card/id/dogtag assignment = "Crewman Trainee" rank = "Crewman Trainee" - paygrade = "E3" + paygrade = PAY_SHORT_ME3 role_comm_title = "CRTR" minimum_age = 25 skills = /datum/skills/tank_crew diff --git a/code/modules/gear_presets/pmc.dm b/code/modules/gear_presets/pmc.dm index 9571859b0f0f..16c65dde01aa 100644 --- a/code/modules/gear_presets/pmc.dm +++ b/code/modules/gear_presets/pmc.dm @@ -61,7 +61,7 @@ assignment = JOB_PMC_STANDARD rank = JOB_PMC_STANDARD - paygrade = "PMC-OP" + paygrade = PAY_SHORT_PMC_OP skills = /datum/skills/pmc /datum/equipment_preset/pmc/pmc_standard/load_gear(mob/living/carbon/human/new_human) @@ -203,7 +203,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_DETAINER rank = JOB_PMC_DETAINER - paygrade = "PMC-EN" + paygrade = PAY_SHORT_PMC_EN skills = /datum/skills/pmc /datum/equipment_preset/pmc/pmc_detainer/load_gear(mob/living/carbon/human/new_human) @@ -332,7 +332,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_MEDIC rank = JOB_PMC_MEDIC - paygrade = "PMC-MS" + paygrade = PAY_SHORT_PMC_MS skills = /datum/skills/pmc/medic headset_type = /obj/item/device/radio/headset/distress/pmc/medic @@ -507,7 +507,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_INVESTIGATOR rank = JOB_PMC_INVESTIGATOR - paygrade = "PMC-MS" //Fixed from PMC2 to PMC-MS to display properly. + paygrade = PAY_SHORT_PMC_MS //Fixed from PMC2 to PMC-MS to display properly. skills = /datum/skills/pmc/medic/chem headset_type = /obj/item/device/radio/headset/distress/pmc/medic @@ -686,7 +686,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_LEADER rank = JOB_PMC_LEADER - paygrade = "PMC-TL" + paygrade = PAY_SHORT_PMC_TL role_comm_title = "SL" skills = /datum/skills/pmc/SL headset_type = /obj/item/device/radio/headset/distress/pmc/command @@ -842,7 +842,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_LEAD_INVEST rank = JOB_PMC_LEAD_INVEST - paygrade = "PMC-TL" + paygrade = PAY_SHORT_PMC_TL role_comm_title = "SL" skills = /datum/skills/pmc/SL/chem headset_type = /obj/item/device/radio/headset/distress/pmc/command @@ -985,7 +985,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_GUNNER rank = JOB_PMC_GUNNER - paygrade = "PMC-SS" + paygrade = PAY_SHORT_PMC_SS role_comm_title = "SG" skills = /datum/skills/pmc/smartgunner @@ -1090,7 +1090,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_SNIPER rank = JOB_PMC_SNIPER - paygrade = "PMC-WS" + paygrade = PAY_SHORT_PMC_WS role_comm_title = "Spc" skills = /datum/skills/pmc/specialist headset_type = /obj/item/device/radio/headset/distress/pmc/cct @@ -1212,7 +1212,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_CREWMAN rank = JOB_PMC_CREWMAN - paygrade = "PMC-VS" + paygrade = PAY_SHORT_PMC_VS skills = /datum/skills/pmc/tank_crew headset_type = /obj/item/device/radio/headset/distress/pmc/cct @@ -1340,7 +1340,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_XENO_HANDLER rank = JOB_PMC_XENO_HANDLER - paygrade = "PMC-XS" + paygrade = PAY_SHORT_PMC_XS role_comm_title = "XH" skills = /datum/skills/pmc/xeno_handler languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE, LANGUAGE_XENOMORPH) @@ -1486,8 +1486,8 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_DOCTOR rank = JOB_PMC_DOCTOR - paygrade = "PMC-DOC" - role_comm_title = "TRI" + paygrade = PAY_SHORT_PMC_DOC + role_comm_title = "SGN" skills = /datum/skills/pmc/doctor headset_type = /obj/item/device/radio/headset/distress/pmc/medic @@ -1660,7 +1660,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_ENGINEER rank = JOB_PMC_ENGINEER - paygrade = "PMC-TECH" + paygrade = PAY_SHORT_PMC_TEC role_comm_title = "TEC" skills = /datum/skills/pmc/engineer headset_type = /obj/item/device/radio/headset/distress/pmc/cct @@ -1809,7 +1809,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), assignment = JOB_PMC_DIRECTOR rank = JOB_PMC_DIRECTOR - paygrade = "PMC-DIR" + paygrade = PAY_SHORT_PMC_DIR role_comm_title = "DIR" skills = /datum/skills/pmc/director headset_type = /obj/item/device/radio/headset/distress/pmc/command/director @@ -1848,6 +1848,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), idtype = /obj/item/card/id/pmc assignment = JOB_PMC_SYNTH rank = JOB_PMC_SYNTH + paygrade = PAY_SHORT_SYN role_comm_title = "WY Syn" headset_type = /obj/item/device/radio/headset/distress/pmc/command diff --git a/code/modules/gear_presets/royal_marines.dm b/code/modules/gear_presets/royal_marines.dm index 90361a24cc57..b916a52c4b6f 100644 --- a/code/modules/gear_presets/royal_marines.dm +++ b/code/modules/gear_presets/royal_marines.dm @@ -59,7 +59,7 @@ /datum/equipment_preset/twe/royal_marine/standard name = "TWE Royal Marine Commando (Rifleman)" - paygrade = "RMC E1" + paygrade = PAY_SHORT_RMC1 role_comm_title = "RMC" flags = EQUIPMENT_PRESET_EXTRA assignment = "Royal Marines Rifleman" @@ -110,7 +110,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/twe/royal_marine/spec - paygrade = "RMC E2" + paygrade = PAY_SHORT_RMC2 role_comm_title = "RMC SPC" flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/rmc/specialist @@ -243,7 +243,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/twe/royal_marine/team_leader name = "TWE Royal Marine Commando (Teamleader)" - paygrade = "RMC E4" + paygrade = PAY_SHORT_RMC4 role_comm_title = "RMC TL" flags = EQUIPMENT_PRESET_EXTRA assignment = "Royal Marines Team Leader" @@ -292,7 +292,7 @@ /datum/equipment_preset/twe/royal_marine/lieuteant //they better say it Lef-tenant or they should be banned for LRP. More importantly this guy doesn't spawn in the ERT name = "TWE Royal Marine Commando (Officer)" - paygrade = "RMC O1" + paygrade = PAY_SHORT_RNO1 role_comm_title = "RMC LT" flags = EQUIPMENT_PRESET_EXTRA assignment = "Royal Marines Team Commander" diff --git a/code/modules/gear_presets/survivors/corsat/preset_corsat.dm b/code/modules/gear_presets/survivors/corsat/preset_corsat.dm index f4267c4454b8..fa20b22a3290 100644 --- a/code/modules/gear_presets/survivors/corsat/preset_corsat.dm +++ b/code/modules/gear_presets/survivors/corsat/preset_corsat.dm @@ -40,7 +40,7 @@ assignment = "Interstellar Commerce Commission Corporate Liaison" /datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/corsat/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/corporate_formal(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) diff --git a/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm b/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm index f0d812026491..248c1a00d353 100644 --- a/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm +++ b/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm @@ -1,9 +1,9 @@ -/datum/equipment_preset/survivor/scientist/florina - name = "Survivor - Florina Researcher" - assignment = "Florina Researcher" +/datum/equipment_preset/survivor/scientist/fiorina + name = "Survivor - Fiorina Researcher" + assignment = "Fiorina Researcher" -/datum/equipment_preset/survivor/scientist/florina/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/scientist/fiorina/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/purple(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(new_human), WEAR_JACKET) @@ -15,20 +15,20 @@ ..() -/datum/equipment_preset/survivor/doctor/florina - name = "Survivor - Florina Doctor" - assignment = "Florina Doctor" +/datum/equipment_preset/survivor/doctor/fiorina + name = "Survivor - Fiorina Doctor" + assignment = "Fiorina Doctor" -/datum/equipment_preset/survivor/doctor/florina/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/doctor/fiorina/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) ..() -/datum/equipment_preset/survivor/security/florina - name = "Survivor - Florina Prison Guard" - assignment = "Florina Prison Guard" +/datum/equipment_preset/survivor/security/fiorina + name = "Survivor - Fiorina Prison Guard" + assignment = "Fiorina Prison Guard" -/datum/equipment_preset/survivor/security/florina/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/security/fiorina/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) @@ -37,11 +37,11 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) ..() -/datum/equipment_preset/survivor/colonial_marshal/florina +/datum/equipment_preset/survivor/colonial_marshal/fiorina name = "Survivor - United Americas Riot Officer" assignment = "United Americas Riot Officer" -/datum/equipment_preset/survivor/colonial_marshal/florina/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/colonial_marshal/fiorina/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/ua_riot(new_human), WEAR_JACKET) @@ -52,11 +52,11 @@ ..() -/datum/equipment_preset/survivor/engineer/florina - name = "Survivor - Florina Engineer" - assignment = "Florina Engineer" +/datum/equipment_preset/survivor/engineer/fiorina + name = "Survivor - Fiorina Engineer" + assignment = "Fiorina Engineer" -/datum/equipment_preset/survivor/engineer/florina/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/engineer/fiorina/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/white(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/apron/overalls(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/eng(new_human), WEAR_BACK) diff --git a/code/modules/gear_presets/survivors/lv_624/preset_lv.dm b/code/modules/gear_presets/survivors/lv_624/preset_lv.dm index 803295c58cfc..4e51adf5df7f 100644 --- a/code/modules/gear_presets/survivors/lv_624/preset_lv.dm +++ b/code/modules/gear_presets/survivors/lv_624/preset_lv.dm @@ -86,7 +86,7 @@ assignment = "LV-624 Corporate Liaison" /datum/equipment_preset/survivor/corporate/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/outing(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/field(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/lockable/liaison(new_human), WEAR_BACK) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/prescription(new_human), WEAR_EYES) diff --git a/code/modules/gear_presets/survivors/misc.dm b/code/modules/gear_presets/survivors/misc.dm index 692833bfa82b..7a845e96b2aa 100644 --- a/code/modules/gear_presets/survivors/misc.dm +++ b/code/modules/gear_presets/survivors/misc.dm @@ -60,6 +60,8 @@ Everything below isn't used or out of place. access = list(ACCESS_CIVILIAN_PUBLIC) /datum/equipment_preset/survivor/civilian/load_gear(mob/living/carbon/human/new_human) + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + add_ice_colony_survivor_equipment(new_human) var/random_gear = rand(0, 3) switch(random_gear) if(0) // Normal Colonist @@ -89,8 +91,6 @@ Everything below isn't used or out of place. new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/tool/hatchet(new_human.back), WEAR_IN_BACK) - if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) - add_ice_colony_survivor_equipment(new_human) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) add_survivor_weapon_civilian(new_human) @@ -109,7 +109,7 @@ Everything below isn't used or out of place. access = list(ACCESS_CIVILIAN_PUBLIC) /datum/equipment_preset/survivor/salesman/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/brown(new_human), WEAR_BODY) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) add_ice_colony_survivor_equipment(new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/wcoat(new_human), WEAR_JACKET) @@ -297,17 +297,7 @@ Everything below isn't used or out of place. // ----- Hostile Survivors -/* - -datum/equipment_preset/survivor/clf/cold is never used -and as a three proc attach to it that are defacto never used eitheir. - -handled proc in datum/equipment_preset/survivor/clf/cold: -spawn_rebel_suit -spawn_rebel_helmet -spawn_rebel_shoes - -*/ +/// used in Shivas Snowball /datum/equipment_preset/survivor/clf/cold diff --git a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm index 077adf971092..0515319b8190 100644 --- a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm +++ b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm @@ -43,7 +43,7 @@ assignment = "Interstellar Commerce Commission Corporate Liaison" /datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/corporate_formal(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/black(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_J_STORE) diff --git a/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm b/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm index c1dce212d0c4..9c760b07b5f4 100644 --- a/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm +++ b/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm @@ -3,7 +3,7 @@ assignment = "Shivas Snowball Corporate Liaison" /datum/equipment_preset/survivor/corporate/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/corporate_formal(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) diff --git a/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm b/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm index cbc777ad6852..8cd72c58ad80 100644 --- a/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm +++ b/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm @@ -7,7 +7,7 @@ assignment = "Weyland-Yutani PMC" faction = FACTION_SURVIVOR faction_group = list(FACTION_WY, FACTION_SURVIVOR) - paygrade = "PMC-OP" + paygrade = PAY_SHORT_PMC_OP idtype = /obj/item/card/id/pmc skills = /datum/skills/civilian/survivor/pmc languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) @@ -46,7 +46,7 @@ name = "Survivor - PMC Medic" assignment = JOB_PMC_MEDIC rank = JOB_PMC_MEDIC - paygrade = "PMC-MS" + paygrade = PAY_SHORT_PMC_MS skills = /datum/skills/civilian/survivor/pmc/medic /datum/equipment_preset/survivor/pmc/medic/load_gear(mob/living/carbon/human/new_human) @@ -66,7 +66,7 @@ name = "Survivor - PMC Engineer" assignment = JOB_PMC_ENGINEER rank = JOB_PMC_ENGINEER - paygrade = "PMC-TECH" + paygrade = PAY_SHORT_PMC_TEC skills = /datum/skills/civilian/survivor/pmc/engineer /datum/equipment_preset/survivor/pmc/engineer/load_gear(mob/living/carbon/human/new_human) diff --git a/code/modules/gear_presets/survivors/solaris/preset_solaris.dm b/code/modules/gear_presets/survivors/solaris/preset_solaris.dm index c71641a82ac1..91dd05ef8154 100644 --- a/code/modules/gear_presets/survivors/solaris/preset_solaris.dm +++ b/code/modules/gear_presets/survivors/solaris/preset_solaris.dm @@ -79,12 +79,28 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) ..() +/datum/equipment_preset/survivor/uscm/solaris + name = "Survivor - Solaris United States Colonial Marine Corps Recruiter" + assignment = "USCM Recruiter" + paygrade = PAY_SHORT_ME5 + +/datum/equipment_preset/survivor/uscm/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/ranks/marine/e5(new_human), WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/jacket/marine/service(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/full(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_R_STORE) + ..() + /datum/equipment_preset/survivor/corporate/solaris - name = "Survivor - Solaris Ridge Corporate Liaison" - assignment = "Solaris Ridge Corporate Liaison" + name = "Survivor - Solaris Corporate Liaison" + assignment = "Solaris Corporate Liaison" /datum/equipment_preset/survivor/corporate/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/outing/red(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/ivy(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/prescription(new_human), WEAR_EYES) diff --git a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm index 220034399293..f285a9635bde 100644 --- a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm +++ b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm @@ -1,6 +1,6 @@ /datum/equipment_preset/survivor/engineer/soro - name = "Survivor - Sorokyne Strata Political Prisoner" - assignment = "Sorokyne Strata Political Prisoner" + name = "Survivor - Sorokyne Strata State Contractor" + assignment = "Sorokyne Strata State Contractor" /datum/equipment_preset/survivor/engineer/soro/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) diff --git a/code/modules/gear_presets/survivors/survivors.dm b/code/modules/gear_presets/survivors/survivors.dm index 0e98c60ca453..9240d1782912 100644 --- a/code/modules/gear_presets/survivors/survivors.dm +++ b/code/modules/gear_presets/survivors/survivors.dm @@ -314,7 +314,7 @@ Everything bellow is a parent used as a base for one or multiple maps. survivor_variant = CORPORATE_SURVIVOR /datum/equipment_preset/survivor/corporate/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/field(new_human), WEAR_BODY) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) add_ice_colony_survivor_equipment(new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) @@ -404,7 +404,7 @@ Everything bellow is a parent used as a base for one or multiple maps. access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_COMMAND) /datum/equipment_preset/survivor/interstellar_human_rights_observer/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/suspenders(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/brown(new_human), WEAR_BODY) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) add_ice_colony_survivor_equipment(new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) @@ -452,3 +452,30 @@ Everything bellow is a parent used as a base for one or multiple maps. add_random_cl_survivor_loot(new_human) ..() + +// ----- USCM Survivor + +// Used for Solaris Ridge. +/datum/equipment_preset/survivor/uscm + name = "Survivor - USCM Remnant" + assignment = "USCM Survivor" + skills = /datum/skills/civilian/survivor/marshal + idtype = /obj/item/card/id/dogtag + paygrade = PAY_SHORT_ME2 + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/uscm/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + add_ice_colony_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/ranks/marine/e2(new_human), WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/light(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare(new_human), WEAR_R_STORE) + add_survivor_weapon_security(new_human) + ..() + diff --git a/code/modules/gear_presets/survivors/trijent/preset_trijent.dm b/code/modules/gear_presets/survivors/trijent/preset_trijent.dm index e74f3258db6d..f62010539d77 100644 --- a/code/modules/gear_presets/survivors/trijent/preset_trijent.dm +++ b/code/modules/gear_presets/survivors/trijent/preset_trijent.dm @@ -15,11 +15,25 @@ /datum/equipment_preset/survivor/security/trijent/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security/navyblue(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/marine/mp/mpcap(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit/black(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) ..() +/datum/equipment_preset/survivor/colonial_marshal/trijent + name = "Survivor - Trijent Colonial Marshal Deputy" + assignment = "CMB Deputy" + +/datum/equipment_preset/survivor/colonial_marshal/trijent/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord(new_human), WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + /datum/equipment_preset/survivor/doctor/trijent name = "Survivor - Trijent Doctor" assignment = "Trijent Dam Doctor" @@ -29,6 +43,18 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(new_human), WEAR_HEAD) ..() +/datum/equipment_preset/survivor/scientist/trijent + name = "Survivor - Trijent Researcher" + assignment = "Trijent Dam Researcher" + +/datum/equipment_preset/survivor/scientist/trijent/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/rd(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/jan(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/researcher(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/leather(new_human), WEAR_FEET) + ..() + /datum/equipment_preset/survivor/trucker/trijent name = "Survivor - Trijent Dam Heavy Vehicle Operator" assignment = "Trijent Dam Heavy Vehicle Operator" diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 8289bdfe09cb..8f5243edf84d 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -856,14 +856,14 @@ //Covert Raiders /datum/equipment_preset/uscm/marsoc/covert - name = "Marine Raiders (!DEATHSQUAD! Covert)" + name = "Marine Raider (!DEATHSQUAD! Covert)" uses_special_name = TRUE /datum/equipment_preset/uscm/marsoc/covert/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = MALE new_human.change_real_name(new_human, "[pick(GLOB.nato_phonetic_alphabet)]") new_human.age = rand(20,30) /datum/equipment_preset/uscm/marsoc/covert/load_rank(mob/living/carbon/human/new_human) - return "O" + return PAY_SHORT_CDNM //Team Leader /datum/equipment_preset/uscm/marsoc/sl @@ -891,7 +891,7 @@ new_human.change_real_name(new_human, "[pick(GLOB.nato_phonetic_alphabet)]") new_human.age = rand(20,30) /datum/equipment_preset/uscm/marsoc/sl/covert/load_rank(mob/living/carbon/human/new_human) - return "O" + return PAY_SHORT_CDNM //Officer /datum/equipment_preset/uscm/marsoc/cmd name = "Marine Raider Officer (!DEATHSQUAD!)" diff --git a/code/modules/gear_presets/uscm_medical.dm b/code/modules/gear_presets/uscm_medical.dm index be599755bacf..7923e3a33ece 100644 --- a/code/modules/gear_presets/uscm_medical.dm +++ b/code/modules/gear_presets/uscm_medical.dm @@ -3,22 +3,22 @@ flags = EQUIPMENT_PRESET_START_OF_ROUND|EQUIPMENT_PRESET_MARINE access = list(ACCESS_MARINE_MEDBAY, ACCESS_MARINE_CHEMISTRY, ACCESS_MARINE_MORGUE) - utility_under = list(/obj/item/clothing/under/rank/medical/green) - utility_hat = list() - utility_gloves = list() - utility_shoes = list(/obj/item/clothing/shoes/white) - utility_extra = list() - - service_under = list() - service_over = list() - service_hat = list() - service_shoes = list(/obj/item/clothing/shoes/laceup) - - dress_under = list(/obj/item/clothing/under/suit_jacket) - dress_over = list() - dress_hat = list() + utility_under = list(/obj/item/clothing/under/marine) + utility_hat = list(/obj/item/clothing/head/cmcap) + utility_gloves = list(/obj/item/clothing/gloves/marine) + utility_shoes = list(/obj/item/clothing/shoes/marine) + utility_extra = list(/obj/item/clothing/head/beret/cm, /obj/item/clothing/head/beret/cm/tan) + + service_under = list(/obj/item/clothing/under/marine/officer/bridge) + service_over = list(/obj/item/clothing/suit/storage/jacket/marine/service, /obj/item/clothing/suit/storage/jacket/marine/service/mp) + service_hat = list(/obj/item/clothing/head/cmcap) + service_shoes = list(/obj/item/clothing/shoes/dress) + + dress_under = list(/obj/item/clothing/under/marine/dress) + dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress) + dress_hat = list(/obj/item/clothing/head/marine/peaked) dress_gloves = list(/obj/item/clothing/gloves/marine/dress) - dress_shoes = list(/obj/item/clothing/shoes/laceup) + dress_shoes = list(/obj/item/clothing/shoes/dress) /datum/equipment_preset/uscm_ship/uscm_medical/cmo name = "USCM Chief Medical Officer (CMO)" @@ -44,34 +44,20 @@ minimap_background = MINIMAP_ICON_BACKGROUND_CIC utility_under = list(/obj/item/clothing/under/rank/chief_medical_officer) - utility_hat = list(/obj/item/clothing/head/cmo) - utility_gloves = list(/obj/item/clothing/gloves/latex) + utility_hat = list() + utility_gloves = list() utility_shoes = list(/obj/item/clothing/shoes/white) - utility_extra = list(/obj/item/clothing/suit/storage/labcoat) + utility_extra = list() /datum/equipment_preset/uscm_ship/uscm_medical/cmo/load_gear(mob/living/carbon/human/new_human) - var/back_item = /obj/item/storage/backpack/marine/satchel + var/back_item = /obj/item/storage/backpack/satchel if (new_human.client && new_human.client.prefs && (new_human.client.prefs.backbag == 1)) back_item = /obj/item/storage/backpack/marine - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/cmo(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/decent(new_human), WEAR_IN_JACKET) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/decent(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medkit/full_advanced(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmo(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(new_human), WEAR_J_STORE) //*****************************************************************************************************/ @@ -91,15 +77,10 @@ if (new_human.client && new_human.client.prefs && (new_human.client.prefs.backbag == 1)) back_item = /obj/item/storage/backpack/marine - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/doc(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) //Surgeon this part of the code is to change the name on your ID @@ -125,16 +106,10 @@ if (new_human.client && new_human.client.prefs && (new_human.client.prefs.backbag == 1)) back_item = /obj/item/storage/backpack/marine - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/doc(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/nurse(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) - /datum/equipment_preset/uscm_ship/uscm_medical/nurse/load_rank(mob/living/carbon/human/new_human) if(new_human.client) @@ -159,25 +134,18 @@ utility_hat = list() utility_gloves = list() utility_shoes = list(/obj/item/clothing/shoes/laceup) - utility_extra = list(/obj/item/clothing/suit/storage/labcoat/researcher) + utility_extra = list() service_under = list(/obj/item/clothing/under/marine/officer/researcher) /datum/equipment_preset/uscm_ship/uscm_medical/researcher/load_gear(mob/living/carbon/human/new_human) - var/back_item = /obj/item/storage/backpack/marine/satchel + var/back_item = /obj/item/storage/backpack/satchel if (new_human.client && new_human.client.prefs && (new_human.client.prefs.backbag == 1)) back_item = /obj/item/storage/backpack/marine - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/research(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/researcher(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/researcher(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/bad(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/syringe(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/bad(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/syringe(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index b5ef13f35b2b..578df21b67df 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -52,18 +52,18 @@ minimap_icon = "cl" minimap_background = MINIMAP_ICON_BACKGROUND_CIVILIAN - utility_under = list(/obj/item/clothing/under/liaison_suit/outing) + utility_under = list(/obj/item/clothing/under/liaison_suit/black) utility_hat = list() utility_gloves = list() utility_shoes = list(/obj/item/clothing/shoes/laceup) - utility_extra = list(/obj/item/clothing/under/liaison_suit/suspenders) + utility_extra = list(/obj/item/clothing/under/liaison_suit/blue) - service_under = list(/obj/item/clothing/under/liaison_suit) + service_under = list(/obj/item/clothing/under/liaison_suit/field) service_over = list() service_hat = list() service_shoes = list(/obj/item/clothing/shoes/laceup) - dress_under = list(/obj/item/clothing/under/liaison_suit/formal) + dress_under = list(/obj/item/clothing/under/liaison_suit/corporate_formal) dress_over = list() dress_hat = list() dress_gloves = list(/obj/item/clothing/gloves/marine/dress) @@ -80,7 +80,7 @@ //back_item = /obj/item/storage/backpack new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcl(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/ivy(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) @@ -624,7 +624,7 @@ minimum_age = 27 skills = /datum/skills/auxiliary_officer - minimap_icon = list("cic" = MINIMAP_ICON_COLOR_SILVER) + minimap_icon = list("cic" = COLOR_SILVER) minimap_background = MINIMAP_ICON_BACKGROUND_CIC /datum/equipment_preset/uscm_ship/auxiliary_officer/New() diff --git a/code/modules/gear_presets/whiteout.dm b/code/modules/gear_presets/whiteout.dm index 62b6d5db8008..b9ca1a6e02d4 100644 --- a/code/modules/gear_presets/whiteout.dm +++ b/code/modules/gear_presets/whiteout.dm @@ -9,7 +9,7 @@ languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE, LANGUAGE_CHINESE, LANGUAGE_RUSSIAN, LANGUAGE_GERMAN, LANGUAGE_SPANISH, LANGUAGE_YAUTJA, LANGUAGE_XENOMORPH, LANGUAGE_TSL) //Synths after all. skills = /datum/skills/everything //They are Synths, programmed for Everything. idtype = /obj/item/card/id/pmc/ds - paygrade = PAY_SHORT_OPR + paygrade = PAY_SHORT_CDNM /datum/equipment_preset/pmc/w_y_whiteout/New() . = ..() diff --git a/code/modules/gear_presets/wo.dm b/code/modules/gear_presets/wo.dm index 453cd3ea56eb..bf002b292df9 100644 --- a/code/modules/gear_presets/wo.dm +++ b/code/modules/gear_presets/wo.dm @@ -599,7 +599,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/suspenders(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/black(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/camera(new_human), WEAR_L_HAND) diff --git a/code/modules/gear_presets/wy.dm b/code/modules/gear_presets/wy.dm index 0b63c76b59d0..ac8aefb6238d 100644 --- a/code/modules/gear_presets/wy.dm +++ b/code/modules/gear_presets/wy.dm @@ -19,7 +19,7 @@ /datum/equipment_preset/wy/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new headset_type(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/ivy(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) . = ..() diff --git a/code/modules/gear_presets/wy_goons.dm b/code/modules/gear_presets/wy_goons.dm index a7c0dad679ee..54b436c20854 100644 --- a/code/modules/gear_presets/wy_goons.dm +++ b/code/modules/gear_presets/wy_goons.dm @@ -135,7 +135,7 @@ /datum/equipment_preset/goon/researcher/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/corporate_formal, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/corporate, WEAR_FEET) diff --git a/code/modules/hydroponics/hydro_tools.dm b/code/modules/hydroponics/hydro_tools.dm index b7e3d8bb84c5..eb0d54ce91bb 100644 --- a/code/modules/hydroponics/hydro_tools.dm +++ b/code/modules/hydroponics/hydro_tools.dm @@ -138,9 +138,9 @@ dat += "
      It will periodically alter the local temperature by [grown_seed.alter_temp] degrees Kelvin." if(grown_seed.biolum) - dat += "
      It is [grown_seed.biolum_colour ? "bio-luminescent" : "bio-luminescent"]." + dat += "
      It is [grown_seed.biolum_color ? "bio-luminescent" : "bio-luminescent"]." if(grown_seed.flowers) - dat += "
      It has [grown_seed.flower_colour ? "flowers" : "flowers"]." + dat += "
      It has [grown_seed.flower_color ? "flowers" : "flowers"]." if(dat) show_browser(user, dat, "Plant Analysis", "plant_analyzer") diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 04339f77c9bc..c8c46bc77759 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -111,13 +111,13 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and // Cosmetics. var/plant_icon // Icon to use for the plant growing in the tray. var/product_icon // Base to use for fruit coming from this plant (if a vine). - var/product_colour // Color to apply to product base (if a vine). + var/product_color // Color to apply to product base (if a vine). var/packet_icon = "seed" // Icon to use for physical seed packet item. var/biolum // Plant is bioluminescent. - var/biolum_colour // The color of the plant's radiance. + var/biolum_color // The color of the plant's radiance. var/flowers // Plant has a flower overlay. var/flower_icon = "vine_fruit" // Which overlay to use. - var/flower_colour // Which color to use. + var/flower_color // Which color to use. //Creates a random seed. MAKE SURE THE LINE HAS DIVERGED BEFORE THIS IS CALLED. /datum/seed/proc/randomize() @@ -301,7 +301,7 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and if(prob(5)) biolum = 1 - biolum_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + biolum_color = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" endurance = rand(60,100) yield = rand(3,15) @@ -364,8 +364,8 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and if(biolum) source_turf.visible_message(SPAN_NOTICE("\The [display_name] begins to glow!")) if(prob(degree*2)) - biolum_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - source_turf.visible_message(SPAN_NOTICE("\The [display_name]'s glow changes color!")) + biolum_color = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + source_turf.visible_message(SPAN_NOTICE("\The [display_name]'s glow changes color!")) else source_turf.visible_message(SPAN_NOTICE("\The [display_name]'s glow dims...")) if(11) //Flowers? @@ -374,8 +374,8 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and if(flowers) source_turf.visible_message(SPAN_NOTICE("\The [display_name] sprouts a bevy of flowers!")) if(prob(degree*2)) - flower_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - source_turf.visible_message(SPAN_NOTICE("\The [display_name]'s flowers changes color!")) + flower_color = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + source_turf.visible_message(SPAN_NOTICE("\The [display_name]'s flowers changes color!")) else source_turf.visible_message(SPAN_NOTICE("\The [display_name]'s flowers wither and fall off.")) else //New chems! (20% chance) @@ -487,12 +487,12 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and if(gene.values.len < 7) return product_icon = gene.values[1] - product_colour = gene.values[2] + product_color = gene.values[2] biolum = gene.values[3] - biolum_colour = gene.values[4] + biolum_color = gene.values[4] flowers = gene.values[5] flower_icon = gene.values[6] - flower_colour = gene.values[7] + flower_color = gene.values[7] //Returns a list of the desired trait values. /datum/seed/proc/get_gene(genetype) @@ -554,12 +554,12 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and if("flowers") P.values = list( (product_icon ? product_icon : 0), - (product_colour ? product_colour : 0), + (product_color ? product_color : 0), (biolum ? biolum : 0), - (biolum_colour ? biolum_colour : 0), + (biolum_color ? biolum_color : 0), (flowers ? flowers : 0), (flower_icon ? flower_icon : 0), - (flower_colour ? flower_colour : 0) + (flower_color ? flower_color : 0) ) return (P ? P : 0) @@ -673,10 +673,10 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and new_seed.parasite = parasite new_seed.plant_icon = plant_icon new_seed.product_icon = product_icon - new_seed.product_colour = product_colour + new_seed.product_color = product_color new_seed.packet_icon = packet_icon new_seed.biolum = biolum - new_seed.biolum_colour = biolum_colour + new_seed.biolum_color = biolum_color new_seed.flowers = flowers new_seed.flower_icon = flower_icon new_seed.alter_temp = alter_temp @@ -1099,7 +1099,7 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and potency = 30 growth_stages = 4 biolum = 1 - biolum_colour = "#006622" + biolum_color = "#006622" /datum/seed/mushroom/plastic name = "plastic" @@ -1551,7 +1551,7 @@ GLOBAL_LIST_EMPTY(gene_tag_masks) // Gene obfuscation for delicious trial and packet_icon = "seed-kudzu" products = list(/obj/item/reagent_container/food/snacks/grown/kudzupod) plant_icon = "kudzu" - product_colour = "#96D278" + product_color = "#96D278" chems = list("plantmatter" = list(1,50), "anti_toxin" = list(1,25)) lifespan = 20 diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm index bfca73e8d01b..c2a4afaed138 100644 --- a/code/modules/hydroponics/vines.dm +++ b/code/modules/hydroponics/vines.dm @@ -181,14 +181,14 @@ if(harvest) var/image/fruit_overlay = image('icons/obj/structures/machinery/hydroponics.dmi',"") - if(seed.product_colour) - fruit_overlay.color = seed.product_colour + if(seed.product_color) + fruit_overlay.color = seed.product_color overlays += fruit_overlay if(seed.flowers) var/image/flower_overlay = image('icons/obj/structures/machinery/hydroponics.dmi',"[seed.flower_icon]") - if(seed.flower_colour) - flower_overlay.color = seed.flower_colour + if(seed.flower_color) + flower_overlay.color = seed.flower_color overlays += flower_overlay /obj/effect/plantsegment/proc/spread() diff --git a/code/modules/lighting/lighting_mask/lighting_mask.dm b/code/modules/lighting/lighting_mask/lighting_mask.dm index bf824033adfb..c1276d19dab0 100644 --- a/code/modules/lighting/lighting_mask/lighting_mask.dm +++ b/code/modules/lighting/lighting_mask/lighting_mask.dm @@ -69,7 +69,7 @@ // - Center the overlay image // - Ok so apparently translate is affected by the scale we already did huh. // ^ Future me here, its because it works as translate then scale since its backwards. - // ^ ^ Future future me here, it totally shouldnt since the translation component of a matrix is independant to the scale component. + // ^ ^ Future future me here, it totally shouldnt since the translation component of a matrix is independent to the scale component. new_size_matrix.Translate(-128 + 16) //Adjust for pixel offsets var/invert_offsets = attached_atom.dir & (NORTH | EAST) diff --git a/code/modules/lighting/lighting_mask/shadow_calculator.dm b/code/modules/lighting/lighting_mask/shadow_calculator.dm index 42f98b47e789..cfd4a86f5f3a 100644 --- a/code/modules/lighting/lighting_mask/shadow_calculator.dm +++ b/code/modules/lighting/lighting_mask/shadow_calculator.dm @@ -95,7 +95,7 @@ SSlighting.total_shadow_calculations ++ //Ceiling the range since we need it in integer form - var/range = CEILING(radius, 1) + var/range = Ceiling(radius) DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/timer = TICK_USAGE) //Work out our position diff --git a/code/modules/lighting/lighting_static/static_lighting_source.dm b/code/modules/lighting/lighting_static/static_lighting_source.dm index e650a432fc63..26bc41d3cb02 100644 --- a/code/modules/lighting/lighting_static/static_lighting_source.dm +++ b/code/modules/lighting/lighting_static/static_lighting_source.dm @@ -113,7 +113,7 @@ //Cubic lighting falloff. This has the *exact* same range as the original lighting falloff calculation, down to the exact decimal, but it looks a little unnatural due to the harsher falloff and how it's generally brighter across the board. //#define LUM_FALLOFF(C, T) (1 - CLAMP01((((C.x - T.x) * (C.x - T.x)) + ((C.y - T.y) * (C.y - T.y)) + LIGHTING_HEIGHT) / max(1, light_range*light_range))) -//Linear lighting falloff. This resembles the original lighting falloff calculation the best, but results in lights having a slightly larger range, which is most noticable with large light sources. This also results in lights being diamond-shaped, fuck. This looks the darkest out of the three due to how lights are brighter closer to the source compared to the original falloff algorithm. This falloff method also does not at all take into account lighting height, as it acts as a flat reduction to light range with this method. +//Linear lighting falloff. This resembles the original lighting falloff calculation the best, but results in lights having a slightly larger range, which is most noticeable with large light sources. This also results in lights being diamond-shaped, fuck. This looks the darkest out of the three due to how lights are brighter closer to the source compared to the original falloff algorithm. This falloff method also does not at all take into account lighting height, as it acts as a flat reduction to light range with this method. //#define LUM_FALLOFF(C, T) (1 - CLAMP01(((abs(C.x - T.x) + abs(C.y - T.y))) / max(1, light_range+1))) //Linear lighting falloff but with an octagonal shape in place of a diamond shape. Lummox JR please add pointer support. @@ -223,8 +223,8 @@ var/list/turf/turfs = list() if (source_turf) var/oldlum = source_turf.luminosity - source_turf.luminosity = CEILING(light_range, 1) - for(var/turf/T in view(CEILING(light_range, 1), source_turf)) + source_turf.luminosity = Ceiling(light_range) + for(var/turf/T in view(Ceiling(light_range), source_turf)) if(!IS_OPAQUE_TURF(T)) if (!T.lighting_corners_initialised) T.static_generate_missing_corners() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 3108a09e62b5..cb16480fcfaa 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -32,6 +32,7 @@ plane = GHOST_PLANE layer = ABOVE_FLY_LAYER stat = DEAD + mob_flags = KNOWS_TECHNOLOGY var/adminlarva = FALSE var/ghostvision = TRUE var/can_reenter_corpse @@ -137,8 +138,6 @@ var/datum/action/observer_action/new_action = new path() new_action.give_to(src) - RegisterSignal(SSdcs, COMSIG_GLOB_PREDATOR_ROUND_TOGGLED, PROC_REF(toggle_predator_action)) - if(SSticker.mode && SSticker.mode.flags_round_type & MODE_PREDATOR) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), src, "This is a PREDATOR ROUND! If you are whitelisted, you may Join the Hunt!"), 2 SECONDS) @@ -262,6 +261,9 @@ var/mob/living/carbon/human/human_target = target client.eye = human_target + observe_target_mob = human_target + RegisterSignal(observe_target_mob, COMSIG_PARENT_QDELETING, PROC_REF(clean_observe_target)) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(observer_move_react)) if(!human_target.hud_used) return @@ -290,19 +292,14 @@ break - observe_target_mob = human_target - RegisterSignal(observe_target_mob, COMSIG_PARENT_QDELETING, PROC_REF(clean_observe_target)) RegisterSignal(observe_target_mob, COMSIG_MOB_GHOSTIZE, PROC_REF(observe_target_ghosting)) RegisterSignal(observe_target_mob, COMSIG_MOB_NEW_MIND, PROC_REF(observe_target_new_mind)) RegisterSignal(observe_target_mob, COMSIG_MOB_LOGIN, PROC_REF(observe_target_login)) - RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(observer_move_react)) - if(human_target.client) observe_target_client = human_target.client RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD, PROC_REF(observe_target_screen_add)) RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove)) - return /mob/dead/observer/reset_perspective(atom/A) if(observe_target_mob) @@ -321,7 +318,9 @@ /mob/dead/observer/Login() ..() - toggle_predator_action() + if(client.check_whitelist_status(WHITELIST_PREDATOR)) + RegisterSignal(SSdcs, COMSIG_GLOB_PREDATOR_ROUND_TOGGLED, PROC_REF(toggle_predator_action)) + toggle_predator_action() client.move_delay = MINIMAL_MOVEMENT_INTERVAL @@ -621,7 +620,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return mind.transfer_to(mind.original, TRUE) - SStgui.on_transfer(src, mind.current) qdel(src) return TRUE @@ -1287,9 +1285,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!key_to_use) return - if(!(GLOB.RoleAuthority.roles_whitelist[key_to_use] & WHITELIST_PREDATOR)) - return - if(!SSticker.mode) SSticker.OnRoundstart(CALLBACK(src, PROC_REF(toggle_predator_action))) return diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 50496cef31c5..173de5338196 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -110,7 +110,7 @@ if(isliving(M)) var/mob/living/player = M - serialized["health"] = FLOOR((player.health / player.maxHealth * 100), 1) + serialized["health"] = Floor(player.health / player.maxHealth * 100) if(isxeno(player)) var/mob/living/carbon/xenomorph/xeno = player @@ -126,7 +126,7 @@ var/obj/item/card/id/id_card = human.get_idcard() var/datum/species/human_species = human.species var/max_health = human_species.total_health != human.maxHealth ? human_species.total_health : human.maxHealth - serialized["health"] = FLOOR((player.health / max_health * 100), 1) + serialized["health"] = Floor(player.health / max_health * 100) serialized["job"] = id_card?.assignment ? id_card.assignment : human.job serialized["nickname"] = human.real_name @@ -175,9 +175,6 @@ if(isanimal(player)) animals += list(serialized) - else if(isAI(M)) - humans += list(serialized) - data["humans"] = humans data["marines"] = marines data["survivors"] = survivors diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index dd71180e2dfe..0d8d1ff0dc48 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -106,54 +106,8 @@ speaker_name = "unknown" comm_paygrade = "" - var/changed_voice - - if(isAI(src) && !hard_to_hear) - var/jobname // the mob's "job" - var/mob/living/carbon/human/impersonating //The crewmember being impersonated, if any. - - if (ishuman(speaker)) - var/mob/living/carbon/human/H = speaker - - if((H.wear_id && istype(H.wear_id,/obj/item/card/id/syndicate)) && (H.wear_mask && istype(H.wear_mask,/obj/item/clothing/mask/gas/voice))) - - changed_voice = 1 - var/mob/living/carbon/human/I = locate(speaker_name) - - if(I) - impersonating = I - jobname = impersonating.get_assignment() - comm_paygrade = impersonating.get_paygrade() - else - jobname = "Unknown" - comm_paygrade = "" - else - jobname = H.get_assignment() - comm_paygrade = H.get_paygrade() - - else if (iscarbon(speaker)) // Nonhuman carbon mob - jobname = "No id" - comm_paygrade = "" - else if (isAI(speaker)) - jobname = "AI" - comm_paygrade = "" - else if (isrobot(speaker)) - jobname = "Cyborg" - comm_paygrade = "" - else - jobname = "Unknown" - comm_paygrade = "" - - if(changed_voice) - if(impersonating) - track = "[speaker_name] ([jobname])" - else - track = "[speaker_name] ([jobname])" - else - track = "[speaker_name] ([jobname])" - if(istype(src, /mob/dead/observer)) - if(speaker_name != speaker.real_name && !isAI(speaker)) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. + if(speaker_name != speaker.real_name) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. speaker_name = "[speaker.real_name] ([speaker_name])" track = "[speaker_name] (F)" diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 8a0f0f8aa1e9..c9837e144c1b 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -175,7 +175,9 @@ if(!previously_held_object) remembered_dropped_objects -= weak_ref break - if(previously_held_object.in_contents_of(check_turf)) + if(previously_held_object in check_turf) + if(previously_held_object.throwing) + return FALSE if(previously_held_object.anchored) return FALSE put_in_hands(previously_held_object, drop_on_fail = FALSE) @@ -226,7 +228,7 @@ //Remove an item on a mob's inventory. It does not change the item's loc, just unequips it from the mob. //Used just before you want to delete the item, or moving it afterwards. /mob/proc/temp_drop_inv_item(obj/item/I, force) - return u_equip(I, null, force) + return u_equip(I, null, TRUE, force) //Outdated but still in use apparently. This should at least be a human proc. @@ -254,15 +256,10 @@ //proc to get the item in the active hand. /mob/proc/get_held_item() - if(isSilicon(src)) - if(isrobot(src)) - if(src:module_active) - return src:module_active + if (hand) + return l_hand else - if (hand) - return l_hand - else - return r_hand + return r_hand /mob/living/carbon/human/proc/equip_if_possible(obj/item/W, slot, del_on_fail = 1) // since byond doesn't seem to have pointers, this seems like the best way to do this :/ //warning: icky code diff --git a/code/modules/mob/language/languages.dm b/code/modules/mob/language/languages.dm index 2844b5841781..86a96e3d160c 100644 --- a/code/modules/mob/language/languages.dm +++ b/code/modules/mob/language/languages.dm @@ -196,12 +196,6 @@ continue M.show_message("synthesised voice beeps, \"beep beep beep\"",2) - //robot binary xmitter component power usage - if (isrobot(speaker)) - var/mob/living/silicon/robot/R = speaker - var/datum/robot_component/C = R.components["comms"] - R.cell_use_power(C.active_usage) - /datum/language/event_hivemind name = LANGUAGE_TELEPATH desc = "An event only language that provides a hivemind for its users." diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index dea179e6ad48..27d6f5ee4ccf 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -128,7 +128,7 @@ blood_data["blood_type"] = get_blood_type() - blood_data["blood_colour"] = get_blood_color() + blood_data["blood_color"] = get_blood_color() blood_data["viruses"] = list() return blood_data diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index b815fe4e3621..0930d02f3601 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -22,17 +22,7 @@ . = ..() /mob/living/brain/say_understands(mob/other)//Goddamn is this hackish, but this say code is so odd - if (isAI(other)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/decoy)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (isrobot(other)) + if (isSilicon(other)) if(!(container && istype(container, /obj/item/device/mmi))) return 0 else diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 5890a44f4168..af0da452d13e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -75,14 +75,22 @@ // Finding the last guy for anti-delay. if(SSticker.mode && SSticker.mode.is_in_endgame && SSticker.current_state != GAME_STATE_FINISHED && is_mainship_level(z)) var/mob/last_living_human + var/shipside_humans_count = 0 + var/datum/hive_status/main_hive = GLOB.hive_datum[XENO_HIVE_NORMAL] + var/see_humans_on_tacmap = main_hive.see_humans_on_tacmap for(var/mob/living/carbon/human/cur_human as anything in GLOB.alive_human_list) if(!is_mainship_level(cur_human.z)) continue - if(last_living_human) + shipside_humans_count++ + if(last_living_human && see_humans_on_tacmap) last_living_human = null break last_living_human = cur_human - if(last_living_human && (GLOB.last_qm_callout + 2 MINUTES) < world.time) + + if(!see_humans_on_tacmap && shipside_humans_count < (main_hive.get_real_total_xeno_count() * HIJACK_RATIO_FOR_TACMAP)) + xeno_announcement("There is only a handful of tallhosts left, they are now visible on our hive mind map.", XENO_HIVE_NORMAL, SPAN_ANNOUNCEMENT_HEADER_BLUE("[QUEEN_MOTHER_ANNOUNCE]")) + main_hive.see_humans_on_tacmap = TRUE + if(last_living_human && shipside_humans_count <= 1 && (GLOB.last_qm_callout + 2 MINUTES) < world.time) GLOB.last_qm_callout = world.time // Tell the xenos where the human is. xeno_announcement("I sense the last tallhost hiding in [get_area(last_living_human)].", XENO_HIVE_NORMAL, SPAN_ANNOUNCEMENT_HEADER_BLUE("[QUEEN_MOTHER_ANNOUNCE]")) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 77f33b999924..da17bf8a15f0 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -129,7 +129,7 @@ if(gloves && !skipgloves) msg += "[t_He] [t_has] [gloves.get_examine_line(user)] [gloves.get_examine_location(src, user, WEAR_HANDS, t_He, t_his, t_him, t_has, t_is)].\n" else if(hands_blood_color) - msg += SPAN_WARNING("[t_He] [t_has] [(hands_blood_color != "#030303") ? "blood" : "oil"]-stained hands!\n") + msg += SPAN_WARNING("[t_He] [t_has] [(hands_blood_color != COLOR_OIL) ? "blood" : "oil"]-stained hands!\n") //belt if(belt) @@ -139,7 +139,7 @@ if(shoes && !skipshoes) msg += "[t_He] [t_is] wearing [shoes.get_examine_line(user)] [shoes.get_examine_location(src, user, WEAR_FEET, t_He, t_his, t_him, t_has, t_is)].\n" else if(feet_blood_color) - msg += SPAN_WARNING("[t_He] [t_has] [(feet_blood_color != "#030303") ? "blood" : "oil"]-stained feet!\n") + msg += SPAN_WARNING("[t_He] [t_has] [(feet_blood_color != COLOR_OIL) ? "blood" : "oil"]-stained feet!\n") //mask if(wear_mask && !skipmask) @@ -546,14 +546,5 @@ return TRUE else return FALSE - else if(isrobot(passed_mob)) - var/mob/living/silicon/robot/R = passed_mob - switch(hudtype) - if("security") - return istype(R.module_state_1, /obj/item/robot/sight/hud/sec) || istype(R.module_state_2, /obj/item/robot/sight/hud/sec) || istype(R.module_state_3, /obj/item/robot/sight/hud/sec) - if("medical") - return istype(R.module_state_1, /obj/item/robot/sight/hud/med) || istype(R.module_state_2, /obj/item/robot/sight/hud/med) || istype(R.module_state_3, /obj/item/robot/sight/hud/med) - else - return FALSE else return FALSE diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d2e0db929624..4c62361ec52e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -273,8 +273,6 @@ /mob/living/carbon/human/show_inv(mob/living/user) - if(ismaintdrone(user)) - return var/obj/item/clothing/under/suit = null if(istype(w_uniform, /obj/item/clothing/under)) suit = w_uniform @@ -694,10 +692,6 @@ var/mob/living/carbon/human/U = usr new_comment["created_by"]["name"] = U.get_authentification_name() new_comment["created_by"]["rank"] = U.get_assignment() - else if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - new_comment["created_by"]["name"] = U.name - new_comment["created_by"]["rank"] = "[U.modtype] [U.braintype]" if(!islist(R.fields["comments"])) R.fields["comments"] = list("1" = new_comment) else @@ -732,9 +726,6 @@ if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr U.handle_regular_hud_updates() - if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - U.handle_regular_hud_updates() if(!modified) to_chat(usr, SPAN_DANGER("Unable to locate a data core entry for this person.")) @@ -818,9 +809,6 @@ if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]
      [t1]") - if(istype(usr,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/U = usr - R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]
      [t1]") if(href_list["medholocard"]) if(!skillcheck(usr, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) @@ -1173,7 +1161,7 @@ for(var/datum/cm_objective/Objective in src.mind.objective_memory.disks) src.mind.objective_memory.disks -= Objective -/mob/living/carbon/human/proc/set_species(new_species, default_colour) +/mob/living/carbon/human/proc/set_species(new_species, default_color) if(!new_species) new_species = "Human" @@ -1207,7 +1195,7 @@ species.create_organs(src) - if(species.base_color && default_colour) + if(species.base_color && default_color) //Apply color. r_skin = hex2num(copytext(species.base_color,2,4)) g_skin = hex2num(copytext(species.base_color,4,6)) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index f14b023b81da..5cb439721ce6 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -23,7 +23,7 @@ SPAN_NOTICE("You extinguished the fire on [src]."), null, 5) return 1 - // If unconcious with oxygen damage, do CPR. If dead, we do CPR + // If unconscious with oxygen damage, do CPR. If dead, we do CPR if(!(stat == UNCONSCIOUS && getOxyLoss() > 0) && !(stat == DEAD)) help_shake_act(attacking_mob) return 1 diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index cebbbd6086bb..942c20482230 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -34,7 +34,7 @@ var/datum/internal_organ/brain/sponge = internal_organs_by_name["brain"] if(sponge) sponge.take_damage(amount) - sponge.damage = Clamp(sponge.damage, 0, maxHealth*2) + sponge.damage = clamp(sponge.damage, 0, maxHealth*2) brainloss = sponge.damage else brainloss = 200 @@ -49,7 +49,7 @@ if(species.has_organ["brain"]) var/datum/internal_organ/brain/sponge = internal_organs_by_name["brain"] if(sponge) - sponge.damage = Clamp(amount, 0, maxHealth*2) + sponge.damage = clamp(amount, 0, maxHealth*2) brainloss = sponge.damage else brainloss = 200 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 42df439c5b55..21af882376eb 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -256,7 +256,7 @@ Contains most of the procs that are called when a mob is attacked by something add_blood(get_blood_color(), BLOOD_BODY) //Melee weapon embedded object code. - if (I.damtype == BRUTE && !I.is_robot_module() && !(I.flags_item & (NODROP|DELONDROP))) + if (I.damtype == BRUTE && !(I.flags_item & (NODROP|DELONDROP))) damage = I.force if(damage > 40) damage = 40 //Some sanity, mostly for yautja weapons. CONSTANT STICKY ICKY if (weapon_sharp && prob(3) && !isyautja(user)) // make yautja less likely to get their weapon stuck @@ -346,16 +346,15 @@ Contains most of the procs that are called when a mob is attacked by something //thrown weapon embedded object code. if (dtype == BRUTE && istype(O,/obj/item)) var/obj/item/I = O - if (!I.is_robot_module()) - var/sharp = is_sharp(I) - //blunt objects should really not be embedding in things unless a huge amount of force is involved - var/embed_chance = sharp? damage/I.w_class : damage/(I.w_class*3) - var/embed_threshold = sharp? 5*I.w_class : 15*I.w_class - - //Sharp objects will always embed if they do enough damage. - //Thrown sharp objects have some momentum already and have a small chance to embed even if the damage is below the threshold - if (!isyautja(src) && ((sharp && prob(damage/(10*I.w_class)*100)) || (damage > embed_threshold && prob(embed_chance)))) - affecting.embed(I) + var/sharp = is_sharp(I) + //blunt objects should really not be embedding in things unless a huge amount of force is involved + var/embed_chance = sharp? damage/I.w_class : damage/(I.w_class*3) + var/embed_threshold = sharp? 5*I.w_class : 15*I.w_class + + //Sharp objects will always embed if they do enough damage. + //Thrown sharp objects have some momentum already and have a small chance to embed even if the damage is below the threshold + if (!isyautja(src) && ((sharp && prob(damage/(10*I.w_class)*100)) || (damage > embed_threshold && prob(embed_chance)))) + affecting.embed(I) /mob/living/carbon/human/proc/get_id_faction_group() var/obj/item/card/id/C = wear_id diff --git a/code/modules/mob/living/carbon/human/life/handle_environment.dm b/code/modules/mob/living/carbon/human/life/handle_environment.dm index 143d9d500793..65bc7213810e 100644 --- a/code/modules/mob/living/carbon/human/life/handle_environment.dm +++ b/code/modules/mob/living/carbon/human/life/handle_environment.dm @@ -19,7 +19,7 @@ if(thermal_protection < 1) temp_adj = (1 - thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR) - bodytemperature += Clamp(temp_adj, BODYTEMP_COOLING_MAX, BODYTEMP_HEATING_MAX) + bodytemperature += clamp(temp_adj, BODYTEMP_COOLING_MAX, BODYTEMP_HEATING_MAX) //+/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. if(bodytemperature > species.heat_level_1) diff --git a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm index b84c8e9d24c2..9e27fe9963ca 100644 --- a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm +++ b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm @@ -60,7 +60,7 @@ else clear_fullscreen("blind") - ///Pain should override the SetEyeBlur(0) should the pain be painful enough to cause eyeblur in the first place. Also, peepers is essential to make sure eye damage isn't overriden. + ///Pain should override the SetEyeBlur(0) should the pain be painful enough to cause eyeblur in the first place. Also, peepers is essential to make sure eye damage isn't overridden. var/datum/internal_organ/eyes/peepers = internal_organs_by_name["eyes"] if((disabilities & NEARSIGHTED) && !HAS_TRAIT(src, TRAIT_NEARSIGHTED_EQUIPMENT) && pain.current_pain < 80 && peepers.organ_status == ORGAN_HEALTHY) EyeBlur(2) diff --git a/code/modules/mob/living/carbon/human/powers/human_powers.dm b/code/modules/mob/living/carbon/human/powers/human_powers.dm index 36eb927eb7fb..a96f404a1447 100644 --- a/code/modules/mob/living/carbon/human/powers/human_powers.dm +++ b/code/modules/mob/living/carbon/human/powers/human_powers.dm @@ -178,16 +178,25 @@ to_chat(H, SPAN_DANGER("Your nose begins to bleed...")) H.drip(1) -/mob/living/carbon/human/proc/psychic_whisper(mob/M as mob in oview()) +/mob/living/carbon/human/proc/psychic_whisper(mob/target_mob as mob in oview()) set name = "Psychic Whisper" set desc = "Whisper silently to someone over a distance." set category = "Abilities" - var/msg = strip_html(input("Message:", "Psychic Whisper") as text|null) - if(msg) - log_say("PsychicWhisper: [key_name(src)]->[M.key] : [msg]") - to_chat(M, SPAN_XENOWARNING(" You hear a strange, alien voice in your head... \italic [msg]")) - to_chat(src, SPAN_XENOWARNING(" You said: \"[msg]\" to [M]")) + var/whisper = strip_html(input("Message:", "Psychic Whisper") as text|null) + if(whisper) + log_say("PsychicWhisper: [key_name(src)]->[target_mob.key] : [whisper]") + to_chat(target_mob, SPAN_XENOWARNING(" You hear a strange, alien voice in your head... [whisper]")) + to_chat(src, SPAN_XENOWARNING(" You said: \"[whisper]\" to [target_mob]")) + for (var/mob/dead/observer/ghost as anything in GLOB.observer_list) + if(!ghost.client || isnewplayer(ghost)) + continue + if(ghost.client.prefs.toggles_chat & CHAT_GHOSTHIVEMIND) + var/rendered_message + var/human_track = "(F)" + var/target_track = "(F)" + rendered_message = SPAN_XENOLEADER("PsychicWhisper: [real_name][human_track] to [target_mob.real_name][target_track], '[whisper]'") + ghost.show_message(rendered_message, SHOW_MESSAGE_AUDIBLE) return /mob/living/verb/lay_down() diff --git a/code/modules/mob/living/carbon/human/powers/issue_order.dm b/code/modules/mob/living/carbon/human/powers/issue_order.dm index 775c4f645516..1becf805c027 100644 --- a/code/modules/mob/living/carbon/human/powers/issue_order.dm +++ b/code/modules/mob/living/carbon/human/powers/issue_order.dm @@ -72,14 +72,14 @@ switch(order) if(COMMAND_ORDER_MOVE) mobility_aura_count++ - mobility_aura = Clamp(mobility_aura, strength, ORDER_MOVE_MAX_LEVEL) + mobility_aura = clamp(mobility_aura, strength, ORDER_MOVE_MAX_LEVEL) if(COMMAND_ORDER_HOLD) protection_aura_count++ - protection_aura = Clamp(protection_aura, strength, ORDER_HOLD_MAX_LEVEL) + protection_aura = clamp(protection_aura, strength, ORDER_HOLD_MAX_LEVEL) pain.apply_pain_reduction(protection_aura * PAIN_REDUCTION_AURA) if(COMMAND_ORDER_FOCUS) marksman_aura_count++ - marksman_aura = Clamp(marksman_aura, strength, ORDER_FOCUS_MAX_LEVEL) + marksman_aura = clamp(marksman_aura, strength, ORDER_FOCUS_MAX_LEVEL) hud_set_order() diff --git a/code/modules/mob/living/carbon/human/species/human.dm b/code/modules/mob/living/carbon/human/species/human.dm index add78365a350..684bfa672b19 100644 --- a/code/modules/mob/living/carbon/human/species/human.dm +++ b/code/modules/mob/living/carbon/human/species/human.dm @@ -28,7 +28,7 @@ else if(chem_effect_flags & CHEM_EFFECT_ORGAN_STASIS) b_volume *= 1 else if(heart.damage >= heart.organ_status >= ORGAN_BRUISED) - b_volume *= Clamp(100 - (2 * heart.damage), 30, 100) / 100 + b_volume *= clamp(100 - (2 * heart.damage), 30, 100) / 100 //Effects of bloodloss if(b_volume <= BLOOD_VOLUME_SAFE) @@ -37,7 +37,7 @@ /// How much oxyloss will there be from the next time blood processes var/additional_oxyloss = (100 - blood_percentage) / 5 /// The limit of the oxyloss gained, ignoring oxyloss from the switch statement - var/maximum_oxyloss = Clamp((100 - blood_percentage) / 2, oxyloss, 100) + var/maximum_oxyloss = clamp((100 - blood_percentage) / 2, oxyloss, 100) if(oxyloss < maximum_oxyloss) oxyloss += round(max(additional_oxyloss, 0)) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index c7427384f0a4..167876cdca96 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -196,7 +196,7 @@ There are several things that need to be remembered: if(facial_hair_style && facial_hair_style.species_allowed && (species.name in facial_hair_style.species_allowed)) var/image/facial_s = new/image("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") facial_s.layer = -FACIAL_LAYER - if(facial_hair_style.do_colouration) + if(facial_hair_style.do_coloration) facial_s.color = list(null, null, null, null, rgb(r_facial, g_facial, b_facial)) overlays_standing[FACIAL_LAYER] = facial_s apply_overlay(FACIAL_LAYER) @@ -206,7 +206,7 @@ There are several things that need to be remembered: if(hair_style && (species.name in hair_style.species_allowed)) var/image/hair_s = new/image("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") hair_s.layer = -HAIR_LAYER - if(hair_style.do_colouration) + if(hair_style.do_coloration) hair_s.color = list(null, null, null, null, rgb(r_hair, g_hair, b_hair)) if(grad_style) diff --git a/code/modules/mob/living/carbon/xenomorph/Abilities.dm b/code/modules/mob/living/carbon/xenomorph/Abilities.dm index dc44260187a7..806b0646590d 100644 --- a/code/modules/mob/living/carbon/xenomorph/Abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/Abilities.dm @@ -187,64 +187,95 @@ plasma_cost = 0 /datum/action/xeno_action/onclick/psychic_whisper/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner - if(X.client.prefs.muted & MUTE_IC) - to_chat(X, SPAN_DANGER("You cannot whisper (muted).")) + var/mob/living/carbon/xenomorph/xeno_player = owner + if(xeno_player.client.prefs.muted & MUTE_IC) + to_chat(xeno_player, SPAN_DANGER("You cannot whisper (muted).")) return - if(!X.check_state(TRUE)) + if(!xeno_player.check_state(TRUE)) return var/list/target_list = list() - for(var/mob/living/possible_target in view(7, X)) - if(possible_target == X || !possible_target.client) continue + for(var/mob/living/carbon/possible_target in view(7, xeno_player)) + if(possible_target == xeno_player || !possible_target.client) continue target_list += possible_target - var/mob/living/M = tgui_input_list(usr, "Target", "Send a Psychic Whisper to whom?", target_list, theme="hive_status") - if(!M) return + var/mob/living/carbon/target_mob = tgui_input_list(usr, "Target", "Send a Psychic Whisper to whom?", target_list, theme="hive_status") + if(!target_mob) return - if(!X.check_state(TRUE)) + if(!xeno_player.check_state(TRUE)) return - var/msg = strip_html(input("Message:", "Psychic Whisper") as text|null) - if(msg) - log_say("PsychicWhisper: [key_name(X)]->[M.key] : [msg]") - if(!istype(M, /mob/living/carbon/xenomorph)) - to_chat(M, SPAN_XENOQUEEN("You hear a strange, alien voice in your head. \"[msg]\"")) + var/whisper = strip_html(input("Message:", "Psychic Whisper") as text|null) + if(whisper) + log_say("PsychicWhisper: [key_name(xeno_player)]->[target_mob.key] : [whisper]") + if(!istype(target_mob, /mob/living/carbon/xenomorph)) + to_chat(target_mob, SPAN_XENOQUEEN("You hear a strange, alien voice in your head. \"[whisper]\"")) else - to_chat(M, SPAN_XENOQUEEN("You hear the voice of [X] resonate in your head. \"[msg]\"")) - to_chat(X, SPAN_XENONOTICE("You said: \"[msg]\" to [M]")) + to_chat(target_mob, SPAN_XENOQUEEN("You hear the voice of [xeno_player] resonate in your head. \"[whisper]\"")) + to_chat(xeno_player, SPAN_XENONOTICE("You said: \"[whisper]\" to [target_mob]")) + + for(var/mob/dead/observer/ghost as anything in GLOB.observer_list) + if(!ghost.client || isnewplayer(ghost)) + continue + if(ghost.client.prefs.toggles_chat & CHAT_GHOSTHIVEMIND) + var/rendered_message + var/xeno_track = "(F)" + var/target_track = "(F)" + rendered_message = SPAN_XENOLEADER("PsychicWhisper: [xeno_player.real_name][xeno_track] to [target_mob.real_name][target_track], '[whisper]'") + ghost.show_message(rendered_message, SHOW_MESSAGE_AUDIBLE) + return ..() +/datum/action/xeno_action/onclick/psychic_whisper/can_use_action() + var/mob/living/carbon/xenomorph/xeno = owner + if(xeno && !xeno.is_mob_incapacitated()) + return TRUE + return FALSE + /datum/action/xeno_action/onclick/psychic_radiance name = "Psychic Radiance" action_icon_state = "psychic_radiance" plasma_cost = 100 /datum/action/xeno_action/onclick/psychic_radiance/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner - if(X.client.prefs.muted & MUTE_IC) - to_chat(X, SPAN_DANGER("You cannot whisper (muted).")) + var/mob/living/carbon/xenomorph/xeno_player = owner + if(xeno_player.client.prefs.muted & MUTE_IC) + to_chat(xeno_player, SPAN_DANGER("You cannot whisper (muted).")) return - if(!X.check_state(TRUE)) + if(!xeno_player.check_state(TRUE)) return var/list/target_list = list() - var/msg = strip_html(input("Message:", "Psychic Radiance") as text|null) - if(!msg || !X.check_state(TRUE)) + var/whisper = strip_html(input("Message:", "Psychic Radiance") as text|null) + if(!whisper || !xeno_player.check_state(TRUE)) return - for(var/mob/living/possible_target in view(12, X)) - if(possible_target == X || !possible_target.client) + for(var/mob/living/possible_target in view(12, xeno_player)) + if(possible_target == xeno_player || !possible_target.client) continue target_list += possible_target if(!istype(possible_target, /mob/living/carbon/xenomorph)) - to_chat(possible_target, SPAN_XENOQUEEN("You hear a strange, alien voice in your head. \"[msg]\"")) + to_chat(possible_target, SPAN_XENOQUEEN("You hear a strange, alien voice in your head. \"[whisper]\"")) else - to_chat(possible_target, SPAN_XENOQUEEN("You hear the voice of [X] resonate in your head. \"[msg]\"")) + to_chat(possible_target, SPAN_XENOQUEEN("You hear the voice of [xeno_player] resonate in your head. \"[whisper]\"")) if(!length(target_list)) return var/targetstring = english_list(target_list) - to_chat(X, SPAN_XENONOTICE("You said: \"[msg]\" to [targetstring]")) - log_say("PsychicRadiance: [key_name(X)]->[targetstring] : [msg]") + to_chat(xeno_player, SPAN_XENONOTICE("You said: \"[whisper]\" to [targetstring]")) + log_say("PsychicRadiance: [key_name(xeno_player)]->[targetstring] : [whisper]") + for (var/mob/dead/observer/ghost as anything in GLOB.observer_list) + if(!ghost.client || isnewplayer(ghost)) + continue + if(ghost.client.prefs.toggles_chat & CHAT_GHOSTHIVEMIND) + var/rendered_message + var/xeno_track = "(F)" + rendered_message = SPAN_XENOLEADER("PsychicRadiance: [xeno_player.real_name][xeno_track] to [targetstring], '[whisper]'") + ghost.show_message(rendered_message, SHOW_MESSAGE_AUDIBLE) return ..() +/datum/action/xeno_action/onclick/psychic_radiance/can_use_action() + var/mob/living/carbon/xenomorph/xeno = owner + if(xeno && !xeno.is_mob_incapacitated()) + return TRUE + return FALSE + /datum/action/xeno_action/activable/queen_give_plasma name = "Give Plasma (400)" action_icon_state = "queen_give_plasma" @@ -323,21 +354,6 @@ return return ..() -/datum/action/xeno_action/onclick/queen_award - name = "Give Royal Jelly (500)" - action_icon_state = "queen_award" - plasma_cost = 500 - -/datum/action/xeno_action/onclick/queen_award/use_ability(atom/target) - var/mob/living/carbon/xenomorph/queen/xeno = owner - if(!xeno.check_state()) - return - if(!xeno.check_plasma(plasma_cost)) - return - if(give_jelly_award(xeno.hive)) - xeno.use_plasma(plasma_cost) - return ..() - /datum/action/xeno_action/onclick/queen_word name = "Word of the Queen (50)" action_icon_state = "queen_word" diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index 9a1dfcb0e9a5..d0890bd3cf37 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -78,6 +78,9 @@ process_growth(delta_time) /obj/item/alien_embryo/proc/process_growth(delta_time) + //Tutorial embryos do not progress. + if(hivenumber == XENO_HIVE_TUTORIAL) + return var/datum/hive_status/hive = GLOB.hive_datum[hivenumber] //Low temperature seriously hampers larva growth (as in, way below livable), so does stasis if(!hive.hardcore) // Cannot progress if the hive has entered hardcore mode. @@ -352,8 +355,9 @@ qdel(larva_embryo) if(!victim.first_xeno) - to_chat(larva_embryo, SPAN_XENOHIGHDANGER("The Queen's will overwhelms our instincts...")) - to_chat(larva_embryo, SPAN_XENOHIGHDANGER("\"[hive.hive_orders]\"")) + if(hive.hive_orders) + to_chat(larva_embryo, SPAN_XENOHIGHDANGER("The Queen's will overwhelms our instincts...")) + to_chat(larva_embryo, SPAN_XENOHIGHDANGER("\"[hive.hive_orders]\"")) log_attack("[key_name(victim)] chestbursted in [get_area_name(larva_embryo)] at X[victim.x], Y[victim.y], Z[victim.z]. The larva was [key_name(larva_embryo)].") //this is so that admins are not spammed with los logs for(var/obj/item/alien_embryo/AE in victim) diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm index cfdf126fe769..df272387f001 100644 --- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm @@ -283,12 +283,14 @@ var/area/hug_area = get_area(src) var/name = hugger ? "[hugger]" : "\a [src]" - if(hug_area) - notify_ghosts(header = "Hugged", message = "[human] has been hugged by [name] at [hug_area]!", source = human, action = NOTIFY_ORBIT) - to_chat(src, SPAN_DEADSAY("[human] has been facehugged by [name] at \the [hug_area]")) - else - notify_ghosts(header = "Hugged", message = "[human] has been hugged by [name]!", source = human, action = NOTIFY_ORBIT) - to_chat(src, SPAN_DEADSAY("[human] has been facehugged by [name]")) + if(hivenumber != XENO_HIVE_TUTORIAL) // prevent hugs from any tutorial huggers from showing up in dchat + if(hug_area) + notify_ghosts(header = "Hugged", message = "[human] has been hugged by [name] at [hug_area]!", source = human, action = NOTIFY_ORBIT) + to_chat(src, SPAN_DEADSAY("[human] has been facehugged by [name] at \the [hug_area]")) + else + notify_ghosts(header = "Hugged", message = "[human] has been hugged by [name]!", source = human, action = NOTIFY_ORBIT) + to_chat(src, SPAN_DEADSAY("[human] has been facehugged by [name]")) + if(hug_area) xeno_message(SPAN_XENOMINORWARNING("We sense that [name] has facehugged a host at \the [hug_area]!"), 1, hivenumber) else @@ -392,6 +394,9 @@ M.stored_huggers++ qdel(src) return + // Tutorial facehuggers never time out + if(hivenumber == XENO_HIVE_TUTORIAL) + return die() /obj/item/clothing/mask/facehugger/proc/die() diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 3f83451a6386..fc25c80e795f 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -461,7 +461,7 @@ time_of_birth = world.time //Minimap - if(z) + if(z && hivenumber != XENO_HIVE_TUTORIAL) INVOKE_NEXT_TICK(src, PROC_REF(add_minimap_marker)) //Sight @@ -1095,3 +1095,12 @@ else //If we somehow use all 999 numbers fallback on 0 nicknumber = 0 + +/proc/setup_xenomorph(mob/living/carbon/xenomorph/target, mob/new_player/new_player, is_late_join = FALSE) + new_player.spawning = TRUE + new_player.close_spawn_windows() + new_player.client.prefs.copy_all_to(target, new_player.job, is_late_join = FALSE) + + if(new_player.mind) + new_player.mind_initialize() + new_player.mind.transfer_to(target, TRUE) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm index cc4e95421ab8..c749b0adb5ba 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm @@ -29,7 +29,7 @@ var/range = base_range + stacks*range_per_stack var/damage = base_damage + stacks*damage_per_stack var/turfs_visited = 0 - for (var/turf/turf in getline2(get_turf(xeno), affected_atom)) + for (var/turf/turf in get_line(get_turf(xeno), affected_atom)) if(turf.density || turf.opacity) break diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm index ef084c9b5b59..bd01376c9f9d 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm @@ -17,6 +17,8 @@ if(xeno.crest_defense) to_chat(xeno, SPAN_XENOWARNING("We lower our crest.")) + xeno.balloon_alert(xeno, "crest lowered") + xeno.ability_speed_modifier += speed_debuff xeno.armor_deflection_buff += armor_buff xeno.mob_size = MOB_SIZE_BIG //knockback immune @@ -24,6 +26,8 @@ xeno.update_icons() else to_chat(xeno, SPAN_XENOWARNING("We raise our crest.")) + xeno.balloon_alert(xeno, "crest raised") + xeno.ability_speed_modifier -= speed_debuff xeno.armor_deflection_buff -= armor_buff xeno.mob_size = MOB_SIZE_XENO //no longer knockback immune @@ -313,4 +317,3 @@ /datum/action/xeno_action/onclick/soak/proc/remove_enrage() owner.remove_filter("steelcrest_enraged") - diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm index 63cc4cb93431..9bb8d2fd46a1 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -78,6 +78,7 @@ playsound(xeno.loc, "alien_resin_build", 25) apply_cooldown() + SEND_SIGNAL(xeno, COMSIG_XENO_PLANT_RESIN_NODE) return ..() /mob/living/carbon/xenomorph/lay_down() @@ -363,6 +364,7 @@ current_aura = pheromone visible_message(SPAN_XENOWARNING("\The [src] begins to emit strange-smelling pheromones."), \ SPAN_XENOWARNING("We begin to emit '[pheromone]' pheromones."), null, 5) + SEND_SIGNAL(src, COMSIG_XENO_START_EMIT_PHEROMONES, pheromone) playsound(loc, "alien_drool", 25) if(isqueen(src) && hive && hive.xeno_leader_list.len && anchored) @@ -481,7 +483,7 @@ // Build our list of target turfs based on if (spray_type == ACID_SPRAY_LINE) - X.do_acid_spray_line(getline2(X, A, include_from_atom = FALSE), spray_effect_type, spray_distance) + X.do_acid_spray_line(get_line(X, A, include_start_atom = FALSE), spray_effect_type, spray_distance) else if (spray_type == ACID_SPRAY_CONE) X.do_acid_spray_cone(get_turf(A), spray_effect_type, spray_distance) @@ -927,7 +929,7 @@ if(distance > 2) return FALSE - var/list/turf/path = getline2(stabbing_xeno, targetted_atom, include_from_atom = FALSE) + var/list/turf/path = get_line(stabbing_xeno, targetted_atom, include_start_atom = FALSE) for(var/turf/path_turf as anything in path) if(path_turf.density) to_chat(stabbing_xeno, SPAN_WARNING("There's something blocking our strike!")) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm index 4ec301a17819..24aa94727ca9 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm @@ -189,7 +189,7 @@ if(distance > 2) return - var/list/turf/path = getline2(xeno, hit_target, include_from_atom = FALSE) + var/list/turf/path = get_line(xeno, hit_target, include_start_atom = FALSE) for(var/turf/path_turf as anything in path) if(path_turf.density) to_chat(xeno, SPAN_WARNING("There's something blocking us from striking!")) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm index 966e9ce84309..5c7ea03ee7b2 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm @@ -13,7 +13,7 @@ return //X = xeno user, A = target atom - var/list/turf/target_turfs = getline2(source_xeno, targetted_atom, include_from_atom = FALSE) + var/list/turf/target_turfs = get_line(source_xeno, targetted_atom, include_start_atom = FALSE) var/length_of_line = LAZYLEN(target_turfs) if(length_of_line > 3) target_turfs = target_turfs.Copy(1, 4) @@ -738,7 +738,9 @@ if (!X.check_state() || X.action_busy) return - if (!action_cooldown_check() && check_and_use_plasma_owner()) + if (!action_cooldown_check()) + return + if (!check_and_use_plasma_owner()) return var/turf/current_turf = get_turf(X) @@ -750,8 +752,6 @@ to_chat(X, SPAN_XENODANGER("We cancel our acid ball.")) return - if (!action_cooldown_check()) - return apply_cooldown() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm index 50fa9fd92b2c..d245449fa2cf 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_abilities.dm @@ -1,8 +1,3 @@ -/datum/action/xeno_action/onclick/deevolve - name = "De-Evolve a Xenomorph (500)" - action_icon_state = "xeno_deevolve" - plasma_cost = 500 - /datum/action/xeno_action/onclick/remove_eggsac name = "Remove Eggsac" action_icon_state = "grow_ovipositor" @@ -45,23 +40,10 @@ var/node_plant_plasma_cost = 300 var/turf_build_cooldown = 7 SECONDS -/datum/action/xeno_action/onclick/give_evo_points - name = "Trade Larva for Evolution Points (100)" - action_icon_state = "queen_give_evo_points" - plasma_cost = 100 - xeno_cooldown = 60 SECONDS - var/evo_points_per_larva = 250 - var/required_larva = 3 - -/datum/action/xeno_action/onclick/banish - name = "Banish a Xenomorph (500)" - action_icon_state = "xeno_banish" - plasma_cost = 500 - -/datum/action/xeno_action/onclick/readmit - name = "Readmit a Xenomorph (100)" +/datum/action/xeno_action/onclick/manage_hive + name = "Manage The Hive" action_icon_state = "xeno_readmit" - plasma_cost = 100 + plasma_cost = 0 /datum/action/xeno_action/activable/secrete_resin/remote/queen name = "Projected Resin (100)" diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm index 917a7b1c9af7..1f37651b2c8e 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm @@ -1,6 +1,7 @@ // devolve a xeno - lots of old, vaguely shitty code here -/datum/action/xeno_action/onclick/deevolve/use_ability(atom/Atom) +/datum/action/xeno_action/onclick/manage_hive/proc/de_evolve_other() var/mob/living/carbon/xenomorph/queen/user_xeno = owner + var/plasma_cost_devolve = 500 if(!user_xeno.check_state()) return if(!user_xeno.observed_xeno) @@ -8,7 +9,7 @@ return var/mob/living/carbon/xenomorph/target_xeno = user_xeno.observed_xeno - if(!user_xeno.check_plasma(plasma_cost)) + if(!user_xeno.check_plasma(plasma_cost_devolve)) return if(target_xeno.hivenumber != user_xeno.hivenumber) @@ -130,7 +131,7 @@ SSround_recording.recorder.stop_tracking(target_xeno) SSround_recording.recorder.track_player(new_xeno) qdel(target_xeno) - return ..() + return /datum/action/xeno_action/onclick/remove_eggsac/use_ability(atom/A) var/mob/living/carbon/xenomorph/queen/X = owner @@ -292,12 +293,15 @@ to_chat(X, SPAN_XENONOTICE("You channel your plasma to heal your sisters' wounds around this area.")) return ..() -/datum/action/xeno_action/onclick/give_evo_points/use_ability(atom/Atom) +/datum/action/xeno_action/onclick/manage_hive/proc/give_evo_points() var/mob/living/carbon/xenomorph/queen/user_xeno = owner + var/plasma_cost_givepoints = 100 + + if(!user_xeno.check_state()) return - if(!user_xeno.check_plasma(plasma_cost)) + if(!user_xeno.check_plasma(plasma_cost_givepoints)) return if(world.time < SSticker.mode.round_time_lobby + SHUTTLE_TIME_LOCK) @@ -308,7 +312,8 @@ if(!choice) return - + var/evo_points_per_larva = 250 + var/required_larva = 1 var/mob/living/carbon/xenomorph/target_xeno for(var/mob/living/carbon/xenomorph/xeno in user_xeno.hive.totalXenos) @@ -351,14 +356,45 @@ target_xeno.evolution_stored += evo_points_per_larva user_xeno.hive.stored_larva-- - return ..() + return + + + +/datum/action/xeno_action/onclick/manage_hive/proc/give_jelly_reward() + var/mob/living/carbon/xenomorph/queen/xeno = owner + var/plasma_cost_jelly = 500 + if(!xeno.check_state()) + return + if(!xeno.check_plasma(plasma_cost_jelly)) + return + if(give_jelly_award(xeno.hive)) + xeno.use_plasma(plasma_cost_jelly) + return +/datum/action/xeno_action/onclick/manage_hive/use_ability(atom/Atom) + var/mob/living/carbon/xenomorph/queen/queenbanish = owner + plasma_cost = 0 -/datum/action/xeno_action/onclick/banish/use_ability(atom/Atom) + var/choice = tgui_input_list(queenbanish, "Manage The Hive", "Hive Management", list("Banish (500)", "Re-Admit (100)", "De-evolve (500)", "Reward Jelly (500)", "Exchange larva for evolution (100)",), theme="hive_status") + switch(choice) + if("Banish (500)") + banish() + if("Re-Admit (100)") + readmit() + if("De-evolve (500)") + de_evolve_other() + if("Reward Jelly (500)") + give_jelly_reward(queenbanish.hive) + if("Exchange larva for evolution (100)") + give_evo_points() + + +/datum/action/xeno_action/onclick/manage_hive/proc/banish() var/mob/living/carbon/xenomorph/queen/user_xeno = owner + var/plasma_cost_banish = 500 if(!user_xeno.check_state()) return - if(!user_xeno.check_plasma(plasma_cost)) + if(!user_xeno.check_plasma(plasma_cost_banish)) return var/choice = tgui_input_list(user_xeno, "Choose a xenomorph to banish:", "Banish", user_xeno.hive.totalXenos, theme="hive_status") @@ -399,7 +435,7 @@ to_chat(user_xeno, SPAN_XENOWARNING("You must provide a reason for banishing [target_xeno].")) return - if(!user_xeno.check_state() || !check_and_use_plasma_owner(plasma_cost) || target_xeno.health < 0) + if(!user_xeno.check_state() || !check_and_use_plasma_owner(plasma_cost_banish) || target_xeno.health < 0) return // Let everyone know they were banished @@ -413,20 +449,21 @@ addtimer(CALLBACK(src, PROC_REF(remove_banish), user_xeno.hive, target_xeno.name), 30 MINUTES) message_admins("[key_name_admin(user_xeno)] has banished [key_name_admin(target_xeno)]. Reason: [reason]") - return ..() + return -/datum/action/xeno_action/onclick/banish/proc/remove_banish(datum/hive_status/hive, name) +/datum/action/xeno_action/proc/remove_banish(datum/hive_status/hive, name) hive.banished_ckeys.Remove(name) // Readmission = un-banish -/datum/action/xeno_action/onclick/readmit/use_ability(atom/Atom) +/datum/action/xeno_action/onclick/manage_hive/proc/readmit() var/mob/living/carbon/xenomorph/queen/user_xeno = owner + var/plasma_cost_readmit = 100 if(!user_xeno.check_state()) return - if(!user_xeno.check_plasma(plasma_cost)) + if(!user_xeno.check_plasma(plasma_cost_readmit)) return var/choice = tgui_input_list(user_xeno, "Choose a xenomorph to readmit:", "Re-admit", user_xeno.hive.banished_ckeys, theme="hive_status") @@ -470,7 +507,7 @@ target_xeno.lock_evolve = FALSE user_xeno.hive.banished_ckeys.Remove(banished_name) - return ..() + return /datum/action/xeno_action/onclick/eye name = "Enter Eye Form" diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm index 3ec07014b2d1..daad0362e91e 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm @@ -366,9 +366,9 @@ if (behavior.rage == 0) to_chat(xeno, SPAN_XENODANGER("We cannot eviscerate when we have 0 rage!")) return - damage = damage_at_rage_levels[Clamp(behavior.rage, 1, behavior.max_rage)] - range = range_at_rage_levels[Clamp(behavior.rage, 1, behavior.max_rage)] - windup_reduction = windup_reduction_at_rage_levels[Clamp(behavior.rage, 1, behavior.max_rage)] + damage = damage_at_rage_levels[clamp(behavior.rage, 1, behavior.max_rage)] + range = range_at_rage_levels[clamp(behavior.rage, 1, behavior.max_rage)] + windup_reduction = windup_reduction_at_rage_levels[clamp(behavior.rage, 1, behavior.max_rage)] behavior.decrement_rage(behavior.rage) apply_cooldown() @@ -420,7 +420,7 @@ // This is the heal if(!xeno.on_fire) - xeno.gain_health(Clamp(valid_count * lifesteal_per_marine, 0, max_lifesteal)) + xeno.gain_health(clamp(valid_count * lifesteal_per_marine, 0, max_lifesteal)) REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Eviscerate")) xeno.anchored = FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm b/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm index ca15c6e37306..80cf5c1e37ac 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm @@ -218,7 +218,7 @@ /* Debug log disabled due to our historical inability at doing anything meaningful about it And to make room for ones that matter more in regard to our ability to fix. - The whole of ability code is fucked up, the 'SHOULD NEVER BE OVERRIDEN' note above is + The whole of ability code is fucked up, the 'SHOULD NEVER BE OVERRIDDEN' note above is completely ignored as about 20 procs override it ALREADY... This is broken beyond repair and should just be reimplemented log_debug("Xeno action [src] tried to go on cooldown while already on cooldown.") @@ -231,7 +231,7 @@ if(!cooldown_to_apply) return - cooldown_to_apply = cooldown_to_apply * (1 - Clamp(X.cooldown_reduction_percentage, 0, 0.5)) + cooldown_to_apply = cooldown_to_apply * (1 - clamp(X.cooldown_reduction_percentage, 0, 0.5)) // Add a unique timer cooldown_timer_id = addtimer(CALLBACK(src, PROC_REF(on_cooldown_end)), cooldown_to_apply, TIMER_UNIQUE|TIMER_STOPPABLE) @@ -253,7 +253,7 @@ var/mob/living/carbon/xenomorph/X = owner // Note: no check to see if we're already on CD. we just flat override whatever's there - cooldown_duration = cooldown_duration * (1 - Clamp(X.cooldown_reduction_percentage, 0, 0.5)) + cooldown_duration = cooldown_duration * (1 - clamp(X.cooldown_reduction_percentage, 0, 0.5)) cooldown_timer_id = addtimer(CALLBACK(src, PROC_REF(on_cooldown_end)), cooldown_duration, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) current_cooldown_duration = cooldown_duration current_cooldown_start_time = world.time @@ -379,7 +379,7 @@ if(A.z != M.z) return FALSE - var/list/turf/path = getline2(M, A, include_from_atom = FALSE) + var/list/turf/path = get_line(M, A, include_start_atom = FALSE) var/distance = 0 for(var/turf/T in path) if(distance >= max_distance) diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index d57df232cda4..2aefff19c684 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -209,6 +209,7 @@ KnockDown(strength) // Purely for knockdown visuals. All the heavy lifting is done by Stun M.visible_message(SPAN_DANGER("[M] tackles down [src]!"), \ SPAN_DANGER("We tackle down [src]!"), null, 5, CHAT_TYPE_XENO_COMBAT) + SEND_SIGNAL(src, COMSIG_MOB_TACKLED_DOWN, M) else playsound(loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1) if (body_position == LYING_DOWN) @@ -308,7 +309,7 @@ return FALSE // leave the dead alone //This proc is here to prevent Xenomorphs from picking up objects (default attack_hand behaviour) -//Note that this is overriden by every proc concerning a child of obj unless inherited +//Note that this is overridden by every proc concerning a child of obj unless inherited /obj/item/attack_alien(mob/living/carbon/xenomorph/M) return diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm b/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm index 25212718527b..7ce3a8750568 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm @@ -158,6 +158,9 @@ /mob/living/carbon/xenomorph/facehugger/proc/handle_hug(mob/living/carbon/human/human) var/obj/item/clothing/mask/facehugger/hugger = new /obj/item/clothing/mask/facehugger(loc, hivenumber) var/did_hug = hugger.attach(human, TRUE, 1, src) + if(!did_hug) + qdel(hugger) + return if(client) client.player_data?.adjust_stat(PLAYER_STAT_FACEHUGS, STAT_CATEGORY_XENO, 1) qdel(src) @@ -217,7 +220,13 @@ return /mob/living/carbon/xenomorph/facehugger/emote(act, m_type, message, intentional, force_silence) + // Custom emote + if(act == "me") + return ..() + + // Otherwise, ""roar""! playsound(loc, "alien_roar_larva", 15) + return TRUE /mob/living/carbon/xenomorph/facehugger/get_status_tab_items() . = ..() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm b/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm index 6d5c6699b929..f1c77e7fb757 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm @@ -157,7 +157,13 @@ return larva /mob/living/carbon/xenomorph/larva/emote(act, m_type, message, intentional, force_silence) + // Custom emote + if(act == "me") + return ..() + + // Otherwise, ""roar""! playsound(loc, "alien_roar_larva", 15) + return TRUE /mob/living/carbon/xenomorph/larva/is_xeno_grabbable() return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index 6d082b327b48..2e5c6a9112a3 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -305,10 +305,8 @@ /datum/action/xeno_action/onclick/choose_resin/queen_macro, //fourth macro /datum/action/xeno_action/activable/secrete_resin/queen_macro, //fifth macro /datum/action/xeno_action/onclick/grow_ovipositor, - /datum/action/xeno_action/onclick/banish, - /datum/action/xeno_action/onclick/readmit, - /datum/action/xeno_action/onclick/queen_award, /datum/action/xeno_action/activable/info_marker/queen, + /datum/action/xeno_action/onclick/manage_hive, ) inherent_verbs = list( @@ -338,13 +336,12 @@ /datum/action/xeno_action/onclick/choose_resin/queen_macro, //fourth macro /datum/action/xeno_action/activable/secrete_resin/queen_macro, //fifth macro /datum/action/xeno_action/onclick/grow_ovipositor, - /datum/action/xeno_action/onclick/banish, - /datum/action/xeno_action/onclick/readmit, - /datum/action/xeno_action/onclick/queen_award, + /datum/action/xeno_action/onclick/manage_hive, /datum/action/xeno_action/activable/info_marker/queen, /datum/action/xeno_action/onclick/screech, //custom macro, Screech /datum/action/xeno_action/activable/xeno_spit/queen_macro, //third macro - /datum/action/xeno_action/onclick/shift_spits, //second macro + /datum/action/xeno_action/onclick/shift_spits, + //second macro ) // Abilities they get when they've successfully aged. @@ -541,22 +538,6 @@ var/time_left = time2text(timeleft(queen_age_timer_id) + 1 MINUTES, "mm") // We add a minute so that it basically ceilings the value. . += "Maturity: [time_left == 1? "[time_left] minute" : "[time_left] minutes"] remaining" -//Custom bump for crushers. This overwrites normal bumpcode from carbon.dm -/mob/living/carbon/xenomorph/queen/Collide(atom/A) - set waitfor = 0 - - if(stat || !istype(A) || A == src) - return FALSE - - if(now_pushing) - return FALSE//Just a plain ol turf, let's return. - - var/turf/T = get_step(src, dir) - if(!T || !get_step_to(src, T)) //If it still exists, try to push it. - return ..() - - return TRUE - /mob/living/carbon/xenomorph/queen/proc/set_orders() set category = "Alien" set name = "Set Hive Orders (50)" @@ -590,7 +571,7 @@ to_chat(src, SPAN_DANGER("You cannot send Announcements (muted).")) return if(health <= 0) - to_chat(src, SPAN_WARNING("You can't do that while unconcious.")) + to_chat(src, SPAN_WARNING("You can't do that while unconscious.")) return FALSE if(!check_plasma(50)) return FALSE @@ -839,19 +820,15 @@ /datum/action/xeno_action/onclick/psychic_whisper, /datum/action/xeno_action/onclick/psychic_radiance, /datum/action/xeno_action/onclick/choose_resin/queen_macro, //fourth macro - /datum/action/xeno_action/onclick/banish, - /datum/action/xeno_action/onclick/readmit, - /datum/action/xeno_action/onclick/queen_award, + /datum/action/xeno_action/onclick/manage_hive, /datum/action/xeno_action/activable/info_marker/queen, // Screech is typically new for this list, but its possible they never ovi and it then is forced here: /datum/action/xeno_action/onclick/screech, //custom macro, Screech // These are new and their arrangement matters: /datum/action/xeno_action/onclick/remove_eggsac, - /datum/action/xeno_action/onclick/give_evo_points, /datum/action/xeno_action/onclick/set_xeno_lead, /datum/action/xeno_action/activable/queen_heal, //first macro /datum/action/xeno_action/activable/queen_give_plasma, //second macro - /datum/action/xeno_action/onclick/deevolve, /datum/action/xeno_action/onclick/queen_order, /datum/action/xeno_action/activable/expand_weeds, //third macro /datum/action/xeno_action/activable/secrete_resin/remote/queen, //fifth macro diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm b/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm index 04996af8f8db..b19978a33766 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm @@ -161,7 +161,7 @@ emote_cooldown = world.time + 5 SECONDS addtimer(CALLBACK(src, PROC_REF(lifesteal_lock)), lifesteal_lock_duration/2) - bound_xeno.gain_health(Clamp(final_lifesteal / 100 * (bound_xeno.maxHealth - bound_xeno.health), 20, 40)) + bound_xeno.gain_health(clamp(final_lifesteal / 100 * (bound_xeno.maxHealth - bound_xeno.health), 20, 40)) /datum/behavior_delegate/warrior_base/proc/lifesteal_lock() bound_xeno.remove_filter("empower_rage") diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index 624c9df25f3e..f399dbcb59cd 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -299,7 +299,7 @@ . = ..() switch(fire.fire_variant) if(FIRE_VARIANT_TYPE_B) - if(!armor_deflection_debuff) //Only adds another reset timer if the debuff is currently on 0, so at the start or after a reset has recently occured. + if(!armor_deflection_debuff) //Only adds another reset timer if the debuff is currently on 0, so at the start or after a reset has recently occurred. reset_xeno_armor_debuff_after_time(src, delta_time*10) fire.type_b_debuff_xeno_armor(src) //Always reapplies debuff each time to minimize gap. diff --git a/code/modules/mob/living/carbon/xenomorph/egg_item.dm b/code/modules/mob/living/carbon/xenomorph/egg_item.dm index 6f00ae1798e9..1bc41b881129 100644 --- a/code/modules/mob/living/carbon/xenomorph/egg_item.dm +++ b/code/modules/mob/living/carbon/xenomorph/egg_item.dm @@ -113,7 +113,7 @@ to_chat(user, SPAN_XENOWARNING("[src] can only be planted on [lowertext(hive.prefix)]hive weeds.")) return - if(istype(get_area(T), /area/vehicle)) + if(istype(get_area(T), /area/interior)) to_chat(user, SPAN_XENOWARNING("[src] cannot be planted inside a vehicle.")) return diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status.dm b/code/modules/mob/living/carbon/xenomorph/hive_status.dm index fb863c78eb58..bb67eaa055a8 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_status.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_status.dm @@ -71,6 +71,8 @@ /// If hit limit of larva from pylons var/hit_larva_pylon_limit = FALSE + var/see_humans_on_tacmap = FALSE + var/list/hive_inherant_traits // Cultist Info @@ -735,7 +737,7 @@ if(is_mainship_level(turf?.z)) shipside_humans_weighted_count += GLOB.RoleAuthority.calculate_role_weight(job) hijack_burrowed_surge = TRUE - hijack_burrowed_left = max(n_ceil(shipside_humans_weighted_count * 0.5) - xenos_count, 5) + hijack_burrowed_left = max(Ceiling(shipside_humans_weighted_count * 0.5) - xenos_count, 5) hivecore_cooldown = FALSE xeno_message(SPAN_XENOBOLDNOTICE("The weeds have recovered! A new hive core can be built!"),3,hivenumber) @@ -777,7 +779,12 @@ spawning_area = pick(totalXenos) // FUCK IT JUST GO ANYWHERE var/list/turf_list for(var/turf/open/open_turf in orange(3, spawning_area)) + if(istype(open_turf, /turf/open/space)) + continue LAZYADD(turf_list, open_turf) + // just on the off-chance + if(!LAZYLEN(turf_list)) + return FALSE var/turf/open/spawning_turf = pick(turf_list) var/mob/living/carbon/xenomorph/larva/new_xeno = spawn_hivenumber_larva(spawning_turf, hivenumber) @@ -1078,6 +1085,29 @@ /datum/hive_status/forsaken/can_delay_round_end(mob/living/carbon/xenomorph/xeno) return FALSE +/datum/hive_status/tutorial + name = "Tutorial Hive" + reporting_id = "tutorial" + hivenumber = XENO_HIVE_TUTORIAL + prefix = "Inquisitive " + latejoin_burrowed = FALSE + + dynamic_evolution = FALSE + allow_queen_evolve = TRUE + evolution_without_ovipositor = FALSE + allow_no_queen_actions = TRUE + + ///Can have many tutorials going at once. + hive_structures_limit = list( + XENO_STRUCTURE_CORE = 999, + XENO_STRUCTURE_CLUSTER = 999, + XENO_STRUCTURE_EGGMORPH = 999, + XENO_STRUCTURE_RECOVERY = 999, + ) + +/datum/hive_status/tutorial/can_delay_round_end(mob/living/carbon/xenomorph/xeno) + return FALSE + /datum/hive_status/yautja name = "Hellhound Pack" reporting_id = "hellhounds" diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index aab61776118d..d5ca8a41fa39 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -391,75 +391,52 @@ Make sure their actual health updates immediately.*/ hud_set_plasma() //update plasma amount on the plasma mob_hud /mob/living/carbon/xenomorph/proc/queen_locator() - if(!hud_used || !hud_used.locate_leader) + if(!hud_used?.locate_leader) return - var/atom/movable/screen/queen_locator/QL = hud_used.locate_leader - if(!loc) - QL.icon_state = "trackoff" + var/atom/movable/screen/queen_locator/locator = hud_used.locate_leader + if(!loc || !hive) + locator.reset_tracking() return var/atom/tracking_atom - switch(QL.track_state[1]) + switch(locator.tracker_type) if(TRACKER_QUEEN) - if(!hive || !hive.living_xeno_queen) - QL.icon_state = "trackoff" - return tracking_atom = hive.living_xeno_queen if(TRACKER_HIVE) - if(!hive || !hive.hive_location) - QL.icon_state = "trackoff" - return tracking_atom = hive.hive_location if(TRACKER_LEADER) - if(!QL.track_state[2]) - QL.icon_state = "trackoff" - return - - var/leader_tracker = QL.track_state[2] - - if(!hive || !hive.xeno_leader_list) - QL.icon_state = "trackoff" - return - if(leader_tracker > hive.xeno_leader_list.len) - QL.icon_state = "trackoff" - return - if(!hive.xeno_leader_list[leader_tracker]) - QL.icon_state = "trackoff" - return - tracking_atom = hive.xeno_leader_list[leader_tracker] + var/atom/leader = locator.tracking_ref?.resolve() + // If the leader exists, and is actually in the leader list. + if(leader && (leader in hive.xeno_leader_list)) + tracking_atom = leader if(TRACKER_TUNNEL) - if(!QL.track_state[2]) - QL.icon_state = "trackoff" - return + tracking_atom = locator.tracking_ref?.resolve() - var/tunnel_tracker = QL.track_state[2] + // If the atom can't be found/has been deleted. + if(!tracking_atom) + var/already_tracking_queen = (locator.tracker_type == TRACKER_QUEEN) - if(!hive || !hive.tunnels) - QL.icon_state = "trackoff" - return - if(tunnel_tracker > hive.tunnels.len) - QL.icon_state = "trackoff" - return - if(!hive.tunnels[tunnel_tracker]) - QL.icon_state = "trackoff" - return - tracking_atom = hive.tunnels[tunnel_tracker] + // Reset the tracker back to the queen. + locator.reset_tracking() - if(!tracking_atom) - QL.icon_state = "trackoff" + // If it wasn't the queen that couldn't be found above, try again with her as the target. + // This is just to avoid the tracker going blank for one life tick. + // (There's no risk of an infinite loop here since `locator.tracker_type` just got set to `TRACKER_QUEEN`.) + if(!already_tracking_queen) + queen_locator() return if(tracking_atom.loc.z != loc.z || get_dist(src, tracking_atom) < 1 || src == tracking_atom) - QL.icon_state = "trackondirect" + locator.icon_state = "trackondirect" else - var/area/A = get_area(loc) - var/area/QA = get_area(tracking_atom.loc) - if(A.fake_zlevel == QA.fake_zlevel) - QL.setDir(Get_Compass_Dir(src, tracking_atom)) - QL.icon_state = "trackon" + var/area/our_area = get_area(loc) + var/area/target_area = get_area(tracking_atom.loc) + if(our_area.fake_zlevel == target_area.fake_zlevel) + locator.setDir(Get_Compass_Dir(src, tracking_atom)) + locator.icon_state = "trackon" else - QL.icon_state = "trackondirect" + locator.icon_state = "trackondirect" /mob/living/carbon/xenomorph/proc/mark_locator() if(!hud_used || !hud_used.locate_marker || !tracked_marker.loc || !loc) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm index 1fc746829acd..17b5cf62052c 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm @@ -346,8 +346,8 @@ take_overall_armored_damage(charger_ability.momentum * momentum_mult, ARMOR_MELEE, BRUTE, 60, 13) // Giving AP because this spreads damage out and then applies armor to them apply_armoured_damage(charger_ability.momentum * momentum_mult/4, ARMOR_MELEE, BRUTE,"chest") xeno.visible_message( - SPAN_DANGER("[xeno] rams \the [src]!"), - SPAN_XENODANGER("You ram \the [src]!") + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") ) var/knockdown = 1 if(charger_ability.momentum == charger_ability.max_momentum) @@ -417,8 +417,8 @@ momentum_mult = 8 take_overall_damage(charger_ability.momentum * momentum_mult) xeno.visible_message( - SPAN_DANGER("[xeno] rams \the [src]!"), - SPAN_XENODANGER("You ram \the [src]!") + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") ) var/knockdown = 1 if(charger_ability.momentum == charger_ability.max_momentum) @@ -470,8 +470,8 @@ var/datum/effect_system/spark_spread/sparks = new sparks.set_up(5, 1, loc) xeno.visible_message( - SPAN_DANGER("[xeno] rams \the [src]!"), - SPAN_XENODANGER("You ram \the [src]!") + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") ) if(health <= CHARGER_DAMAGE_SENTRY) new /obj/effect/spawner/gibspawner/robot(src.loc) // if we goin down ,we going down with a show. @@ -488,37 +488,78 @@ // Marine MGs /obj/structure/machinery/m56d_hmg/handle_charge_collision(mob/living/carbon/xenomorph/xeno, datum/action/xeno_action/onclick/charger_charge/charger_ability) - if(charger_ability.momentum > CCA_MOMENTUM_LOSS_MIN) - CrusherImpact() - var/datum/effect_system/spark_spread/sparks = new - update_health(charger_ability.momentum * 15) - if(operator) operator.emote("pain") - sparks.set_up(1, 1, loc) - sparks.start() - xeno.visible_message( - SPAN_DANGER("[xeno] rams \the [src]!"), - SPAN_XENODANGER("You ram \the [src]!") - ) - playsound(src, "sound/effects/metal_crash.ogg", 25, TRUE) - if(istype(src,/obj/structure/machinery/m56d_hmg/auto)) // we don't want to charge it to the point of downgrading it (: - var/obj/item/device/m2c_gun/HMG = new(src.loc) - HMG.health = src.health - transfer_label_component(HMG) - HMG.rounds = src.rounds //Inherent the amount of ammo we had. - HMG.update_icon() - qdel(src) - else - var/obj/item/device/m56d_gun/HMG = new(src.loc) // note: find a better way than a copy pasted else statement - HMG.health = src.health - transfer_label_component(HMG) - HMG.rounds = src.rounds //Inherent the amount of ammo we had. - HMG.has_mount = TRUE - HMG.update_icon() - qdel(src) //Now we clean up the constructed gun. + if(charger_ability.momentum <= CCA_MOMENTUM_LOSS_MIN) + charger_ability.stop_momentum() + return + + CrusherImpact() + update_health(charger_ability.momentum * 15) + var/datum/effect_system/spark_spread/sparks = new + sparks.set_up(1, 1, loc) + sparks.start() + xeno.visible_message( + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") + ) + playsound(src, "sound/effects/metal_crash.ogg", 25, TRUE) + if(QDELETED(src)) + // The crash destroyed it charger_ability.lose_momentum(CCA_MOMENTUM_LOSS_MIN) //Lose one turfs worth of speed return XENO_CHARGE_TRY_MOVE - charger_ability.stop_momentum() + + // Undeploy + if(istype(src, /obj/structure/machinery/m56d_hmg/auto)) // we don't want to charge it to the point of downgrading it (: + var/obj/item/device/m2c_gun/HMG = new(loc) + HMG.health = health + transfer_label_component(HMG) + HMG.rounds = rounds + HMG.update_icon() + qdel(src) + else + var/obj/item/device/m56d_gun/HMG = new(loc) + HMG.health = health + transfer_label_component(HMG) + HMG.rounds = rounds + HMG.has_mount = TRUE + HMG.update_icon() + qdel(src) //Now we clean up the constructed gun. + +/obj/structure/machinery/m56d_post/handle_charge_collision(mob/living/carbon/xenomorph/xeno, datum/action/xeno_action/onclick/charger_charge/charger_ability) + if(charger_ability.momentum <= CCA_MOMENTUM_LOSS_MIN) + charger_ability.stop_momentum() + return + + update_health(charger_ability.momentum * 15) + var/datum/effect_system/spark_spread/sparks = new + sparks.set_up(1, 1, loc) + sparks.start() + xeno.visible_message( + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") + ) + playsound(src, "sound/effects/metal_crash.ogg", 25, TRUE) + + if(QDELETED(src)) + // The crash destroyed it + charger_ability.lose_momentum(CCA_MOMENTUM_LOSS_MIN) //Lose one turfs worth of speed + return XENO_CHARGE_TRY_MOVE + + // Undeploy + if(gun_mounted) + var/obj/item/device/m56d_gun/HMG = new(loc) + transfer_label_component(HMG) + HMG.rounds = gun_rounds + HMG.has_mount = TRUE + if(gun_health) + HMG.health = gun_health + HMG.update_icon() + qdel(src) + else + var/obj/item/device/m56d_post/post = new(loc) + post.health = health + transfer_label_component(post) + qdel(src) // Prison Windows @@ -549,8 +590,8 @@ charger_ability.stop_momentum() return xeno.visible_message( - SPAN_DANGER("[xeno] rams \the [src]!"), - SPAN_XENODANGER("You ram \the [src]!") + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") ) playsound(src, "sound/effects/metalhit.ogg", 25, TRUE) qdel(src) @@ -569,8 +610,8 @@ charger_ability.stop_momentum() return xeno.visible_message( - SPAN_DANGER("[xeno] rams \the [src]!"), - SPAN_XENODANGER("You ram \the [src]!") + SPAN_DANGER("[xeno] rams [src]!"), + SPAN_XENODANGER("You ram [src]!") ) playsound(src, "sound/effects/metalhit.ogg", 25, TRUE) qdel(src) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm index 4d47ac333a23..da354b465331 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm @@ -1,6 +1,6 @@ /datum/xeno_mutator/gardener name = "STRAIN: Drone - Gardener" - description = "You trade your choice of resin secretions, your corrosive acid, and your ability to transfer plasma for a tiny bit of extra health regeneration on weeds and several new abilities, including the ability to plant hardier weeds, temporarily reinforce structures with your plasma, and to plant up to six potent resin fruits for your sisters by secreting your vital fluids at the cost of a bit of your health for each fruit you shape." + description = "You trade your choice of resin secretions, your corrosive acid, and your ability to transfer plasma for a tiny bit of extra health regeneration on weeds and several new abilities, including the ability to plant hardier weeds, temporarily reinforce structures with your plasma, and to plant up to six potent resin fruits for your sisters by secreting your vital fluids at the cost of a bit of your health for each fruit you shape. You can use Resin Surge to speed up the growth of your fruits." flavor_description = "The glory of gardening: hands in the weeds, head in the dark, heart with resin." cost = MUTATOR_COST_EXPENSIVE individual_only = TRUE @@ -16,6 +16,7 @@ /datum/action/xeno_action/activable/resin_surge, // third macro /datum/action/xeno_action/onclick/plant_resin_fruit/greater, // fourth macro /datum/action/xeno_action/onclick/change_fruit, + /datum/action/xeno_action/activable/transfer_plasma, ) keystone = TRUE behavior_delegate_type = /datum/behavior_delegate/drone_gardener @@ -92,7 +93,7 @@ to_chat(xeno, SPAN_XENOWARNING("This location is too close to a resin hole!")) return - if(locate(/obj/effect/alien/resin/fruit) in range(1, target_turf)) + if(locate(/obj/effect/alien/resin/fruit) in target_turf) to_chat(xeno, SPAN_XENOWARNING("This location is too close to another fruit!")) return diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm index 1db9ad6550e2..4328058c8a8e 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm @@ -88,7 +88,7 @@ if (internal_hitpoints >= internal_hitpoints_max) return to_chat(bound_xeno, SPAN_XENODANGER("You feel your internal health reserves increase!")) - internal_hitpoints = Clamp(internal_hitpoints + amount, 0, internal_hitpoints_max) + internal_hitpoints = clamp(internal_hitpoints + amount, 0, internal_hitpoints_max) /datum/behavior_delegate/praetorian_warden/proc/remove_internal_hitpoints(amount) add_internal_hitpoints(-1*amount) diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 65795634a27c..55995ec0b264 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -301,7 +301,7 @@ return var/health_threshold - health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks + health_threshold = max(Ceiling((health * 4) / (maxHealth)), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) wound_icon_holder.icon_state = "none" diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 7c4eff0e2c15..6c10df5987d0 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -97,6 +97,8 @@ EyeBlur(effect) if(DROWSY) drowsyness = max(drowsyness, effect) + if(ROOT) + Root(effect) updatehealth() return TRUE @@ -130,6 +132,8 @@ AdjustEyeBlur(effect) if(DROWSY) drowsyness = POSITIVE(drowsyness + effect) + if(ROOT) + AdjustRoot(effect) updatehealth() return TRUE @@ -160,15 +164,26 @@ SetEyeBlur(effect) if(DROWSY) drowsyness = POSITIVE(effect) + if(ROOT) + SetRoot(effect) updatehealth() return TRUE -/mob/living/proc/apply_effects(stun = 0, weaken = 0, paralyze = 0, irradiate = 0, stutter = 0, eyeblur = 0, drowsy = 0, agony = 0) - if(stun) apply_effect(stun, STUN) - if(weaken) apply_effect(weaken, WEAKEN) - if(paralyze) apply_effect(paralyze, PARALYZE) - if(stutter) apply_effect(stutter, STUTTER) - if(eyeblur) apply_effect(eyeblur, EYE_BLUR) - if(drowsy) apply_effect(drowsy, DROWSY) - if(agony) apply_effect(agony, AGONY) +/mob/living/proc/apply_effects(stun = 0, weaken = 0, paralyze = 0, irradiate = 0, stutter = 0, eyeblur = 0, drowsy = 0, agony = 0, root = 0) + if(stun) + apply_effect(stun, STUN) + if(weaken) + apply_effect(weaken, WEAKEN) + if(paralyze) + apply_effect(paralyze, PARALYZE) + if(stutter) + apply_effect(stutter, STUTTER) + if(eyeblur) + apply_effect(eyeblur, EYE_BLUR) + if(drowsy) + apply_effect(drowsy, DROWSY) + if(agony) + apply_effect(agony, AGONY) + if(root) + apply_effect(root, ROOT) return 1 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 64c851310823..d5190318715c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -75,9 +75,6 @@ H.updatehealth() return 1 - else if(isAI(src)) - return 0 - /mob/living/proc/adjustBodyTemp(actual, desired, incrementboost) var/temperature = actual var/difference = abs(actual-desired) //get difference @@ -401,7 +398,10 @@ /mob/living/launch_towards(datum/launch_metadata/LM) if(src) SEND_SIGNAL(src, COMSIG_MOB_MOVE_OR_LOOK, TRUE, dir, dir) - if(!istype(LM) || !LM.target || !src || buckled) + if(!istype(LM) || !LM.target || !src) + return + if(buckled) + LM.invoke_end_throw_callbacks(src) return if(pulling) stop_pulling() //being thrown breaks pulls. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 4061f26f7bb1..b19afb0450cd 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -174,7 +174,7 @@ switch(fire_reagent.fire_type) if(FIRE_VARIANT_TYPE_B) max_stacks = 10 //Armor Shredding Greenfire caps at 1 resist/pat - fire_stacks = Clamp(fire_stacks + add_fire_stacks, min_stacks, max_stacks) + fire_stacks = clamp(fire_stacks + add_fire_stacks, min_stacks, max_stacks) if(on_fire && fire_stacks <= 0) ExtinguishMob() diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index fb80c50042a3..f81baca85975 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -127,6 +127,57 @@ S = apply_status_effect(/datum/status_effect/incapacitating/stun, amount) return S +/* ROOT (Immobilisation) */ +/// Overridable handler to adjust the numerical value of status effects. Expand as needed +/mob/living/proc/GetRootDuration(amount) + return amount * GLOBAL_STATUS_MULTIPLIER + +/mob/living/proc/IsRoot() //If we're stunned + return has_status_effect(/datum/status_effect/incapacitating/immobilized) + +/mob/living/proc/AmountRoot() //How much time remain in our stun - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(root) + return root.get_duration_left() / GLOBAL_STATUS_MULTIPLIER + return FALSE + +/mob/living/proc/Root(amount) + if(!(status_flags & CANROOT)) + return + amount = GetRootDuration(amount) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(root) + root.update_duration(amount, increment = TRUE) + else if(amount > 0) + root = apply_status_effect(/datum/status_effect/incapacitating/immobilized, amount) + return root + +/mob/living/proc/SetRoot(amount) //Sets remaining duration + if(!(status_flags & CANROOT)) + return + amount = GetRootDuration(amount) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(amount <= 0) + if(root) + qdel(root) + else + if(root) + root.update_duration(amount) + else + root = apply_status_effect(/datum/status_effect/incapacitating/immobilized, amount) + return root + +/mob/living/proc/AdjustRoot(amount) //Adds to remaining duration + if(!(status_flags & CANROOT)) + return + amount = GetRootDuration(amount) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(root) + root.adjust_duration(amount) + else if(amount > 0) + root = apply_status_effect(/datum/status_effect/incapacitating/immobilized, amount) + return root + /* DAZE (Light incapacitation) */ /// Overridable handler to adjust the numerical value of status effects. Expand as needed /mob/living/proc/GetDazeDuration(amount) @@ -359,7 +410,7 @@ switch(client.prefs?.pain_overlay_pref_level) if(PAIN_OVERLAY_IMPAIR) - overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/impaired, CEILING(clamp(eye_blurry * 0.3, 1, 6), 1)) + overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/impaired, Ceiling(clamp(eye_blurry * 0.3, 1, 6))) if(PAIN_OVERLAY_LEGACY) overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/blurry) else // PAIN_OVERLAY_BLURRY @@ -499,7 +550,7 @@ tod = null timeofdeath = 0 - // restore us to conciousness + // restore us to consciousness set_stat(CONSCIOUS) regenerate_all_icons() diff --git a/code/modules/mob/living/living_healthscan.dm b/code/modules/mob/living/living_healthscan.dm index f3355157a40f..ebdf852afa68 100644 --- a/code/modules/mob/living/living_healthscan.dm +++ b/code/modules/mob/living/living_healthscan.dm @@ -76,7 +76,7 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant)) var/total_mob_damage = target_mob.getBruteLoss() + target_mob.getFireLoss() + target_mob.getToxLoss() + target_mob.getCloneLoss() - // Fake death will make the scanner think they died of oxygen damage, thus it returns enough damage to kill minus already recieved damage. + // Fake death will make the scanner think they died of oxygen damage, thus it returns enough damage to kill minus already received damage. return round(POSITIVE(200 - total_mob_damage)) /datum/health_scan/proc/get_health_value(mob/living/target_mob) diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm index 1d51e43fd71d..a9f41f679d34 100644 --- a/code/modules/mob/living/living_verbs.dm +++ b/code/modules/mob/living/living_verbs.dm @@ -128,7 +128,7 @@ if(!do_after(src, (breakout_time*1 MINUTES), INTERRUPT_NO_NEEDHAND^INTERRUPT_RESIST)) return - if(!C || !src || stat != CONSCIOUS || loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened + if(!C || !src || stat != CONSCIOUS || loc != C || C.opened) //closet/user destroyed OR user dead/unconscious 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(loc, /obj/structure/closet/secure_closet)) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm deleted file mode 100644 index 6782e3174579..000000000000 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ /dev/null @@ -1,627 +0,0 @@ -#define AI_CHECK_WIRELESS 1 -#define AI_CHECK_RADIO 2 - -GLOBAL_LIST_EMPTY(ai_list) -GLOBAL_LIST_INIT(ai_verbs_default, list( - /mob/living/silicon/ai/proc/ai_alerts, - /mob/living/silicon/ai/proc/ai_announcement, - // /mob/living/silicon/ai/proc/ai_recall_shuttle, - /mob/living/silicon/ai/proc/ai_camera_track, - /mob/living/silicon/ai/proc/ai_camera_list, - /mob/living/silicon/ai/proc/ai_goto_location, - /mob/living/silicon/ai/proc/ai_remove_location, - /mob/living/silicon/ai/proc/ai_roster, - /mob/living/silicon/ai/proc/ai_store_location, - /mob/living/silicon/ai/proc/control_integrated_radio, - /mob/living/silicon/ai/proc/core, - /mob/living/silicon/ai/proc/pick_icon, - /mob/living/silicon/ai/proc/sensor_mode, - /mob/living/silicon/ai/proc/toggle_acceleration -)) - - - //mob/living/silicon/ai/proc/ai_hologram_change, - - //mob/living/silicon/ai/proc/ai_network_change - //mob/living/silicon/ai/proc/ai_statuschange, - //mob/living/silicon/ai/proc/toggle_camera_light - -//Not sure why this is necessary... -/proc/AutoUpdateAI(obj/subject) - var/is_in_use = 0 - if (subject!=null) - for(var/A in GLOB.ai_list) - var/mob/living/silicon/ai/M = A - if ((M.client && M.interactee == subject)) - is_in_use = 1 - subject.attack_remote(M) - return is_in_use - - -/mob/living/silicon/ai - name = "AI" - icon = 'icons/mob/AI.dmi'// - icon_state = "ai" - anchored = TRUE // -- TLE - density = TRUE - status_flags = CANSTUN|CANKNOCKOUT - med_hud = MOB_HUD_MEDICAL_BASIC - sec_hud = MOB_HUD_SECURITY_BASIC - var/list/network = list(CAMERA_NET_ALMAYER) - var/obj/structure/machinery/camera/camera = null - var/list/connected_robots = list() - var/aiRestorePowerRoutine = 0 - //var/list/laws = list() - var/viewalerts = 0 - var/lawcheck[1] - var/ioncheck[1] - var/lawchannel = "Common" // Default channel on which to state laws - var/icon/holo_icon//Default is assigned when AI is created. -// var/obj/item/device/pda/ai/aiPDA = null - var/obj/item/device/multitool/aiMulti = null - var/obj/item/device/radio/headset/ai_integrated/aiRadio = null -//Hud stuff - - //MALFUNCTION - var/datum/AI_Module/module_picker/malf_picker - var/processing_time = 100 - var/list/datum/AI_Module/current_modules = list() - var/fire_res_on_core = 0 - - var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click() -- TLE - var/malfhacking = 0 // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite - - var/obj/structure/machinery/power/apc/malfhack = null - var/explosive = 0 //does the AI explode when it dies? - - var/mob/living/silicon/ai/parent = null - - var/camera_light_on = 0 //Defines if the AI toggled the light on the camera it's looking through. - var/datum/trackable/track = null - var/last_announcement = "" - var/datum/announcement/priority/announcement - -/mob/living/silicon/ai/proc/add_ai_verbs() - add_verb(src, GLOB.ai_verbs_default) - -/mob/living/silicon/ai/proc/remove_ai_verbs() - remove_verb(src, GLOB.ai_verbs_default) - -/mob/living/silicon/ai/New(loc, obj/item/device/mmi/B, safety = 0) - var/list/possibleNames = GLOB.ai_names - - var/pickedName = null - while(!pickedName) - pickedName = pick(GLOB.ai_names) - for (var/mob/living/silicon/ai/A in GLOB.mob_list) - if (A.real_name == pickedName && possibleNames.len > 1) //fixing the theoretically possible infinite loop - possibleNames -= pickedName - pickedName = null - -// aiPDA = new/obj/item/device/pda/ai(src) - SetName(pickedName) - anchored = TRUE - ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_INHERENT) - set_density(TRUE) - forceMove(loc) - - holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1")) - - aiMulti = new(src) - aiRadio = new(src) - aiRadio.myAi = src - aiCamera = new/obj/item/device/camera/siliconcam/ai_camera(src) - - if (istype(loc, /turf)) - add_ai_verbs(src) - - //Languages - add_language(LANGUAGE_ENGLISH, 1) - add_language(LANGUAGE_RUSSIAN, 1) - add_language(LANGUAGE_XENOMORPH, 0) - - - if(!safety)//Only used by AIize() to successfully spawn an AI. - if (!B)//If there is no player/brain inside. - new/obj/structure/AIcore/deactivated(loc)//New empty terminal. - qdel(src)//Delete AI. - return - else - if (B.brainmob.mind) - B.brainmob.mind.transfer_to(src) - - to_chat(src, "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).") - to_chat(src, "To look at other parts of the station, click on yourself to get a camera menu.") - to_chat(src, "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.") - to_chat(src, "To use something, simply click on it.") - to_chat(src, "Use say :b to speak to your cyborgs through binary.") - show_laws() - to_chat(src, "These laws may be changed by other players, or by you being the traitor.") - - job = "AI" - - spawn(5) - new /obj/structure/machinery/ai_powersupply(src) - - GLOB.ai_list += src - ..() - return - -/mob/living/silicon/ai/Destroy() - GLOB.ai_list -= src - QDEL_NULL(aiMulti) - if(aiRadio) - aiRadio.myAi = null - QDEL_NULL(aiRadio) - QDEL_NULL(aiCamera) - . = ..() - -/mob/living/silicon/ai/proc/SetName(pickedName as text) - change_real_name(src, pickedName) - - if(eyeobj) - eyeobj.name = "[pickedName] (AI Eye)" - - // Set ai pda name - /* - if(aiPDA) - aiPDA.ownjob = "AI" - aiPDA.owner = pickedName - aiPDA.name = pickedName + " (" + aiPDA.ownjob + ")" - Fuck PDAs */ - -/* - The AI Power supply is a dummy object used for powering the AI since only machinery should be using power. - The alternative was to rewrite a bunch of AI code instead here we are. -*/ -/obj/structure/machinery/ai_powersupply - name="Power Supply" - active_power_usage=1000 - use_power = USE_POWER_ACTIVE - power_channel = POWER_CHANNEL_EQUIP - var/mob/living/silicon/ai/powered_ai = null - invisibility = 100 - -/obj/structure/machinery/ai_powersupply/New(mob/living/silicon/ai/ai) - powered_ai = ai - if(isnull(powered_ai)) - qdel(src) - return - forceMove(powered_ai.loc) - use_power(1) // Just incase we need to wake up the power system. - //start_processing() - //..() - -/obj/structure/machinery/ai_powersupply/process() - if(!powered_ai || powered_ai.stat & DEAD) - qdel(src) - return - if(!powered_ai.anchored) - forceMove(powered_ai.loc) - update_use_power(USE_POWER_NONE) - if(powered_ai.anchored) - update_use_power(USE_POWER_ACTIVE) - -/mob/living/silicon/ai/proc/pick_icon() - set category = "AI Commands" - set name = "Set AI Core Display" - if(stat || aiRestorePowerRoutine) - return - - //if(icon_state == initial(icon_state)) - var/icontype = tgui_input_list(usr, "Select an icon!", "AI", list("Monochrome", "Rainbow", "Blue", "Inverted", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss", "Firewall", "Green", "Red", "Static", "Triumvirate", "Triumvirate Static", "Soviet", "Trapped", "Heartline", "Chatterbox")) - switch(icontype) - if("Rainbow") icon_state = "ai-clown" - if("Monochrome") icon_state = "ai-mono" - if("Inverted") icon_state = "ai-u" - if("Firewall") icon_state = "ai-magma" - if("Green") icon_state = "ai-wierd" - if("Red") icon_state = "ai-red" - if("Static") icon_state = "ai-static" - if("Text") icon_state = "ai-text" - if("Smiley") icon_state = "ai-smiley" - if("Matrix") icon_state = "ai-matrix" - if("Angry") icon_state = "ai-angryface" - if("Dorf") icon_state = "ai-dorf" - if("Bliss") icon_state = "ai-bliss" - if("Triumvirate") icon_state = "ai-triumvirate" - if("Triumvirate Static") icon_state = "ai-triumvirate-malf" - if("Soviet") icon_state = "ai-redoctober" - if("Trapped") icon_state = "ai-hades" - if("Heartline") icon_state = "ai-heartline" - if("Chatterbox") icon_state = "ai-president" - else icon_state = "ai" - -/mob/living/silicon/ai/proc/ai_alerts() - set category = "AI Commands" - set name = "Show Alerts" - - var/dat = "Current Station Alerts\n" - dat += "Close

      " - for (var/cat in alarms) - dat += text("[]
      \n", cat) - var/list/alarmlist = alarms[cat] - if (alarmlist.len) - for (var/area_name in alarmlist) - var/datum/alarm/alarm = alarmlist[area_name] - dat += "" - - var/cameratext = "" - if (alarm.cameras) - for (var/obj/structure/machinery/camera/I in alarm.cameras) - cameratext += text("[][]", (cameratext=="") ? "" : "|", src, I, I.c_tag) - dat += text("-- [] ([])", alarm.area.name, (cameratext)? cameratext : "No Camera") - - if (alarm.sources.len > 1) - dat += text(" - [] sources", alarm.sources.len) - dat += "
      \n" - else - dat += "-- All Systems Nominal
      \n" - dat += "
      \n" - - viewalerts = 1 - src << browse(dat, "window=aialerts&can_close=0") - -// this verb lets the ai see the stations manifest -/mob/living/silicon/ai/proc/ai_roster() - set category = "AI Commands" - set name = "Show Crew Manifest" - show_station_manifest() - -/mob/living/silicon/ai/var/message_cooldown = 0 -/mob/living/silicon/ai/proc/ai_announcement() - set category = "AI Commands" - set name = "Make Station Announcement" - - if(check_unable(AI_CHECK_WIRELESS|AI_CHECK_RADIO)) - return - - if(message_cooldown) - to_chat(src, "Please allow one minute to pass between announcements.") - return - var/input = stripped_multiline_input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement") - if(!input) - return - - if(check_unable(AI_CHECK_WIRELESS|AI_CHECK_RADIO)) - return - - ai_announcement(input) - message_cooldown = 1 - spawn(1 MINUTES)//One minute cooldown - message_cooldown = 0 - -/mob/living/silicon/ai/check_eye(mob/user) - if (!camera) - user.reset_view(null) - return - user.reset_view(camera) - -/mob/living/silicon/ai/is_mob_restrained() - return 0 - -/mob/living/silicon/ai/emp_act(severity) - . = ..() - if (prob(30)) view_core() - -/mob/living/silicon/ai/Topic(href, href_list) - if(usr != src) - return - ..() - if (href_list["mach_close"]) - if (href_list["mach_close"] == "aialerts") - viewalerts = 0 - var/t1 = text("window=[]", href_list["mach_close"]) - unset_interaction() - src << browse(null, t1) - if (href_list["switchcamera"]) - switchCamera(locate(href_list["switchcamera"])) in GLOB.cameranet.cameras - if (href_list["showalerts"]) - ai_alerts() - //Carn: holopad requests - if (href_list["jumptoholopad"]) - var/obj/structure/machinery/hologram/holopad/H = locate(href_list["jumptoholopad"]) - if(stat == CONSCIOUS) - if(H) - H.attack_remote(src) //may as well recycle - else - to_chat(src, SPAN_NOTICE("Unable to locate the holopad.")) - - if (href_list["track"]) - var/mob/target = locate(href_list["track"]) in GLOB.mob_list - - if(target && (!istype(target, /mob/living/carbon/human) || html_decode(href_list["trackname"]) == target:get_face_name())) - ai_actual_track(target) - else - to_chat(src, "System error. Cannot locate.") - return - - return - -/mob/living/silicon/ai/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 25, 1) - for(var/mob/O in viewers(src, null)) - O.show_message(SPAN_DANGER("[M] [M.attacktext] [src]!"), SHOW_MESSAGE_VISIBLE) - last_damage_data = create_cause_data(initial(M.name), M) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - apply_damage(damage, BRUTE) - updatehealth() - -/mob/living/silicon/ai/reset_view(atom/A) - if(camera) - camera.set_light(0) - if(istype(A,/obj/structure/machinery/camera)) - camera = A - ..() - if(istype(A,/obj/structure/machinery/camera)) - if(camera_light_on) A.set_light(AI_CAMERA_LUMINOSITY) - else A.set_light(0) - - -/mob/living/silicon/ai/proc/switchCamera(obj/structure/machinery/camera/C) - if (!C || stat == DEAD) //C.can_use()) - return 0 - - if(!src.eyeobj) - view_core() - return - // ok, we're alive, camera is good and in our network... - eyeobj.setLoc(get_turf(C)) - //machine = src - - return 1 - -/mob/living/silicon/ai/triggerAlarm(class, area/A, list/cameralist, source) - if (stat == 2) - return 1 - - ..() - - var/cameratext = "" - for (var/obj/structure/machinery/camera/C in cameralist) - cameratext += "[(cameratext == "")? "" : "|"][C.c_tag]" - - queueAlarm("--- [class] alarm detected in [A.name]! ([(cameratext)? cameratext : "No Camera"])", class) - - if (viewalerts) ai_alerts() - -/mob/living/silicon/ai/cancelAlarm(class, area/A as area, source) - var/has_alarm = ..() - - if (!has_alarm) - queueAlarm(text("--- [] alarm in [] has been cleared.", class, A.name), class, 0) - if (viewalerts) ai_alerts() - - return has_alarm - -/mob/living/silicon/ai/cancel_camera() - set category = "AI Commands" - set name = "Cancel Camera View" - - //src.cameraFollow = null - src.view_core() - - -//Replaces /mob/living/silicon/ai/verb/change_network() in ai.dm & camera.dm -//Adds in /mob/living/silicon/ai/proc/ai_network_change() instead -//Addition by Mord_Sith to define AI's network change ability -/mob/living/silicon/ai/proc/ai_network_change() - set category = "AI Commands" - set name = "Jump To Network" - unset_interaction() - var/cameralist[0] - - if(check_unable()) - return - - var/mob/living/silicon/ai/U = usr - - for (var/obj/structure/machinery/camera/C in GLOB.cameranet.cameras) - if(!C.can_use()) - continue - - var/list/tempnetwork = difflist(C.network,GLOB.RESTRICTED_CAMERA_NETWORKS,1) - if(tempnetwork.len) - for(var/i in tempnetwork) - cameralist[i] = i - var/old_network = network - network = tgui_input_list(U, "Which network would you like to view?", "View network", cameralist) - - if(!U.eyeobj) - U.view_core() - return - - if(isnull(network)) - network = old_network // If nothing is selected - else - for(var/obj/structure/machinery/camera/C in GLOB.cameranet.cameras) - if(!C.can_use()) - continue - if(network in C.network) - U.eyeobj.setLoc(get_turf(C)) - break - to_chat(src, SPAN_NOTICE(" Switched to [network] camera network.")) -//End of code by Mord_Sith - -/mob/living/silicon/ai/proc/ai_statuschange() - set category = "AI Commands" - set name = "AI Status" - - if(check_unable(AI_CHECK_WIRELESS)) - return - - var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Surprised", "Sad", "Upset", "Angry", "Awesome", "BSOD", "Blank", "Problems?", "Facepalm", "Friend Computer") - var/emote = tgui_input_list(usr, "Please, select a status!", "AI Status", ai_emotions) - for (var/obj/structure/machinery/M in GLOB.machines) //change status - if(istype(M, /obj/structure/machinery/ai_status_display)) - var/obj/structure/machinery/ai_status_display/AISD = M - AISD.emotion = emote - //if Friend Computer, change ALL displays - else if(istype(M, /obj/structure/machinery/status_display)) - - var/obj/structure/machinery/status_display/SD = M - if(emote=="Friend Computer") - SD.friendc = 1 - else - SD.friendc = 0 - return - -//I am the icon meister. Bow fefore me. //>fefore -/mob/living/silicon/ai/proc/ai_hologram_change() - set name = "Change Hologram" - set desc = "Change the default hologram available to AI to something else." - set category = "AI Commands" - - if(check_unable()) - return - - var/input - if(alert("Would you like to select a hologram based on a crew member or switch to unique avatar?",,"Crew Member","Unique")=="Crew Member") - - var/personnel_list[] = list() - - for(var/datum/data/record/t in GLOB.data_core.locked)//Look in data core locked. - personnel_list["[t.fields["name"]]: [t.fields["rank"]]"] = t.fields["image"]//Pull names, rank, and image. - - if(personnel_list.len) - input = tgui_input_list(usr, "Select a crew member:", "Change hologram", personnel_list) - var/icon/character_icon = personnel_list[input] - if(character_icon) - qdel(holo_icon)//Clear old icon so we're not storing it in memory. - holo_icon = getHologramIcon(icon(character_icon)) - else - alert("No suitable records found. Aborting.") - - else - var/icon_list[] = list( - "default", - "floating face", - "carp" - ) - input = tgui_input_list(usr, "Please select a hologram:", "Select hologram", icon_list) - if(input) - QDEL_NULL(holo_icon) - switch(input) - if("default") - holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1")) - if("floating face") - holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo2")) - if("carp") - holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo4")) - return - -/*/mob/living/silicon/ai/proc/corereturn() - set category = "Malfunction" - set name = "Return to Main Core" - - var/obj/structure/machinery/power/apc/apc = src.loc - if(!istype(apc)) - to_chat(src, SPAN_NOTICE(" You are already in your Main Core.")) - return - apc.malfvacate()*/ - -//Toggles the luminosity and applies it by re-entereing the camera. -/mob/living/silicon/ai/proc/toggle_camera_light() - set name = "Toggle Camera Light" - set desc = "Toggles the light on the camera the AI is looking through." - set category = "AI Commands" - - if(check_unable()) - return - - camera_light_on = !camera_light_on - to_chat(src, "Camera lights [camera_light_on ? "activated" : "deactivated"].") - if(!camera_light_on) - if(camera) - camera.set_light(0) - camera = null - else - lightNearbyCamera() - - - -// Handled camera lighting, when toggled. -// It will get the nearest camera from the eyeobj, lighting it. - -/mob/living/silicon/ai/proc/lightNearbyCamera() - if(camera_light_on && camera_light_on < world.timeofday) - if(src.camera) - var/obj/structure/machinery/camera/camera = near_range_camera(src.eyeobj) - if(camera && src.camera != camera) - src.camera.set_light(0) - if(!camera.light_disabled) - src.camera = camera - src.camera.set_light(AI_CAMERA_LUMINOSITY) - else - src.camera = null - else if(isnull(camera)) - src.camera.set_light(0) - src.camera = null - else - var/obj/structure/machinery/camera/camera = near_range_camera(src.eyeobj) - if(camera && !camera.light_disabled) - src.camera = camera - src.camera.set_light(AI_CAMERA_LUMINOSITY) - camera_light_on = world.timeofday + 1 * 20 // Update the light every 2 seconds. - - -/mob/living/silicon/ai/attackby(obj/item/W as obj, mob/user as mob) - if(HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) - if(anchored) - user.visible_message(SPAN_NOTICE("\The [user] starts to unbolt \the [src] from the plating...")) - if(!do_after(user, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - user.visible_message(SPAN_NOTICE("\The [user] decides not to unbolt \the [src].")) - return - user.visible_message(SPAN_NOTICE("\The [user] finishes unfastening \the [src]!")) - anchored = FALSE - return - else - user.visible_message(SPAN_NOTICE("\The [user] starts to bolt \the [src] to the plating...")) - if(!do_after(user, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - user.visible_message(SPAN_NOTICE("\The [user] decides not to bolt \the [src].")) - return - user.visible_message(SPAN_NOTICE("\The [user] finishes fastening down \the [src]!")) - anchored = TRUE - return - else - return ..() - -/mob/living/silicon/ai/proc/control_integrated_radio() - set name = "Radio Settings" - set desc = "Allows you to change settings of your radio." - set category = "AI Commands" - - if(check_unable(AI_CHECK_RADIO)) - return - - to_chat(src, "Accessing Subspace Transceiver control...") - if (src.aiRadio) - src.aiRadio.interact(src) - -/mob/living/silicon/ai/proc/sensor_mode() - set name = "Set Sensor Augmentation" - set category = "AI Commands" - set desc = "Augment visual feed with internal sensor overlays" - toggle_sensor_mode() - -/mob/living/silicon/ai/proc/check_unable(flags = 0) - if(stat == DEAD) - to_chat(usr, SPAN_DANGER("You are dead!")) - return 1 - - if((flags & AI_CHECK_WIRELESS) && src.control_disabled) - to_chat(usr, SPAN_DANGER("Wireless control is disabled!")) - return 1 - if((flags & AI_CHECK_RADIO) && src.aiRadio.disabledAi) - to_chat(src, SPAN_DANGER("System Error - Transceiver Disabled!")) - return 1 - return 0 - -#undef AI_CHECK_WIRELESS -#undef AI_CHECK_RADIO diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm deleted file mode 100644 index 1555fc9c2b7b..000000000000 --- a/code/modules/mob/living/silicon/ai/death.dm +++ /dev/null @@ -1,22 +0,0 @@ -/mob/living/silicon/ai/death(cause, gibbed) - - if(stat == DEAD) - return - - icon_state = "ai-crash" - - if(src.eyeobj) - src.eyeobj.setLoc(get_turf(src)) - - remove_ai_verbs(src) - - if(explosive) - addtimer(CALLBACK(src, PROC_REF(explosion), src.loc, 3, 6, 12, 15), 10) - - for(var/obj/structure/machinery/ai_status_display/O in GLOB.machines) - spawn( 0 ) - O.mode = 2 - if (istype(loc, /obj/item/device/aicard)) - loc.icon_state = "aicard-404" - - return ..(cause, gibbed,"gives one shrill beep before falling lifeless.") diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm deleted file mode 100644 index 1fb41e022960..000000000000 --- a/code/modules/mob/living/silicon/ai/examine.dm +++ /dev/null @@ -1,26 +0,0 @@ -/mob/living/silicon/ai/get_examine_text(mob/user) - if( (user.sdisabilities & DISABILITY_BLIND || user.blinded || user.stat) && !istype(user,/mob/dead/observer) ) - return list(SPAN_NOTICE("Something is there but you can't see it.")) - - var/msg = "*---------*\nThis is [icon2html(src)] [src]!\n" - if (src.stat == DEAD) - msg += "It appears to be powered-down.\n" - else - msg += "" - if (src.getBruteLoss()) - if (src.getBruteLoss() < 30) - msg += "It looks slightly dented.\n" - else - msg += "It looks severely dented!\n" - if (src.getFireLoss()) - if (src.getFireLoss() < 30) - msg += "It looks slightly charred.\n" - else - msg += "Its casing is melted and heat-warped!\n" - - if (src.stat == UNCONSCIOUS) - msg += "It is non-responsive and displaying the text: \"RUNTIME: Sensory Overload, stack 26/3\".\n" - msg += "" - msg += "*---------*" - - . += msg diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm deleted file mode 100644 index 808ad653b73c..000000000000 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ /dev/null @@ -1,148 +0,0 @@ -// CAMERA NET -// -// The datum containing all the chunks. - -GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new()) - -/datum/cameranet - // The cameras on the map, no matter if they work or not. Updated in obj/structure/machinery/camera/New() and Dispose(). - var/list/cameras = list() - // The chunks of the map, mapping the areas that the cameras can see. - var/list/chunks = list() - var/ready = 0 - -// Checks if a chunk has been Generated in x, y, z. -/datum/cameranet/proc/chunkGenerated(x, y, z) - x &= ~0xf - y &= ~0xf - var/key = "[x],[y],[z]" - return (chunks[key]) - -// Returns the chunk in the x, y, z. -// If there is no chunk, it creates a new chunk and returns that. -/datum/cameranet/proc/getCameraChunk(x, y, z) - x &= ~0xf - y &= ~0xf - var/key = "[x],[y],[z]" - if(!chunks[key]) - chunks[key] = new /datum/camerachunk(null, x, y, z) - - return chunks[key] - -// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. - -/datum/cameranet/proc/visibility(mob/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~0xf - var/y1 = max(0, ai.y - 16) & ~0xf - var/x2 = min(world.maxx, ai.x + 16) & ~0xf - var/y2 = min(world.maxy, ai.y + 16) & ~0xf - - var/list/visibleChunks = list() - - for(var/x = x1; x <= x2; x += 16) - for(var/y = y1; y <= y2; y += 16) - visibleChunks += getCameraChunk(x, y, ai.z) - - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks - - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) - - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) - -// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. - -/datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) - - if(opacity_check && !A.opacity) - return - majorChunkChange(A, 2) - -/datum/cameranet/proc/updateChunk(x, y, z) - // 0xf = 15 - if(!chunkGenerated(x, y, z)) - return - var/datum/camerachunk/chunk = getCameraChunk(x, y, z) - chunk.hasChanged() - -// Removes a camera from a chunk. - -/datum/cameranet/proc/removeCamera(obj/structure/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 0) - -// Add a camera to a chunk. - -/datum/cameranet/proc/addCamera(obj/structure/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 1) - -// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. - -/datum/cameranet/proc/updatePortableCamera(obj/structure/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 1) - //else - // majorChunkChange(c, 0) - -// Never access this proc directly!!!! -// This will update the chunk and all the surrounding chunks. -// It will also add the atom to the cameras list if you set the choice to 1. -// Setting the choice to 0 will remove the camera from the chunks. -// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. - -/datum/cameranet/proc/majorChunkChange(atom/c, choice) - // 0xf = 15 - if(!c) - return - - var/turf/T = get_turf(c) - if(T) - var/x1 = max(0, T.x - 8) & ~0xf - var/y1 = max(0, T.y - 8) & ~0xf - var/x2 = min(world.maxx, T.x + 8) & ~0xf - var/y2 = min(world.maxy, T.y + 8) & ~0xf - - for(var/x = x1; x <= x2; x += 16) - for(var/y = y1; y <= y2; y += 16) - if(chunkGenerated(x, y, T.z)) - var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) - if(choice == 0) - // Remove the camera. - chunk.cameras -= c - else if(choice == 1) - // You can't have the same camera in the list twice. - chunk.cameras |= c - chunk.hasChanged() - -// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. - -/datum/cameranet/proc/checkCameraVis(mob/living/target as mob) - - // 0xf = 15 - var/turf/position = get_turf(target) - return checkTurfVis(position) - -/datum/cameranet/proc/checkTurfVis(turf/position) - var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z) - if(chunk) - if(chunk.changed) - chunk.hasChanged(1) // Update now, no matter if it's visible or not. - if(chunk.visibleTurfs[position]) - return 1 - return 0 - -// Debug verb for VVing the chunk that the turf is in. -/* -/turf/verb/view_chunk() - set src in world - - if(GLOB.cameranet.chunkGenerated(x, y, z)) - var/datum/camerachunk/chunk = GLOB.cameranet.getCameraChunk(x, y, z) - usr.client.debug_variables(chunk) -*/ diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm deleted file mode 100644 index 2113e70aa22f..000000000000 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ /dev/null @@ -1,168 +0,0 @@ -#define UPDATE_BUFFER 25 // 2.5 seconds - -// CAMERA CHUNK -// -// A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed. -// Allows the AI Eye to stream these chunks and know what it can and cannot see. - -/datum/camerachunk - var/list/obscuredTurfs = list() - var/list/visibleTurfs = list() - var/list/obscured = list() - var/list/cameras = list() - var/list/turfs = list() - var/list/seenby = list() - var/visible = 0 - var/changed = 0 - var/updating = 0 - var/x = 0 - var/y = 0 - var/z = 0 - -// Add an AI eye to the chunk, then update if changed. - -/datum/camerachunk/proc/add(mob/aiEye/ai) - if(!ai.ai) - return - ai.visibleCameraChunks += src - if(ai.ai.client) - ai.ai.client.images += obscured - visible++ - seenby += ai - if(changed && !updating) - update() - -// Remove an AI eye from the chunk, then update if changed. - -/datum/camerachunk/proc/remove(mob/aiEye/ai) - if(!ai.ai) - return - ai.visibleCameraChunks -= src - if(ai.ai.client) - ai.ai.client.images -= obscured - seenby -= ai - if(visible > 0) - visible-- - -// Called when a chunk has changed. I.E: A wall was deleted. - -/datum/camerachunk/proc/visibilityChanged(turf/loc) - if(!visibleTurfs[loc]) - return - hasChanged() - -// Updates the chunk, makes sure that it doesn't update too much. If the chunk isn't being watched it will -// instead be flagged to update the next time an AI Eye moves near it. - -/datum/camerachunk/proc/hasChanged(update_now = 0) - if(visible || update_now) - if(!updating) - updating = 1 - spawn(UPDATE_BUFFER) // Batch large changes, such as many doors opening or closing at once - update() - updating = 0 - else - changed = 1 - -// The actual updating. It gathers the visible turfs from cameras and puts them into the appropiate lists. - -/datum/camerachunk/proc/update() - - set background = 1 - - var/list/newVisibleTurfs = list() - - for(var/camera in cameras) - var/obj/structure/machinery/camera/c = camera - - if(!c) - continue - - if(!c.can_use()) - continue - - var/turf/point = locate(src.x + 8, src.y + 8, src.z) - if(get_dist(point, c) > 24) - continue - - for(var/turf/t in c.can_see()) - newVisibleTurfs[t] = t - - // Removes turf that isn't in turfs. - newVisibleTurfs &= turfs - - var/list/visAdded = newVisibleTurfs - visibleTurfs - var/list/visRemoved = visibleTurfs - newVisibleTurfs - - visibleTurfs = newVisibleTurfs - obscuredTurfs = turfs - newVisibleTurfs - - for(var/turf in visAdded) - var/turf/t = turf - if(t.obscured) - obscured -= t.obscured - for(var/eye in seenby) - var/mob/aiEye/m = eye - if(!m || !m.ai) - continue - if(m.ai.client) - m.ai.client.images -= t.obscured - - for(var/turf in visRemoved) - var/turf/t = turf - if(obscuredTurfs[t]) - if(!t.obscured) - t.obscured = image('icons/effects/cameravis.dmi', t, "black", 15) - - obscured += t.obscured - for(var/eye in seenby) - var/mob/aiEye/m = eye - if(!m || !m.ai) - seenby -= m - continue - if(m.ai.client) - m.ai.client.images += t.obscured - -// Create a new camera chunk, since the chunks are made as they are needed. - -/datum/camerachunk/New(loc, x, y, z) - - // 0xf = 15 - x &= ~0xf - y &= ~0xf - - src.x = x - src.y = y - src.z = z - - for(var/obj/structure/machinery/camera/c in range(16, locate(x + 8, y + 8, z))) - if(c.can_use()) - cameras += c - - for(var/turf/t in range(10, locate(x + 8, y + 8, z))) - if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16) - turfs[t] = t - - for(var/camera in cameras) - var/obj/structure/machinery/camera/c = camera - if(!c) - continue - - if(!c.can_use()) - continue - - for(var/turf/t in c.can_see()) - visibleTurfs[t] = t - - // Removes turf that isn't in turfs. - visibleTurfs &= turfs - - obscuredTurfs = turfs - visibleTurfs - - for(var/turf in obscuredTurfs) - var/turf/t = turf - if(!t.obscured) - t.obscured = image('icons/effects/cameravis.dmi', t, "black", 15) - obscured += t.obscured - -#undef UPDATE_BUFFER diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm deleted file mode 100644 index 22e2bf05aa2c..000000000000 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ /dev/null @@ -1,139 +0,0 @@ -// AI EYE -// -// An invisible (no icon) mob that the AI controls to look around the station with. -// It streams chunks as it moves around, which will show it what the AI can and cannot see. - -/mob/aiEye - name = "Inactive AI Eye" - icon = 'icons/obj/structures/machinery/status_display.dmi' // For AI friend secret shh :o - var/list/visibleCameraChunks = list() - var/mob/living/silicon/ai/ai = null - density = FALSE - status_flags = GODMODE // You can't damage it. - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - see_in_dark = 7 - -// Movement code. Returns 0 to stop air movement from moving it. -/mob/aiEye/Move() - return 0 - -// Use this when setting the aiEye's location. -// It will also stream the chunk that the new loc is in. -/mob/aiEye/proc/setLoc(T, cancel_tracking = 1) - - if(ai) - if(!isturf(ai.loc)) - return - - if(cancel_tracking) - ai.ai_cancel_tracking() - - T = get_turf(T) - forceMove(T) - GLOB.cameranet.visibility(src) - if(ai.client) - ai.client.eye = src - //Holopad - if(ai.holo) - ai.holo.move_hologram() - -/mob/aiEye/proc/getLoc() - - if(ai) - if(!isturf(ai.loc) || !ai.client) - return - if(ai.eyeobj) - return ai.eyeobj.loc - -// AI MOVEMENT - -// The AI's "eye". Described on the top of the page. - -/mob/living/silicon/ai - var/mob/aiEye/eyeobj = new() - var/sprint = 10 - var/cooldown = 0 - var/acceleration = 1 - var/obj/structure/machinery/hologram/holopad/holo = null - -// Intiliaze the eye by assigning it's "ai" variable to us. Then set it's loc to us. -/mob/living/silicon/ai/Initialize() - . = ..() - if(eyeobj) - eyeobj.ai = src - eyeobj.name = "[src.name] (AI Eye)" // Give it a name - spawn(5) - if(eyeobj) - eyeobj.forceMove(src.loc) - -/mob/living/silicon/ai/Destroy() - if(eyeobj) - eyeobj.ai = null - QDEL_NULL(eyeobj) - . = ..() - -/atom/proc/move_camera_by_click() - if(isRemoteControlling(usr)) - var/mob/living/silicon/ai/AI = usr - if(AI.eyeobj && AI.client.eye == AI.eyeobj) - AI.eyeobj.setLoc(src) - -// This will move the AIEye. It will also cause lights near the eye to light up, if toggled. -// This is handled in the proc below this one. - -/mob/living/silicon/ai/Move(n, direct) - - var/initial = initial(sprint) - var/max_sprint = 50 - - if(cooldown && cooldown < world.timeofday) // 3 seconds - sprint = initial - - if(eyeobj) - for(var/i = 0; i < max(sprint, initial); i += 20) - var/turf/step = get_turf(get_step(eyeobj, direct)) - if(step) - eyeobj.setLoc(step) - - cooldown = world.timeofday + 5 - if(acceleration) - sprint = min(sprint + 0.5, max_sprint) - else - sprint = initial - - //user.unset_interaction() //Uncomment this if it causes problems. - //user.lightNearbyCamera() - - -// Return to the Core. - -/mob/living/silicon/ai/proc/core() - set category = "AI Commands" - set name = "AI Core" - - view_core() - - -/mob/living/silicon/ai/proc/view_core() - camera = null - unset_interaction() - - if(!src.eyeobj) - to_chat(src, "ERROR: Eyeobj not found. Creating new eye...") - src.eyeobj = new(src.loc) - src.eyeobj.ai = src - src.SetName(src.name) - - if(client && client.eye) - client.eye = src - for(var/datum/camerachunk/c in eyeobj.visibleCameraChunks) - c.remove(eyeobj) - if(eyeobj) - src.eyeobj.setLoc(src) - -/mob/living/silicon/ai/proc/toggle_acceleration() - set category = "AI Commands" - set name = "Toggle Camera Acceleration" - - acceleration = !acceleration - to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].") diff --git a/code/modules/mob/living/silicon/ai/freelook/read_me.dm b/code/modules/mob/living/silicon/ai/freelook/read_me.dm deleted file mode 100644 index 4d255772981e..000000000000 --- a/code/modules/mob/living/silicon/ai/freelook/read_me.dm +++ /dev/null @@ -1,51 +0,0 @@ -// CREDITS -/* -Initial code credit for this goes to Uristqwerty. -Debugging, functionality, all comments and porting by Giacom. - -Everything about freelook (or what we can put in here) will be stored here. - - -WHAT IS THIS? - -This is a replacement for the current camera movement system, of the AI. Before this, the AI had to move between cameras and could -only see what the cameras could see. Not only this but the cameras could see through walls, which created problems. -With this, the AI controls an "AI Eye" mob, which moves just like a ghost; such as moving through walls and being invisible to players. -The AI's eye is set to this mob and then we use a system (explained below) to determine what the cameras around the AI Eye can and -cannot see. If the camera cannot see a turf, it will black it out, otherwise it won't and the AI will be able to see it. -This creates several features, such as... no more see-through-wall cameras, easier to control camera movement, easier tracking, -the AI only being able to track mobs which are visible to a camera, only trackable mobs appearing on the mob list and many more. - - -HOW IT WORKS - -It works by first creating a camera network datum. Inside of this camera network are "chunks" (which will be -explained later) and "cameras". The cameras list is kept up to date by obj/structure/machinery/camera/New() and Dispose(). - -Next the camera network has chunks. These chunks are a 16x16 tile block of turfs and cameras contained inside the chunk. -These turfs are then sorted out based on what the cameras can and cannot see. If none of the cameras can see the turf, inside -the 16x16 block, it is listed as an "obscured" turf. Meaning the AI won't be able to see it. - - -HOW IT UPDATES - -The camera network uses a streaming method in order to effeciently update chunks. Since the server will have doors opening, doors closing, -turf being destroyed and other lag inducing stuff, we want to update it under certain conditions and not every tick. - -The chunks are not created straight away, only when an AI eye moves into it's area is when it gets created. -One a chunk is created, when a non glass door opens/closes or an opacity turf is destroyed, we check to see if an AI Eye is looking in the area. -We do this with the "seenby" list, which updates everytime an AI is near a chunk. If there is an AI eye inside the area, we update the chunk -that the changed atom is inside and all surrounding chunks, since a camera's vision could leak onto another chunk. If there is no AI Eye, we instead -flag the chunk to update whenever it is loaded by an AI Eye. This is basically how the chunks update and keep it in sync. We then add some lag reducing -measures, such as an UPDATE_BUFFER which stops a chunk from updating too many times in a certain time-frame, only updating if the changed atom was blocking -sight; for example, we don't update glass airlocks or floors. - - -WHERE IS EVERYTHING? - -cameranet.dm = Everything about the cameranet datum. -chunk.dm = Everything about the chunk datum. -eye.dm = Everything about the AI and the AIEye. -updating.dm = Everything about triggers that will update chunks. - -*/ diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm deleted file mode 100644 index abb044d474e8..000000000000 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ /dev/null @@ -1,112 +0,0 @@ -//UPDATE TRIGGERS, when the chunk (and the surrounding chunks) should update. - -// TURFS - -/turf - var/image/obscured - -/turf/proc/visibilityChanged() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - -/obj/structure/machinery/door/poddoor/shutters/open() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - . = ..() - - -/obj/structure/machinery/door/poddoor/shutters/close() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - . = ..() - - -/obj/structure/machinery/door/poddoor/shutters/Destroy() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - . = ..() -// STRUCTURES - -/obj/structure/Destroy(force) - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - . = ..() - -/obj/structure/Initialize(mapload, ...) - . = ..() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - -// EFFECTS - -/obj/effect/Destroy() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - . = ..() - -/obj/effect/Initialize(mapload, ...) - . = ..() - if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) - GLOB.cameranet.updateVisibility(src) - - - -// ROBOT MOVEMENT - -// Update the portable camera everytime the Robot moves. -// This might be laggy, comment it out if there are problems. -/mob/living/silicon/robot/var/updating = 0 - -/mob/living/silicon/robot/Move() - var/oldLoc = src.loc - . = ..() - if(.) - if(src.camera && src.camera.network.len) - if(!updating) - updating = 1 - if(oldLoc != src.loc) - GLOB.cameranet.updatePortableCamera(src.camera) - updating = 0 - -/mob/living/carbon/human/var/updating = 0 - -/mob/living/carbon/human/Move(NewLoc, direction) - var/oldLoc = src.loc - . = ..() - if (.) - for (var/obj/item/clothing/head/helmet/marine/H in src) - if (!H.camera || !H.camera.network.len) - continue - if (updating) - continue - updating = TRUE - if (oldLoc != loc) - GLOB.cameranet.updatePortableCamera(H.camera) - updating = FALSE - -// CAMERA - -// An addition to deactivate which removes/adds the camera from the chunk list based on if it works or not. - -/obj/structure/machinery/camera/toggle_cam_status(mob/user, silent) - ..() - if(can_use()) - GLOB.cameranet.addCamera(src) - else - set_light(0) - GLOB.cameranet.removeCamera(src) - -/obj/structure/machinery/camera/Initialize() - . = ..() - GLOB.cameranet.cameras += src //Camera must be added to global list of all cameras no matter what... - var/list/open_networks = difflist(network,GLOB.RESTRICTED_CAMERA_NETWORKS) //...but if all of camera's networks are restricted, it only works for specific camera consoles. - if(open_networks.len) //If there is at least one open network, chunk is available for AI usage. - GLOB.cameranet.addCamera(src) - -/obj/structure/machinery/camera/Destroy() - GLOB.cameranet.cameras -= src - var/list/open_networks = difflist(network,GLOB.RESTRICTED_CAMERA_NETWORKS) - if(open_networks.len) - GLOB.cameranet.removeCamera(src) - . = ..() - diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm deleted file mode 100644 index 7b0ee6869e80..000000000000 --- a/code/modules/mob/living/silicon/ai/life.dm +++ /dev/null @@ -1,179 +0,0 @@ -/mob/living/silicon/ai/Life(delta_time) - if (src.stat == 2) - return - else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist - //Being dead doesn't mean your temperature never changes - var/turf/T = get_turf(src) - - if (src.stat!=0) - src.cameraFollow = null - src.reset_view(null) - src.unset_interaction() - - src.updatehealth() - - if (src.malfhack) - if (src.malfhack.aidisabled) - to_chat(src, SPAN_DANGER("ERROR: APC access disabled, hack attempt canceled.")) - src.malfhacking = 0 - src.malfhack = null - - - if (health <= HEALTH_THRESHOLD_DEAD) - death() - return - - if (interactee) - interactee.check_eye(src) - - // Handle power damage (oxy) - if(src:aiRestorePowerRoutine != 0) - // Lost power - apply_damage(1, OXY) - else - // Gain Power - apply_damage(-1, OXY) - - //stage = 1 - //if (isRemoteControlling(src)) // Are we not sure what we are? - var/blind = 0 - //stage = 2 - var/area/loc = null - if (istype(T, /turf)) - //stage = 3 - forceMove(T.loc) - if (istype(loc, /area)) - //stage = 4 - if (!loc.power_equip && !istype(src.loc,/obj/item)) - //stage = 5 - blind = 1 - - if (!blind) //lol? if(!blind) #if(src.blind.layer) <--something here is clearly wrong :P - //I'll get back to this when I find out how this is -supposed- to work ~Carn //removed this shit since it was confusing as all hell --39kk9t - //stage = 4.5 - src.sight |= SEE_TURFS - src.sight |= SEE_MOBS - src.sight |= SEE_OBJS - src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO - - - //Congratulations! You've found a way for AI's to run without using power! - //Todo: Without snowflaking up master_controller procs find a way to make AI use_power but only when APC's clear the area usage the tick prior - // since mobs are in master_controller before machinery. We also have to do it in a manner where we don't reset the entire area's need to update - // the power usage. - // - // We can probably create a new machine that resides inside of the AI contents that uses power using the idle_usage of 1000 and nothing else and - // be fine. -/* - var/area/home = get_area(src) - if(!home) return//something to do with malf fucking things up I guess. <-- aisat is gone. is this still necessary? ~Carn - if(home.powered(EQUIP)) - home.use_power(1000) -*/ - - if (src:aiRestorePowerRoutine==2) - to_chat(src, "Alert cancelled. Power has been restored without our assistance.") - src:aiRestorePowerRoutine = 0 - clear_fullscreen("blind") - return - else if (src:aiRestorePowerRoutine==3) - to_chat(src, "Alert cancelled. Power has been restored.") - src:aiRestorePowerRoutine = 0 - clear_fullscreen("blind") - return - else - - //stage = 6 - overlay_fullscreen("blind", /atom/movable/screen/fullscreen/blind) - src.sight = src.sight&~SEE_TURFS - src.sight = src.sight&~SEE_MOBS - src.sight = src.sight&~SEE_OBJS - src.see_in_dark = 0 - src.see_invisible = SEE_INVISIBLE_LIVING - - if (((!loc.power_equip) || istype(T, /turf/open/space)) && !istype(src.loc,/obj/item)) - if (src:aiRestorePowerRoutine==0) - src:aiRestorePowerRoutine = 1 - - to_chat(src, "You've lost power!") - //src.clear_supplied_laws() // Don't reset our laws. - //var/time = time2text(world.realtime,"hh:mm:ss") - //lawchanges.Add("[time] : [src.name]'s noncore laws have been reset due to power failure") - spawn(20) - to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") - sleep(50) - if (loc.power_equip) - if (!istype(T, /turf/open/space)) - to_chat(src, "Alert cancelled. Power has been restored without our assistance.") - src:aiRestorePowerRoutine = 0 - clear_fullscreen("blind") - return - to_chat(src, "Fault confirmed: missing external power. Shutting down main control system to save power.") - sleep(20) - to_chat(src, "Emergency control system online. Verifying connection to power network.") - sleep(50) - if (istype(T, /turf/open/space)) - to_chat(src, "Unable to verify! No power connection detected!") - src:aiRestorePowerRoutine = 2 - return - to_chat(src, "Connection verified. Searching for APC in power network.") - sleep(50) - var/obj/structure/machinery/power/apc/theAPC = null -/* - for (var/something in loc) - if (istype(something, /obj/structure/machinery/power/apc)) - if (!(something:stat & BROKEN)) - theAPC = something - break -*/ - var/PRP //like ERP with the code, at least this stuff is no more 4x sametext - for (PRP=1, PRP<=4, PRP++) - var/area/AIarea = get_area(src) - for (var/obj/structure/machinery/power/apc/APC in AIarea) - if (!(APC.stat & BROKEN)) - theAPC = APC - break - if (!theAPC) - switch(PRP) - if (1) to_chat(src, "Unable to locate APC!") - else to_chat(src, "Lost connection with the APC!") - src:aiRestorePowerRoutine = 2 - return - if (loc.power_equip) - if (!istype(T, /turf/open/space)) - to_chat(src, "Alert cancelled. Power has been restored without our assistance.") - src:aiRestorePowerRoutine = 0 - clear_fullscreen("blind") - return - switch(PRP) - if (1) to_chat(src, "APC located. Optimizing route to APC to avoid needless power waste.") - if (2) to_chat(src, "Best route identified. Hacking offline APC power port.") - if (3) to_chat(src, "Power port upload access confirmed. Loading control program into APC power port software.") - if (4) - to_chat(src, "Transfer complete. Forcing APC to execute program.") - sleep(50) - to_chat(src, "Receiving control information from APC.") - sleep(2) - //bring up APC dialog - theAPC.attack_remote(src) - src:aiRestorePowerRoutine = 3 - to_chat(src, "Here are your current laws:") - src.show_laws() - sleep(50) - theAPC = null - - -/mob/living/silicon/ai/updatehealth() - if(status_flags & GODMODE) - health = 100 - set_stat(CONSCIOUS) - else - if(fire_res_on_core) - health = 100 - getOxyLoss() - getToxLoss() - getBruteLoss() - else - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - -/mob/living/silicon/ai/rejuvenate() - ..() - add_ai_verbs(src) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm deleted file mode 100644 index 7a8d6ba9585f..000000000000 --- a/code/modules/mob/living/silicon/ai/login.dm +++ /dev/null @@ -1,10 +0,0 @@ -/mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up �_� ~Carn - ..() - regenerate_icons() - - if(stat != DEAD) - for(var/obj/structure/machinery/ai_status_display/O in GLOB.machines) //change status - O.mode = 1 - O.emotion = "Neutral" - src.view_core() - return diff --git a/code/modules/mob/living/silicon/ai/logout.dm b/code/modules/mob/living/silicon/ai/logout.dm deleted file mode 100644 index 62964915c33a..000000000000 --- a/code/modules/mob/living/silicon/ai/logout.dm +++ /dev/null @@ -1,10 +0,0 @@ -/mob/living/silicon/ai/Logout() - ..() - for(var/obj/structure/machinery/ai_status_display/O in GLOB.machines) //change status - O.mode = 0 - if(!isturf(loc)) - if (client) - client.eye = loc - client.perspective = EYE_PERSPECTIVE - src.view_core() - return diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm deleted file mode 100644 index 0f8684063a94..000000000000 --- a/code/modules/mob/living/silicon/ai/say.dm +++ /dev/null @@ -1,5 +0,0 @@ -/mob/living/silicon/ai/say(message) - if(parent && istype(parent) && parent.stat != 2) - return parent.say(message) - //If there is a defined "parent" AI, it is actually an AI, and it is alive, anything the AI tries to say is said by the parent instead. - return ..(message) diff --git a/code/modules/mob/living/silicon/alarm.dm b/code/modules/mob/living/silicon/alarm.dm deleted file mode 100644 index c5e0081b9895..000000000000 --- a/code/modules/mob/living/silicon/alarm.dm +++ /dev/null @@ -1,111 +0,0 @@ -/datum/alarm - var/area/area //the area associated with the alarm. Used to identify the alarm - var/list/sources //list of things triggering the alarm. Used to determine when the alarm should be cleared. - var/list/cameras //list of cameras that can be switched to, if the player has that capability. - -/datum/alarm/New(area/A, list/sourcelist=list(), list/cameralist=list()) - area = A - sources = sourcelist - cameras = cameralist - -/mob/living/silicon - var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list()) //each sublist stores alarms keyed by the area name - var/list/alarms_to_show = list() - var/list/alarms_to_clear = list() - var/list/alarm_types_show = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) - var/list/alarm_types_clear = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) - -/mob/living/silicon/proc/triggerAlarm(class, area/A, list/cameralist, source) - var/list/alarmlist = alarms[class] - - //see if there is already an alarm of this class for this area - if (A.name in alarmlist) - var/datum/alarm/existing = alarmlist[A.name] - existing.sources += source - existing.cameras |= cameralist - else - alarmlist[A.name] = new /datum/alarm(A, list(source), cameralist) - -/mob/living/silicon/proc/cancelAlarm(class, area/A as area, source) - var/cleared = 0 - var/list/alarmlist = alarms[class] - - if (A.name in alarmlist) - var/datum/alarm/alarm = alarmlist[A.name] - alarm.sources -= source - - if (!(alarm.sources.len)) - cleared = 1 - alarmlist -= A.name - - return !cleared - -/mob/living/silicon/proc/queueAlarm(message, type, incoming = 1) - var/in_cooldown = (alarms_to_show.len > 0 || alarms_to_clear.len > 0) - if(incoming) - alarms_to_show += message - alarm_types_show[type]++ - else - alarms_to_clear += message - alarm_types_clear[type]++ - - if(!in_cooldown) - spawn(10 * 10) // 10 seconds - - if(alarms_to_show.len < 5) - for(var/msg in alarms_to_show) - to_chat(src, msg) - else if(alarms_to_show.len) - - var/msg = "--- " - - if(alarm_types_show["Motion"]) - msg += "MOTION: [alarm_types_show["Motion"]] alarms detected. - " - - if(alarm_types_show["Fire"]) - msg += "FIRE: [alarm_types_show["Fire"]] alarms detected. - " - - if(alarm_types_show["Atmosphere"]) - msg += "ATMOSPHERE: [alarm_types_show["Atmosphere"]] alarms detected. - " - - if(alarm_types_show["Power"]) - msg += "POWER: [alarm_types_show["Power"]] alarms detected. - " - - if(alarm_types_show["Camera"]) - msg += "CAMERA: [alarm_types_show["Power"]] alarms detected. - " - - msg += "\[Show Alerts\]" - src << msg - - if(alarms_to_clear.len < 3) - for(var/msg in alarms_to_clear) - src << msg - - else if(alarms_to_clear.len) - var/msg = "--- " - - if(alarm_types_clear["Motion"]) - msg += "MOTION: [alarm_types_clear["Motion"]] alarms cleared. - " - - if(alarm_types_clear["Fire"]) - msg += "FIRE: [alarm_types_clear["Fire"]] alarms cleared. - " - - if(alarm_types_clear["Atmosphere"]) - msg += "ATMOSPHERE: [alarm_types_clear["Atmosphere"]] alarms cleared. - " - - if(alarm_types_clear["Power"]) - msg += "POWER: [alarm_types_clear["Power"]] alarms cleared. - " - - if(alarm_types_show["Camera"]) - msg += "CAMERA: [alarm_types_show["Power"]] alarms detected. - " - - msg += "\[Show Alerts\]" - src << msg - - - alarms_to_show = list() - alarms_to_clear = list() - for(var/i = 1; i < alarm_types_show.len; i++) - alarm_types_show[i] = 0 - for(var/i = 1; i < alarm_types_clear.len; i++) - alarm_types_clear[i] = 0 diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index ed2f01c725e5..0b3b371083e4 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -16,7 +16,4 @@ /mob/living/silicon/death(cause, gibbed, deathmessage) SSmob.living_misc_mobs -= src - if(in_contents_of(/obj/structure/machinery/recharge_station))//exit the recharge station - var/obj/structure/machinery/recharge_station/RC = loc - RC.go_out() - return ..(cause, gibbed, deathmessage) + return ..() diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm deleted file mode 100644 index fd88125fc0b6..000000000000 --- a/code/modules/mob/living/silicon/robot/analyzer.dm +++ /dev/null @@ -1,77 +0,0 @@ -// -//Robotic Component Analyser, basically a health analyser for robots -// -/obj/item/device/robotanalyzer - name = "cyborg analyzer" - icon_state = "robotanalyzer" - item_state = "analyzer" - desc = "A hand-held scanner able to diagnose robotic injuries." - flags_atom = FPRINT|CONDUCT - flags_equip_slot = SLOT_WAIST - throwforce = 3 - w_class = SIZE_SMALL - throw_speed = SPEED_VERY_FAST - throw_range = 10 - matter = list("metal" = 200) - - var/mode = 1; - -/obj/item/device/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob) - if((user.getBrainLoss() >= 60) && prob(50)) - to_chat(user, (SPAN_DANGER("You try to analyze the floor's vitals!"))) - for(var/mob/O in viewers(M, null)) - O.show_message(text(SPAN_DANGER("[user] has analyzed the floor's vitals!")), 1) - user.show_message(text(SPAN_NOTICE("Analyzing Results for The floor:\n\t Overall Status: Healthy")), 1) - user.show_message(text(SPAN_NOTICE("\t Damage Specifics: [0]-[0]-[0]-[0]")), 1) - user.show_message(SPAN_NOTICE("Key: Suffocation/Toxin/Burns/Brute"), 1) - user.show_message(SPAN_NOTICE("Body Temperature: ???"), 1) - return - if(!(istype(user, /mob/living/carbon/human) || SSticker) && SSticker.mode.name != "monkey") - to_chat(user, SPAN_DANGER("You don't have the dexterity to do this!")) - return - if(!isrobot(M) && !issynth(M)) - to_chat(user, SPAN_DANGER("You can't analyze non-robotic things!")) - return - - user.visible_message(SPAN_NOTICE("[user] has analyzed [M]'s components."), SPAN_NOTICE("You have analyzed [M]'s components.")) - var/BU = M.getFireLoss() > 50 ? "[M.getFireLoss()]" : M.getFireLoss() - var/BR = M.getBruteLoss() > 50 ? "[M.getBruteLoss()]" : M.getBruteLoss() - user.show_message(SPAN_NOTICE("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health - M.halloss]% functional"]")) - user.show_message("\t Key: Electronics/Brute", 1) - user.show_message("\t Damage Specifics: [BU] - [BR]") - if(M.tod && M.stat == DEAD) - user.show_message(SPAN_NOTICE("Time of Disable: [M.tod]")) - - if (isrobot(M)) - var/mob/living/silicon/robot/H = M - var/list/damaged = H.get_damaged_components(1,1,1) - user.show_message(SPAN_NOTICE("Localized Damage:"),1) - if(length(damaged)>0) - for(var/datum/robot_component/org in damaged) - var/organ_name = capitalize(org.name) - var/organ_destroyed_msg = (org.installed == -1) ? "DESTROYED ":"" - var/organ_elec_dmg_msg = (org.electronics_damage > 0) ? "[org.electronics_damage]":0 - var/organ_brute_dmg_msg = (org.brute_damage > 0) ? "[org.brute_damage]":0 - var/organ_toggled_msg = (org.toggled) ? "Toggled ON" : "Toggled OFF" - var/organ_powered_msg = (org.powered) ? "Power ON" : "Power OFF" - user.show_message(SPAN_NOTICE("\t [organ_name]: [organ_destroyed_msg][organ_elec_dmg_msg] - [organ_brute_dmg_msg] - [organ_toggled_msg] - [organ_powered_msg]"), 1) - else - user.show_message(SPAN_NOTICE("\t Components are OK."),1) - - if (issynth(M)) - var/mob/living/carbon/human/H = M - var/list/damaged = H.get_damaged_limbs(1,1) - user.show_message(SPAN_NOTICE("Localized Damage, Brute/Electronics:"),1) - if(length(damaged)>0) - for(var/obj/limb/org in damaged) - var/msg_display_name = "[capitalize(org.display_name)]" // Here for now until we purge this useless shitcode - var/msg_brute_dmg = "[(org.brute_dam > 0) ? SPAN_DANGER("[org.brute_dam]") : "0"]" - var/msg_burn_dmg = "[(org.brute_dam > 0) ? SPAN_DANGER("[org.brute_dam]") : "0"]" - user.show_message(SPAN_NOTICE("\t [msg_display_name]: [msg_brute_dmg] - [msg_burn_dmg]"), 1) - else - user.show_message(SPAN_NOTICE("\t Components are OK."),1) - - user.show_message(SPAN_NOTICE("Operating Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)"), 1) - - src.add_fingerprint(user) - return diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm deleted file mode 100644 index 1baec99bb0a9..000000000000 --- a/code/modules/mob/living/silicon/robot/component.dm +++ /dev/null @@ -1,257 +0,0 @@ -// TODO: remove the robot.mmi and robot.cell variables and completely rely on the robot component system - -/datum/robot_component/var/name -/datum/robot_component/var/installed = 0 -/datum/robot_component/var/powered = 0 -/datum/robot_component/var/toggled = 1 -/datum/robot_component/var/brute_damage = 0 -/datum/robot_component/var/electronics_damage = 0 -/datum/robot_component/var/idle_usage = 0 // Amount of power used every MC tick. In joules. -/datum/robot_component/var/active_usage = 0 // Amount of power used for every action. Actions are module-specific. Actuator for each tile moved, etc. -/datum/robot_component/var/max_damage = 30 // HP of this component. -/datum/robot_component/var/mob/living/silicon/robot/owner - -// The actual device object that has to be installed for this. -/datum/robot_component/var/external_type = null - -// The wrapped device(e.g. radio), only set if external_type isn't null -/datum/robot_component/var/obj/item/wrapped = null - -/datum/robot_component/New(mob/living/silicon/robot/R) - src.owner = R - -/datum/robot_component/Destroy(force, ...) - . = ..() - owner = null - QDEL_NULL(wrapped) - -/datum/robot_component/proc/install() -/datum/robot_component/proc/uninstall() - -/datum/robot_component/proc/destroy() - var/brokenstate = "broken" // Generic icon - if (istype(wrapped, /obj/item/robot_parts/robot_component)) - var/obj/item/robot_parts/robot_component/comp = wrapped - brokenstate = comp.icon_state_broken - if(wrapped) - qdel(wrapped) - - - wrapped = new/obj/item/broken_device - wrapped.icon_state = brokenstate // Module-specific broken icons! Yay! - - // The thing itself isn't there anymore, but some fried remains are. - installed = -1 - uninstall() - -/datum/robot_component/proc/take_damage(brute, electronics, sharp, edge) - if(installed != 1) return - - brute_damage += brute - electronics_damage += electronics - - // if(brute_damage + electronics_damage >= max_damage) destroy() - -/datum/robot_component/proc/heal_damage(brute, electronics) - if(installed != 1) - // If it's not installed, can't repair it. - return 0 - - brute_damage = max(0, brute_damage - brute) - electronics_damage = max(0, electronics_damage - electronics) - -/datum/robot_component/proc/is_powered() - return (installed == 1) && (brute_damage + electronics_damage < max_damage) && (!idle_usage || powered) - -/datum/robot_component/proc/update_power_state() - if(toggled == 0) - powered = 0 - return - if(owner.cell && owner.cell.charge >= idle_usage) - owner.cell_use_power(idle_usage) - powered = 1 - else - powered = 0 - - -// ARMOUR -// Protects the cyborg from damage. Usually first module to be hit -// No power usage -/datum/robot_component/armour - name = "armour plating" - external_type = /obj/item/robot_parts/robot_component/armour - max_damage = 60 - - -// ACTUATOR -// Enables movement. -// Uses no power when idle. Uses 200J for each tile the cyborg moves. -/datum/robot_component/actuator - name = "actuator" - idle_usage = 0 - active_usage = 200 - external_type = /obj/item/robot_parts/robot_component/actuator - max_damage = 50 - - -//A fixed and much cleaner implementation of /tg/'s special snowflake code. -/datum/robot_component/actuator/is_powered() - return (installed == 1) && (brute_damage + electronics_damage < max_damage) - - -// POWER CELL -// Stores power (how unexpected..) -// No power usage -/datum/robot_component/cell - name = "power cell" - max_damage = 50 - -/datum/robot_component/cell/destroy() - ..() - owner.cell = null - - -// RADIO -// Enables radio communications -// Uses no power when idle. Uses 10J for each received radio message, 50 for each transmitted message. -/datum/robot_component/radio - name = "radio" - external_type = /obj/item/robot_parts/robot_component/radio - idle_usage = 15 //it's not actually possible to tell when we receive a message over our radio, so just use 10W every tick for passive listening - active_usage = 75 //transmit power - max_damage = 40 - - -// BINARY RADIO -// Enables binary communications with other cyborgs/AIs -// Uses no power when idle. Uses 10J for each received radio message, 50 for each transmitted message -/datum/robot_component/binary_communication - name = "binary communication device" - external_type = /obj/item/robot_parts/robot_component/binary_communication_device - idle_usage = 5 - active_usage = 25 - max_damage = 30 - - -// CAMERA -// Enables cyborg vision. Can also be remotely accessed via consoles. -// Uses 10J constantly -/datum/robot_component/camera - name = "camera" - external_type = /obj/item/robot_parts/robot_component/camera - idle_usage = 10 - max_damage = 40 - var/obj/structure/machinery/camera/camera - -/datum/robot_component/camera/New(mob/living/silicon/robot/R) - ..() - camera = R.camera - -/datum/robot_component/camera/update_power_state() - ..() - if (camera) - //check if camera component was deactivated - if (!powered && camera.status != powered) - camera.kick_viewers() - camera.status = powered - -/datum/robot_component/camera/install() - if (camera) - camera.status = 1 - -/datum/robot_component/camera/uninstall() - if (camera) - camera.status = 0 - camera.kick_viewers() - -/datum/robot_component/camera/destroy() - if (camera) - camera.status = 0 - camera.kick_viewers() - -// SELF DIAGNOSIS MODULE -// Analyses cyborg's modules, providing damage readouts and basic information -// Uses 1kJ burst when analysis is done -/datum/robot_component/diagnosis_unit - name = "self-diagnosis unit" - active_usage = 1000 - external_type = /obj/item/robot_parts/robot_component/diagnosis_unit - max_damage = 30 - - - - -// HELPER STUFF - - - -// Initializes cyborg's components. Technically, adds default set of components to new borgs -/mob/living/silicon/robot/proc/initialize_components() - components["actuator"] = new/datum/robot_component/actuator(src) - components["radio"] = new/datum/robot_component/radio(src) - components["power cell"] = new/datum/robot_component/cell(src) - components["diagnosis unit"] = new/datum/robot_component/diagnosis_unit(src) - components["camera"] = new/datum/robot_component/camera(src) - components["comms"] = new/datum/robot_component/binary_communication(src) - components["armour"] = new/datum/robot_component/armour(src) - -// Checks if component is functioning -/mob/living/silicon/robot/proc/is_component_functioning(module_name) - var/datum/robot_component/C = components[module_name] - return C && C.installed == 1 && C.toggled && C.is_powered() - -// Returns component by it's string name -/mob/living/silicon/robot/proc/get_component(component_name) - var/datum/robot_component/C = components[component_name] - return C - - - -// COMPONENT OBJECTS - - - -// Component Objects -// These objects are visual representation of modules - -/obj/item/broken_device - name = "broken component" - icon = 'icons/obj/items/robot_component.dmi' - icon_state = "broken" - -/obj/item/robot_parts/robot_component - icon = 'icons/obj/items/robot_component.dmi' - icon_state = "working" - var/brute = 0 - var/burn = 0 - var/icon_state_broken = "broken" - -/obj/item/robot_parts/robot_component/binary_communication_device - name = "binary communication device" - icon_state = "binradio" - icon_state_broken = "binradio_broken" - -/obj/item/robot_parts/robot_component/actuator - name = "actuator" - icon_state = "motor" - icon_state_broken = "motor_broken" - -/obj/item/robot_parts/robot_component/armour - name = "armour plating" - icon_state = "armor" - icon_state_broken = "armor_broken" - -/obj/item/robot_parts/robot_component/camera - name = "camera" - icon_state = "camera" - icon_state_broken = "camera_broken" - -/obj/item/robot_parts/robot_component/diagnosis_unit - name = "diagnosis unit" - icon_state = "analyser" - icon_state_broken = "analyser_broken" - -/obj/item/robot_parts/robot_component/radio - name = "radio" - icon_state = "radio" - icon_state_broken = "radio_broken" diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm deleted file mode 100644 index d664f5be8767..000000000000 --- a/code/modules/mob/living/silicon/robot/death.dm +++ /dev/null @@ -1,16 +0,0 @@ -/mob/living/silicon/robot/dust() - //Delete the MMI first so that it won't go popping out. - QDEL_NULL(mmi) - ..() - -/mob/living/silicon/robot/death(cause, gibbed) - if(camera) - camera.status = 0 - if(module) - var/obj/item/device/gripper/G = locate(/obj/item/device/gripper) in module - if(G) G.drop_item() - remove_robot_verbs() - ..(gibbed,"is destroyed!") - playsound(src.loc, 'sound/effects/metal_crash.ogg', 100) - robogibs(src) - qdel(src) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm deleted file mode 100644 index 6bb01661fbd5..000000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ /dev/null @@ -1,258 +0,0 @@ -/mob/living/silicon/robot/drone - name = "drone" - real_name = "drone" - icon = 'icons/mob/robots.dmi' - icon_state = "repairbot" - maxHealth = 35 - health = 35 - universal_speak = 0 - universal_understand = 1 - gender = NEUTER - braintype = "Robot" - lawupdate = 0 - density = TRUE - req_access = list(ACCESS_MARINE_ENGINEERING, ACCESS_MARINE_RESEARCH) - integrated_light_power = 2 - local_transmit = 1 - layer = ABOVE_LYING_MOB_LAYER - var/nicknumber = 0 - - // We need to keep track of a few module items so we don't need to do list operations - // every time we need them. These get set in Initialize() after the module is chosen. - var/obj/item/stack/sheet/metal/cyborg/stack_metal = null - var/obj/item/stack/sheet/wood/cyborg/stack_wood = null - var/obj/item/stack/sheet/glass/cyborg/stack_glass = null - var/obj/item/stack/sheet/mineral/plastic/cyborg/stack_plastic = null - var/obj/item/device/matter_decompiler/decompiler = null - - //Used for self-mailing. - var/mail_destination = "" - - holder_type = /obj/item/holder/drone - -/mob/living/silicon/robot/drone/Initialize() - nicknumber = rand(100,999) - - . = ..() - - - add_verb(src, /mob/living/proc/hide) - - if(camera && ("Robots" in camera.network)) - camera.network.Add("Engineering") - - //They are unable to be upgraded, so let's give them a bit of a better battery. - cell.maxcharge = 50000 - cell.charge = 50000 - - // NO BRAIN. - mmi = null - - //We need to screw with their HP a bit. They have around one fifth as much HP as a full borg. - for(var/V in components) if(V != "power cell") - var/datum/robot_component/C = components[V] - C.max_damage = 10 - - remove_verb(src, list( - /mob/living/silicon/robot/verb/Namepick, - /mob/living/silicon/robot/drone/verb/set_mail_tag, // we dont have mail tubes - )) - add_verb(src, list( - /mob/living/silicon/robot/drone/verb/Drone_name_pick, - /mob/living/silicon/robot/drone/verb/Power_up, - )) - - module = new /obj/item/circuitboard/robot_module/drone(src) - - //Grab stacks. - stack_metal = locate(/obj/item/stack/sheet/metal/cyborg) in src.module - stack_wood = locate(/obj/item/stack/sheet/wood/cyborg) in src.module - stack_glass = locate(/obj/item/stack/sheet/glass/cyborg) in src.module - stack_plastic = locate(/obj/item/stack/sheet/mineral/plastic/cyborg) in src.module - - //Grab decompiler. - decompiler = locate(/obj/item/device/matter_decompiler) in src.module - - //Some tidying-up. - flavor_text = "This is an XP-45 Engineering Drone, one of the many fancy things that come out of the Weyland-Yutani Research Department. It's designed to assist both ship repairs as well as ground missions. Shiny!" - update_icons() - -/mob/living/silicon/robot/drone/initialize_pass_flags(datum/pass_flags_container/PF) - ..() - if (PF) - PF.flags_pass = PASS_MOB_THRU|PASS_FLAGS_CRAWLER - -/mob/living/silicon/robot/drone/init() - connected_ai = null - - aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src) - playsound(src.loc, 'sound/machines/twobeep.ogg', 25, 0) - -/mob/living/silicon/robot/drone/Destroy() - QDEL_NULL(aiCamera) - stack_metal = null - stack_wood = null - stack_glass = null - stack_plastic = null - decompiler = null - return ..() - -//Redefining some robot procs... -/mob/living/silicon/robot/drone/updatename() - var/new_name = "XP-45 Engineering Drone ([nicknumber])" - change_real_name(src, new_name) - -/mob/living/silicon/robot/drone/update_icons() - - overlays.Cut() - if(stat == 0) - overlays += "eyes-[icon_state]" - else - overlays -= "eyes" - -/mob/living/silicon/robot/drone/choose_icon() - return - -/mob/living/silicon/robot/drone/pick_module() - return - -//Drones cannot be upgraded with borg modules so we need to catch some items before they get used in ..(). -/mob/living/silicon/robot/drone/attackby(obj/item/W, mob/living/user) - - if(istype(W, /obj/item/robot/upgrade/)) - to_chat(user, SPAN_DANGER("The maintenance drone chassis not compatible with \the [W].")) - return - - else if (HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) - to_chat(user, "The machine is hermetically sealed. You can't open the case.") - return - - ..() - -//DRONE LIFE/DEATH - -//For some goddamn reason robots have this hardcoded. Redefining it for our fragile friends here. -/mob/living/silicon/robot/drone/updatehealth() - if(status_flags & GODMODE) - health = health - set_stat(CONSCIOUS) - return - health = health - (getBruteLoss() + getFireLoss()) - return - -//Easiest to check this here, then check again in the robot proc. -//Standard robots use config for crit, which is somewhat excessive for these guys. -//Drones killed by damage will gib. -/mob/living/silicon/robot/drone/handle_regular_status_updates() - - if(health <= -35 && src.stat != 2) - timeofdeath = world.time - death(last_damage_data) //Possibly redundant, having trouble making death() cooperate. - gib(last_damage_data) - return - ..() - -//DRONE MOVEMENT. -/mob/living/silicon/robot/drone/Process_Spaceslipping(prob_slip) - //TODO: Consider making a magboot item for drones to equip. ~Z - return 0 - -//CONSOLE PROCS -/mob/living/silicon/robot/drone/proc/shut_down() - if(stat != 2) - to_chat(src, SPAN_DANGER("You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.")) - death() - -//Reboot procs. - -/mob/living/silicon/robot/drone/proc/request_player() - for(var/mob/dead/observer/O in GLOB.observer_list) - if(jobban_isbanned(O, "Cyborg")) - continue - -/mob/living/silicon/robot/drone/proc/question(client/C) - spawn(0) - if(!C || jobban_isbanned(C,"Cyborg")) return - var/response = alert(C, "Someone is attempting to reboot a maintenance drone. Would you like to play as one?", "Maintenance drone reboot", "Yes", "No", "Never for this round.") - if(!C || ckey) - return - else if(response == "Yes") - transfer_personality(C) - -/mob/living/silicon/robot/drone/proc/transfer_personality(client/player) - - if(!player) return - player.change_view(GLOB.world_view_size) - src.ckey = player.ckey - - if(player.mob && player.mob.mind) - player.mob.mind.transfer_to(src) - - lawupdate = 0 - to_chat(src, "Systems rebooted. Loading base pattern maintenance protocol... loaded.") - to_chat(src, "
      You are a maintenance drone, a tiny-brained robotic repair machine.") - to_chat(src, "You have no individual will, no personality, and no drives or urges other than your laws.") - to_chat(src, "Use :d to talk to other drones and say to speak silently to your nearby fellows.") - to_chat(src, "Remember, you are lawed against interference with the crew.") - to_chat(src, "Don't invade their worksites and don't steal their resources.") - to_chat(src, "If a crewmember has noticed you, you are probably breaking your third law.") - -/mob/living/silicon/robot/drone/Collide(atom/A) - if (!istype(A,/obj/structure/machinery/door) && \ - !istype(A,/obj/structure/machinery/recharge_station) && \ - !istype(A,/obj/structure/machinery/disposal/deliveryChute) && \ - !istype(A,/obj/structure/machinery/teleport/hub) && \ - !istype(A,/obj/effect/portal) - ) return - ..() - return - -/mob/living/silicon/robot/drone/Collided(atom/movable/AM) - return - -/mob/living/silicon/robot/drone/start_pulling(atom/movable/AM) - - if(istype(AM,/obj/item/pipe) || istype(AM,/obj/structure/disposalconstruct)) - ..() - else if(istype(AM,/obj/item)) - var/obj/item/O = AM - if(O.w_class > SIZE_SMALL) - to_chat(src, SPAN_WARNING("You are too small to pull that.")) - return - else - ..() - else - to_chat(src, SPAN_WARNING("You are too small to pull that.")) - return - -/mob/living/silicon/robot/drone/add_robot_verbs() - -/mob/living/silicon/robot/drone/remove_robot_verbs() - -/mob/living/silicon/robot/drone/verb/Drone_name_pick() - set category = "Robot Commands" - if(custom_name) - return 0 - - spawn(0) - var/newname - newname = tgui_input_list(src,"You are drone. Pick a name, no duplicates allowed.", "Drone name pick", GLOB.greek_letters) - if(custom_name) - return - - for (var/mob/living/silicon/robot/drone/A in GLOB.mob_list) - if(newname == A.nicknumber) - to_chat(src, SPAN_WARNING("That identifier is taken, pick again.")) - return - - custom_name = newname - nicknumber = newname - - updatename() - update_icons() - -/mob/living/silicon/robot/drone/verb/Power_up() - set category = "Robot Commands" - if(resting) - resting = 0 - to_chat(src, SPAN_NOTICE("You begin powering up.")) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm deleted file mode 100644 index 261e6ffc7623..000000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ /dev/null @@ -1,29 +0,0 @@ -// DRONE ABILITIES -/mob/living/silicon/robot/drone/verb/set_mail_tag() - set name = "Set Mail Tag" - set desc = "Tag yourself for delivery through the disposals system." - set category = "Drone" - - var/new_tag = tgui_input_list(usr, "Select the desired destination.", "Set Mail Tag", null, GLOB.tagger_locations) - - if(!new_tag) - mail_destination = "" - return - - to_chat(src, SPAN_NOTICE(" You configure your internal beacon, tagging yourself for delivery to '[new_tag]'.")) - mail_destination = new_tag - - //Auto flush if we use this verb inside a disposal chute. - var/obj/structure/machinery/disposal/D = src.loc - if(istype(D)) - to_chat(src, SPAN_NOTICE(" \The [D] acknowledges your signal.")) - D.flush_count = D.flush_after_ticks - - return - -//Actual picking-up event. -/mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob) - - if(M.a_intent == INTENT_HELP) - get_scooped(M) - ..() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm deleted file mode 100644 index 2433720d23c1..000000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ /dev/null @@ -1,111 +0,0 @@ -/obj/structure/machinery/computer/drone_control - name = "Maintenance Drone Control" - desc = "Used to monitor the station's drone population and the assembler that services them." - icon = 'icons/obj/structures/machinery/computer.dmi' - icon_state = "power" - req_one_access = list(ACCESS_MARINE_ENGINEERING, ACCESS_CIVILIAN_ENGINEERING) - circuit = /obj/item/circuitboard/computer/drone_control - - //Used when pinging drones. - var/drone_call_area = "Engineering" - //Used to enable or disable drone fabrication. - var/obj/structure/machinery/drone_fabricator/dronefab - -/obj/structure/machinery/computer/drone_control/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/computer/drone_control/attack_hand(mob/user as mob) - if(..()) - return - - if(!allowed(user)) - to_chat(user, SPAN_DANGER("Access denied.")) - return - - user.set_interaction(src) - var/dat - dat += "Maintenance Units
      " - - for(var/mob/living/silicon/robot/drone/D in GLOB.mob_list) - dat += "
      [D.real_name] ([D.stat == 2 ? "INACTIVE" : "ACTIVE"])" - dat += "
      Cell charge: [D.cell.charge]/[D.cell.maxcharge]." - dat += "
      Currently located in: [get_area(D)]." - dat += "
      Resync|Shutdown
      " - - dat += "

      Request drone presence in area: [drone_call_area] (Send ping)" - - dat += "

      Drone fabricator: " - dat += "[dronefab ? "[(dronefab.produce_drones && !(dronefab.stat & NOPOWER)) ? "ACTIVE" : "INACTIVE"]" : "FABRICATOR NOT DETECTED. (search)"]" - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") - return - - -/obj/structure/machinery/computer/drone_control/Topic(href, href_list) - if(..()) - return - - if(!allowed(usr)) - to_chat(usr, SPAN_DANGER("Access denied.")) - return - - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (isRemoteControlling(usr))) - usr.set_interaction(src) - - if (href_list["setarea"]) - - //Probably should consider using another list, but this one will do. - var/t_area = tgui_input_list(usr, "Select the area to ping.", "Set Target Area", null, GLOB.tagger_locations) - - if(!t_area) - return - - drone_call_area = t_area - to_chat(usr, SPAN_NOTICE(" You set the area selector to [drone_call_area].")) - - else if (href_list["ping"]) - - to_chat(usr, SPAN_NOTICE(" You issue a maintenance request for all active drones, highlighting [drone_call_area].")) - for(var/mob/living/silicon/robot/drone/D in GLOB.mob_list) - if(D.client && D.stat == 0) - to_chat(D, "-- Maintenance drone presence requested in: [drone_call_area].") - - else if (href_list["shutdown"]) - - var/mob/living/silicon/robot/drone/D = locate(href_list["shutdown"]) - - if(D.stat != 2) - to_chat(usr, SPAN_DANGER("You issue a kill command for the unfortunate drone.")) - message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.") - log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.") - D.shut_down() - - else if (href_list["search_fab"]) - if(dronefab) - return - - for(var/obj/structure/machinery/drone_fabricator/fab in oview(3,src)) - - if(fab.stat & NOPOWER) - continue - - dronefab = fab - to_chat(usr, SPAN_NOTICE(" Drone fabricator located.")) - return - - to_chat(usr, SPAN_DANGER("Unable to locate drone fabricator.")) - - else if (href_list["toggle_fab"]) - - if(!dronefab) - return - - if(get_dist(src,dronefab) > 3) - dronefab = null - to_chat(usr, SPAN_DANGER("Unable to locate drone fabricator.")) - return - - dronefab.produce_drones = !dronefab.produce_drones - to_chat(usr, SPAN_NOTICE(" You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator.")) - - src.updateUsrDialog() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_damage.dm b/code/modules/mob/living/silicon/robot/drone/drone_damage.dm deleted file mode 100644 index a0245d8c8cab..000000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone_damage.dm +++ /dev/null @@ -1,24 +0,0 @@ -//Redefining some robot procs, since drones can't be repaired and really shouldn't take component damage. -/mob/living/silicon/robot/drone/take_overall_damage(brute = 0, burn = 0, sharp = 0, used_weapon = null) - bruteloss += brute - fireloss += burn - -/mob/living/silicon/robot/drone/heal_overall_damage(brute, burn) - - bruteloss -= brute - fireloss -= burn - - if(bruteloss<0) bruteloss = 0 - if(fireloss<0) fireloss = 0 - -/mob/living/silicon/robot/drone/take_limb_damage(brute = 0, burn = 0, sharp = 0) - take_overall_damage(brute,burn) - -/mob/living/silicon/robot/drone/heal_limb_damage(brute, burn) - heal_overall_damage(brute,burn) - -/mob/living/silicon/robot/drone/getFireLoss() - return fireloss - -/mob/living/silicon/robot/drone/getBruteLoss() - return bruteloss diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm deleted file mode 100644 index bfe2a5bd7a39..000000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ /dev/null @@ -1,83 +0,0 @@ - - -//PRETTIER TOOL LIST. -/mob/living/silicon/robot/drone/installed_modules() - - if(weapon_lock) - to_chat(src, SPAN_DANGER("Weapon lock active, unable to use modules! Count:[weaponlock_time]")) - return - - if(!module) - module = new /obj/item/circuitboard/robot_module/drone(src) - - var/dat = "Drone modules\n" - dat += {" - Activated Modules -
      - Module 1: [module_state_1 ? "[module_state_1]" : "No Module"]
      - Module 2: [module_state_2 ? "
      [module_state_2]" : "No Module"]
      - Module 3: [module_state_3 ? "
      [module_state_3]" : "No Module"]
      -
      - Installed Modules

      "} - - - var/tools = "Tools and devices
      " - var/resources = "
      Resources
      " - - for (var/O in module.modules) - - var/module_string = "" - - if (!O) - module_string += text("Resource depleted
      ") - else if(activated(O)) - module_string += text("[O]: Activated
      ") - else - module_string += text("[O]:
      Activate
      ") - - if((istype(O,/obj/item) || istype(O,/obj/item/device)) && !(istype(O,/obj/item/stack/cable_coil))) - tools += module_string - else - resources += module_string - - dat += tools - - dat += resources - - src << browse(dat, "window=robotmod") - -//Putting the decompiler here to avoid doing list checks every tick. -/mob/living/silicon/robot/drone/use_power() - - ..() - if(!src.has_power || !decompiler) - return - - //The decompiler replenishes drone stores from hoovered-up junk each tick. - for(var/type in decompiler.stored_comms) - if(decompiler.stored_comms[type] > 0) - var/obj/item/stack/sheet/stack - switch(type) - if("metal") - if(!stack_metal) - stack_metal = new /obj/item/stack/sheet/metal/cyborg(src.module) - stack_metal.amount = 1 - stack = stack_metal - if("glass") - if(!stack_glass) - stack_glass = new /obj/item/stack/sheet/glass/cyborg(src.module) - stack_glass.amount = 1 - stack = stack_glass - if("wood") - if(!stack_wood) - stack_wood = new /obj/item/stack/sheet/wood/cyborg(src.module) - stack_wood.amount = 1 - stack = stack_wood - if("plastic") - if(!stack_plastic) - stack_plastic = new /obj/item/stack/sheet/mineral/plastic/cyborg(src.module) - stack_plastic.amount = 1 - stack = stack_plastic - - stack.amount++ - decompiler.stored_comms[type]--; diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm deleted file mode 100644 index 63c0e69a9835..000000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ /dev/null @@ -1,77 +0,0 @@ -/obj/structure/machinery/drone_fabricator - name = "drone fabricator" - desc = "A large automated factory for producing maintenance drones." - - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 20 - active_power_usage = 5000 - - var/drone_progress = 0 - var/produce_drones = 1 - var/time_last_drone = 500 - - icon = 'icons/obj/structures/machinery/drone_fab.dmi' - icon_state = "drone_fab_idle" - -/obj/structure/machinery/drone_fabricator/New() - ..() - start_processing() - -/obj/structure/machinery/drone_fabricator/power_change() - ..() - if (stat & NOPOWER) - icon_state = "drone_fab_nopower" - -/obj/structure/machinery/drone_fabricator/process() - - if(SSticker.current_state < GAME_STATE_PLAYING) - return - - if(stat & NOPOWER || !produce_drones) - if(icon_state != "drone_fab_nopower") icon_state = "drone_fab_nopower" - return - - if(drone_progress >= 100) - icon_state = "drone_fab_idle" - return - - icon_state = "drone_fab_active" - var/elapsed = world.time - time_last_drone - drone_progress = round((elapsed/CONFIG_GET(number/drone_build_time))*100) - - if(drone_progress >= 100) - visible_message("\The [src] voices a strident beep, indicating a drone chassis is prepared.") - -/obj/structure/machinery/drone_fabricator/get_examine_text(mob/user) - . = ..() - if(produce_drones && drone_progress >= 100 && istype(user,/mob/dead) && CONFIG_GET(flag/allow_drone_spawn) && count_drones() < CONFIG_GET(number/max_maint_drones)) - . += "
      A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone." - -/obj/structure/machinery/drone_fabricator/proc/count_drones() - var/drones = 0 - for(var/mob/living/silicon/robot/drone/D in GLOB.player_list) - if(D.key && D.client) - drones++ - return drones - -/obj/structure/machinery/drone_fabricator/proc/create_drone(client/player) - - if(stat & NOPOWER) - return - - if(!produce_drones || !CONFIG_GET(flag/allow_drone_spawn) || count_drones() >= CONFIG_GET(number/max_maint_drones)) - return - - if(!player || !istype(player.mob,/mob/dead)) - return - - visible_message("\The [src] churns and grinds as it lurches into motion, disgorging a shiny new drone after a few moments.") - flick("h_lathe_leave",src) - - time_last_drone = world.time - var/mob/living/silicon/robot/drone/new_drone = new(get_turf(src)) - new_drone.transfer_personality(player) - - drone_progress = 0 diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm deleted file mode 100644 index b349b42c809a..000000000000 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ /dev/null @@ -1,43 +0,0 @@ -/mob/living/silicon/robot/get_examine_text(mob/user) - if( (user.sdisabilities & DISABILITY_BLIND || user.blinded || user.stat) && !istype(user,/mob/dead/observer) ) - return list(SPAN_NOTICE("Something is there but you can't see it.")) - - var/msg = "*---------*\nThis is [icon2html(src)] \a [src][custom_name ? ", [modtype] [braintype]" : ""]!\n" - msg += "" - if (src.getBruteLoss()) - if (src.getBruteLoss() < maxHealth*0.5) - msg += "It looks slightly dented. A welding tool would buff that out in no time.\n" - else - msg += "It looks severely dented! A welding tool would buff that out in no time.\n" - if (src.getFireLoss()) - if (src.getFireLoss() < maxHealth*0.5) - msg += "It looks slightly charred. Its internal wiring will need to be repaired with a cable coil.\n" - else - msg += "It looks severely burnt and heat-warped! Its internal wiring will need to be repaired with a cable coil.\n" - msg += "" - - if(opened) - msg += SPAN_WARNING("Its cover is open and the power cell is [cell ? "installed" : "missing"].\n") - else - msg += "Its cover is closed[locked ? "" : ", and looks unlocked"].\n" - - if(cell && cell.charge <= 0) - msg += SPAN_WARNING("Its battery indicator is blinking red!
      \n") - if(!has_power) - msg += SPAN_WARNING("It appears to be running on backup power.\n") - - switch(src.stat) - if(CONSCIOUS) - if(!src.client) msg += "It appears to be in stand-by mode.\n" //afk - if(UNCONSCIOUS) msg += SPAN_WARNING("It doesn't seem to be responding.\n") - if(DEAD) msg += "It looks completely unsalvageable.\n" - msg += "*---------*" - - if(print_flavor_text()) msg += "\n[print_flavor_text()]\n" - - if (pose) - if( findtext(pose,".",length(pose)) == 0 && findtext(pose,"!",length(pose)) == 0 && findtext(pose,"?",length(pose)) == 0 ) - pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "\nIt is [pose]" - - return list(msg) diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm deleted file mode 100644 index 51bbfd24ccb0..000000000000 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ /dev/null @@ -1,198 +0,0 @@ -//These procs handle putting s tuff in your hand. It's probably best to use these rather than setting stuff manually -//as they handle all relevant stuff like adding it to the player's screen and such - -//Returns the thing in our active hand (whatever is in our active module-slot, in this case) -/mob/living/silicon/robot/get_active_hand() - return module_active - -/*-------TODOOOOOOOOOO--------*/ -/mob/living/silicon/robot/proc/uneq_active() - if(isnull(module_active)) - return - if(module_state_1 == module_active) - if(istype(module_state_1,/obj/item/robot/sight)) - sight_mode &= ~module_state_1:sight_mode - if (client) - client.remove_from_screen(module_state_1) - contents -= module_state_1 - module_active = null - module_state_1 = null - inv1.icon_state = "inv1" - else if(module_state_2 == module_active) - if(istype(module_state_2,/obj/item/robot/sight)) - sight_mode &= ~module_state_2:sight_mode - if (client) - client.remove_from_screen(module_state_2) - contents -= module_state_2 - module_active = null - module_state_2 = null - inv2.icon_state = "inv2" - else if(module_state_3 == module_active) - if(istype(module_state_3,/obj/item/robot/sight)) - sight_mode &= ~module_state_3:sight_mode - if (client) - client.remove_from_screen(module_state_3) - contents -= module_state_3 - module_active = null - module_state_3 = null - inv3.icon_state = "inv3" - update_icons() - -/mob/living/silicon/robot/proc/uneq_all() - module_active = null - - if(module_state_1) - if(istype(module_state_1,/obj/item/robot/sight)) - sight_mode &= ~module_state_1:sight_mode - if (client) - client.remove_from_screen(module_state_1) - contents -= module_state_1 - module_state_1 = null - inv1.icon_state = "inv1" - if(module_state_2) - if(istype(module_state_2,/obj/item/robot/sight)) - sight_mode &= ~module_state_2:sight_mode - if (client) - client.remove_from_screen(module_state_2) - contents -= module_state_2 - module_state_2 = null - inv2.icon_state = "inv2" - if(module_state_3) - if(istype(module_state_3,/obj/item/robot/sight)) - sight_mode &= ~module_state_3:sight_mode - if (client) - client.remove_from_screen(module_state_3) - contents -= module_state_3 - module_state_3 = null - inv3.icon_state = "inv3" - update_icons() - -/mob/living/silicon/robot/proc/activated(obj/item/O) - if(module_state_1 == O) - return 1 - else if(module_state_2 == O) - return 1 - else if(module_state_3 == O) - return 1 - else - return 0 - -//Helper procs for cyborg modules on the UI. -//These are hackish but they help clean up code elsewhere. - -//module_selected(module) - Checks whether the module slot specified by "module" is currently selected. -/mob/living/silicon/robot/proc/module_selected(module) //Module is 1-3 - return module == get_selected_module() - -//module_active(module) - Checks whether there is a module active in the slot specified by "module". -/mob/living/silicon/robot/proc/module_active(module) //Module is 1-3 - if(module < 1 || module > 3) return 0 - - switch(module) - if(1) - if(module_state_1) - return 1 - if(2) - if(module_state_2) - return 1 - if(3) - if(module_state_3) - return 1 - return 0 - -//get_selected_module() - Returns the slot number of the currently selected module. Returns 0 if no modules are selected. -/mob/living/silicon/robot/proc/get_selected_module() - if(module_state_1 && module_active == module_state_1) - return 1 - else if(module_state_2 && module_active == module_state_2) - return 2 - else if(module_state_3 && module_active == module_state_3) - return 3 - - return 0 - -//select_module(module) - Selects the module slot specified by "module" -/mob/living/silicon/robot/proc/select_module(module) //Module is 1-3 - if(module < 1 || module > 3) return - - if(!module_active(module)) return - - switch(module) - if(1) - if(module_active != module_state_1) - inv1.icon_state = "inv1 +a" - inv2.icon_state = "inv2" - inv3.icon_state = "inv3" - module_active = module_state_1 - return - if(2) - if(module_active != module_state_2) - inv1.icon_state = "inv1" - inv2.icon_state = "inv2 +a" - inv3.icon_state = "inv3" - module_active = module_state_2 - return - if(3) - if(module_active != module_state_3) - inv1.icon_state = "inv1" - inv2.icon_state = "inv2" - inv3.icon_state = "inv3 +a" - module_active = module_state_3 - return - return - -//deselect_module(module) - Deselects the module slot specified by "module" -/mob/living/silicon/robot/proc/deselect_module(module) //Module is 1-3 - if(module < 1 || module > 3) return - - switch(module) - if(1) - if(module_active == module_state_1) - inv1.icon_state = "inv1" - module_active = null - return - if(2) - if(module_active == module_state_2) - inv2.icon_state = "inv2" - module_active = null - return - if(3) - if(module_active == module_state_3) - inv3.icon_state = "inv3" - module_active = null - return - return - -//toggle_module(module) - Toggles the selection of the module slot specified by "module". -/mob/living/silicon/robot/proc/toggle_module(module) //Module is 1-3 - if(module < 1 || module > 3) return - - if(module_selected(module)) - deselect_module(module) - else - if(module_active(module)) - select_module(module) - else - deselect_module(get_selected_module()) //If we can't do select anything, at least deselect the current module. - return - -//cycle_modules() - Cycles through the list of selected modules. -/mob/living/silicon/robot/proc/cycle_modules() - var/slot_start = get_selected_module() - if(slot_start) deselect_module(slot_start) //Only deselect if we have a selected slot. - - var/slot_num - if(slot_start == 0) - slot_num = 1 - slot_start = 2 - else - slot_num = slot_start + 1 - - while(slot_start != slot_num) //If we wrap around without finding any free slots, just give up. - if(module_active(slot_num)) - select_module(slot_num) - return - slot_num++ - if(slot_num > 3) slot_num = 1 //Wrap around. - - return diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm deleted file mode 100644 index ac031e74e11f..000000000000 --- a/code/modules/mob/living/silicon/robot/life.dm +++ /dev/null @@ -1,270 +0,0 @@ -/mob/living/silicon/robot/Life(delta_time) - set invisibility = 0 - set background = 1 - - if (src.monkeyizing) - return - - src.blinded = FALSE - - //Status updates, death etc. - clamp_values() - handle_regular_status_updates() - - if(client) - handle_regular_hud_updates() - update_items() - if (src.stat != DEAD) //still using power - use_power() - process_killswitch() - process_locks() - -/mob/living/silicon/robot/proc/clamp_values() - -// set_effect(min(stunned, 30), STUN) -// set_effect(min(knocked_out, 30), PARALYZE) -// set_effect(min(knocked_down, 20), WEAKEN) - sleeping = 0 - apply_damage(0, BRUTE) - apply_damage(0, TOX) - apply_damage(0, OXY) - apply_damage(0, BURN) - -/mob/living/silicon/robot/proc/use_power() - // Debug only - used_power_this_tick = 0 - for(var/V in components) - var/datum/robot_component/C = components[V] - C.update_power_state() - - if ( cell && is_component_functioning("power cell") && src.cell.charge > 0 ) - if(src.module_state_1) - cell_use_power(50) // 50W load for every enabled tool TODO: tool-specific loads - if(src.module_state_2) - cell_use_power(50) - if(src.module_state_3) - cell_use_power(50) - - if(lights_on) - cell_use_power(30) // 30W light. Normal lights would use ~15W, but increased for balance reasons. - - src.has_power = 1 - else - if (src.has_power) - to_chat(src, SPAN_DANGER("You are now running on emergency backup power.")) - src.has_power = 0 - if(lights_on) // Light is on but there is no power! - lights_on = 0 - set_light(0) - -/mob/living/silicon/robot/handle_regular_status_updates(regular_update = TRUE) - - if(src.camera && !scrambledcodes) - if(src.stat == 2 || isWireCut(5)) - src.camera.status = 0 - else - src.camera.status = 1 - - updatehealth() - - if(regular_update && src.sleeping) - apply_effect(3, PARALYZE) - src.sleeping-- - - if(regular_update && src.resting) - apply_effect(5, WEAKEN) - - if(health < HEALTH_THRESHOLD_DEAD && stat != DEAD) //die only once - death() - - if (stat != DEAD) //Alive. - if (HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || HAS_TRAIT(src, TRAIT_INCAPACITATED) || !has_power) //Stunned etc. - set_stat(UNCONSCIOUS) - if(regular_update) - if (HAS_TRAIT(src, TRAIT_INCAPACITATED)) - adjust_effect(-1, STUN) - if (HAS_TRAIT(src, TRAIT_FLOORED)) - adjust_effect(-1, WEAKEN) - if (HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) - adjust_effect(-1, PARALYZE) - src.blinded = TRUE - else - src.blinded = FALSE - - else //Not stunned. - src.set_stat(CONSCIOUS) - - else //Dead. - src.blinded = TRUE - src.set_stat(DEAD) - - if(!regular_update) - return - - if (src.stuttering) src.stuttering-- - - if (src.eye_blind) - src.ReduceEyeBlind(1) - src.blinded = TRUE - - if (src.ear_deaf > 0) src.ear_deaf-- - if (src.ear_damage < 25) - src.ear_damage -= 0.05 - src.ear_damage = max(src.ear_damage, 0) - - if ((src.sdisabilities & DISABILITY_BLIND)) - src.blinded = TRUE - if ((src.sdisabilities & DISABILITY_DEAF)) - SetEarDeafness(1) - - if (src.eye_blurry > 0) - src.ReduceEyeBlur(1) - - if (src.druggy > 0) - src.druggy-- - src.druggy = max(0, src.druggy) - - //update the state of modules and components here - if (src.stat != 0) - uneq_all() - - if(!is_component_functioning("radio")) - radio.on = 0 - else - radio.on = 1 - - if(is_component_functioning("camera")) - src.blinded = FALSE - else - src.blinded = TRUE - - return 1 - -/mob/living/silicon/robot/proc/handle_regular_hud_updates() - - if (hud_used && hud_used.healths) - if (src.stat != DEAD) - if(ismaintdrone(src)) - switch(round(health * 100 / maxHealth)) - if(100 to INFINITY) - hud_used.healths.icon_state = "health0" - if(75 to 99) - hud_used.healths.icon_state = "health1" - if(50 to 74) - hud_used.healths.icon_state = "health2" - if(25 to 49) - hud_used.healths.icon_state = "health3" - if(10 to 24) - hud_used.healths.icon_state = "health4" - if(0 to 9) - hud_used.healths.icon_state = "health5" - else - hud_used.healths.icon_state = "health6" - else - switch(round(health * 100 / maxHealth)) - if(100 to INFINITY) - hud_used.healths.icon_state = "health0" - if(75 to 99) - hud_used.healths.icon_state = "health1" - if(50 to 74) - hud_used.healths.icon_state = "health2" - if(25 to 49) - hud_used.healths.icon_state = "health3" - if(10 to 24) - hud_used.healths.icon_state = "health4" - if(0 to 9) - hud_used.healths.icon_state = "health5" - else - hud_used.healths.icon_state = "health6" - else - hud_used.healths.icon_state = "health7" - - if (src.cells) - if (src.cell) - var/cellcharge = src.cell.charge/src.cell.maxcharge - switch(cellcharge) - if(0.75 to INFINITY) - src.cells.icon_state = "charge4" - if(0.5 to 0.75) - src.cells.icon_state = "charge3" - if(0.25 to 0.5) - src.cells.icon_state = "charge2" - if(0 to 0.25) - src.cells.icon_state = "charge1" - else - src.cells.icon_state = "charge0" - else - src.cells.icon_state = "charge-empty" - - if(hud_used && hud_used.bodytemp_icon) - switch(src.bodytemperature) //310.055 optimal body temp - if(335 to INFINITY) - hud_used.bodytemp_icon.icon_state = "temp2" - if(320 to 335) - hud_used.bodytemp_icon.icon_state = "temp1" - if(300 to 320) - hud_used.bodytemp_icon.icon_state = "temp0" - if(260 to 300) - hud_used.bodytemp_icon.icon_state = "temp-1" - else - hud_used.bodytemp_icon.icon_state = "temp-2" - - -//Oxygen and fire does nothing yet!! -// if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]" -// if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]" - - if(stat != DEAD) //the dead get zero fullscreens - if(blinded) - overlay_fullscreen("blind", /atom/movable/screen/fullscreen/blind) - else - clear_fullscreen("blind") - - if(druggy) - overlay_fullscreen("high", /atom/movable/screen/fullscreen/high) - else - clear_fullscreen("high") - - - if(interactee) - interactee.check_eye(src) - else - if(client && !client.adminobs) - reset_view(null) - - return 1 - -/mob/living/silicon/robot/proc/update_items() - if (client) - client.remove_from_screen(contents) - for(var/obj/I in contents) - if(I && !(istype(I,/obj/item/cell) || istype(I,/obj/item/device/radio) || istype(I,/obj/structure/machinery/camera) || istype(I,/obj/item/device/mmi))) - client.add_to_screen(I) - var/datum/custom_hud/robot/ui_datum = GLOB.custom_huds_list[HUD_ROBOT] - if(module_state_1) - module_state_1.screen_loc = ui_datum.ui_inv1 - if(module_state_2) - module_state_2.screen_loc = ui_datum.ui_inv2 - if(module_state_3) - module_state_3.screen_loc = ui_datum.ui_inv3 - update_icons() - -/mob/living/silicon/robot/proc/process_killswitch() - if(killswitch) - killswitch_time -- - if(killswitch_time <= 0) - if(src.client) - to_chat(src, SPAN_DANGER("Killswitch Activated")) - killswitch = 0 - spawn(5) - gib() - -/mob/living/silicon/robot/proc/process_locks() - if(weapon_lock) - uneq_all() - weaponlock_time -- - if(weaponlock_time <= 0) - if(src.client) - to_chat(src, SPAN_DANGER("Weapon Lock Timed Out!")) - weapon_lock = 0 - weaponlock_time = 120 diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm deleted file mode 100644 index 0a3225011d83..000000000000 --- a/code/modules/mob/living/silicon/robot/login.dm +++ /dev/null @@ -1,4 +0,0 @@ -/mob/living/silicon/robot/Login() - ..() - regenerate_icons() - show_laws(0) diff --git a/code/modules/mob/living/silicon/robot/photos.dm b/code/modules/mob/living/silicon/robot/photos.dm deleted file mode 100644 index bc8d3793c5ad..000000000000 --- a/code/modules/mob/living/silicon/robot/photos.dm +++ /dev/null @@ -1,13 +0,0 @@ -/mob/living/silicon/robot/proc/photosync() - var/obj/item/device/camera/siliconcam/master_cam = connected_ai ? connected_ai.aiCamera : null - if (!master_cam) - return - - var/synced - synced = 0 - for(var/datum/picture/z in aiCamera.aipictures) - if (!(master_cam.aipictures.Find(z))) - aiCamera.printpicture(null, z) - synced = 1 - if(synced) - to_chat(src, SPAN_NOTICE("Locally saved images synced with AI. Images were retained in local database in case of loss of connection with the AI.")) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm deleted file mode 100644 index 888b484fab06..000000000000 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ /dev/null @@ -1,994 +0,0 @@ -GLOBAL_LIST_INIT(robot_verbs_default, list( - /mob/living/silicon/robot/proc/sensor_mode -)) - -#define CYBORG_POWER_USAGE_MULTIPLIER 2.5 // Multiplier for amount of power cyborgs use. - -/mob/living/silicon/robot - name = "Robot" - real_name = "Robot" - icon = 'icons/mob/robots.dmi' - icon_state = "robot" - maxHealth = 500 - health = 500 - - var/lights_on = 0 // Is our integrated light on? - var/used_power_this_tick = 0 - var/sight_mode = 0 - var/custom_name = "" - var/crisis //Admin-settable for combat module use. - var/crisis_override = 0 - var/integrated_light_power = 6 - -//Hud stuff - - var/atom/movable/screen/cells = null - var/atom/movable/screen/inv1 = null - var/atom/movable/screen/inv2 = null - var/atom/movable/screen/inv3 = null - -//3 Modules can be activated at any one time. - var/obj/item/circuitboard/robot_module/module = null - var/obj/module_active = null - var/obj/module_state_1 = null - var/obj/module_state_2 = null - var/obj/module_state_3 = null - - var/obj/item/device/radio/borg/radio = null - var/mob/living/silicon/ai/connected_ai = null - var/obj/item/cell/cell = null - var/obj/structure/machinery/camera/camera = null - - // Components are basically robot organs. - var/list/components = list() - - var/obj/item/device/mmi/mmi = null - - //var/obj/item/device/pda/ai/rbPDA = null - - var/opened = 0 - var/wiresexposed = 0 - var/locked = 1 - var/has_power = 1 - var/list/req_access = list(ACCESS_MARINE_ENGINEERING, ACCESS_CIVILIAN_ENGINEERING) - var/ident = 0 - //var/list/laws = list() - var/viewalerts = 0 - var/modtype = "Default" - var/lower_mod = 0 - var/jetpack = 0 - var/datum/effect_system/ion_trail_follow/ion_trail = null - var/datum/effect_system/spark_spread/spark_system //So they can initialize sparks whenever/N - var/jeton = 0 - var/borgwires = 31 // 0b11111 - var/killswitch = 0 - var/killswitch_time = 60 - var/weapon_lock = 0 - var/weaponlock_time = 120 - var/lawupdate = 1 //Cyborgs will sync their laws with their AI by default - var/lawcheck[1] //For stating laws. - var/ioncheck[1] //Ditto. - var/lockcharge //Used when locking down a borg to preserve cell charge - speed = 0 //Cause sec borgs gotta go fast //No they dont! - var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them. - var/braintype = "Cyborg" - -/mob/living/silicon/robot/New(loc, syndie = 0, unfinished = 0) - spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, src) - spark_system.attach(src) - - add_language(LANGUAGE_APOLLO, 1) - - ident = rand(1, 999) - updatename("Default") - update_icons() - - if(syndie) - if(!cell) - cell = new /obj/item/cell(src) - - lawupdate = 0 - scrambledcodes = 1 - cell.maxcharge = 25000 - cell.charge = 25000 - module = new /obj/item/circuitboard/robot_module/syndicate(src) - hands.icon_state = "standard" - icon_state = "secborg" - modtype = "Security" - init() - - radio = new /obj/item/device/radio/borg(src) - if(!scrambledcodes && !camera) - camera = new /obj/structure/machinery/camera(src) - camera.c_tag = real_name - camera.network = list("SS13","Robots") - if(isWireCut(5)) // 5 = BORG CAMERA - camera.status = 0 - - initialize_components() - //if(!unfinished) - // Create all the robot parts. - for(var/V in components) if(V != "power cell") - var/datum/robot_component/C = components[V] - C.installed = 1 - C.wrapped = new C.external_type - - if(!cell) - cell = new /obj/item/cell(src) - cell.maxcharge = 25000 - cell.charge = 25000 - - ..() - - if(cell) - var/datum/robot_component/cell_component = components["power cell"] - cell_component.wrapped = cell - cell_component.installed = 1 - - add_robot_verbs() - -/mob/living/silicon/robot/proc/init() - aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) - connected_ai = select_active_ai_with_fewest_borgs() - if(connected_ai) - connected_ai.connected_robots += src - photosync() - lawupdate = 1 - else - lawupdate = 0 - - // playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) - -// setup the PDA and its name -/*/mob/living/silicon/robot/proc/setup_PDA() - if (!rbPDA) - rbPDA = new/obj/item/device/pda/ai(src) - rbPDA.set_name_and_job(custom_name,"[modtype] [braintype]")*/ - -//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO -//Improved /N -/mob/living/silicon/robot/Destroy() - if(mmi)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside. - var/turf/turf = get_turf(loc)//To hopefully prevent run time errors. - if(turf) mmi.forceMove(turf) - if(mind) mind.transfer_to(mmi.brainmob) - mmi = null - QDEL_NULL(aiCamera) - QDEL_NULL(spark_system) - QDEL_NULL(module) - module_active = null - module_state_1 = null - module_state_2 = null - module_state_3 = null - QDEL_NULL(radio) - connected_ai = null - QDEL_NULL(cell) - QDEL_NULL(camera) - QDEL_LIST_ASSOC_VAL(components) - . = ..() - -/mob/living/silicon/robot/proc/pick_module() - if(module) - return - var/list/modules = list("Standard", "Engineering", "Surgeon", "Medic", "Janitor", "Service", "Security") - modtype = tgui_input_list(usr, "Please, select a module!", "Robot", modules) - - var/module_sprites[0] //Used to store the associations between sprite names and sprite index. - - if(module) - return - - switch(modtype) - if("Standard") - module = new /obj/item/circuitboard/robot_module/standard(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 0, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 0, RADIO_CHANNEL_MEDSCI = 0, RADIO_CHANNEL_REQ = 0 ) - module_sprites["Default"] = "robot" - module_sprites["Droid"] = "droid" - module_sprites["Drone"] = "drone-standard" - - if("Service") - module = new /obj/item/circuitboard/robot_module/butler(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 0, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 0, RADIO_CHANNEL_MEDSCI = 0, RADIO_CHANNEL_REQ = 0 ) - module_sprites["Default"] = "Service2" - module_sprites["Rich"] = "maximillion" - module_sprites["Drone"] = "drone-service" - - if("Medic") - module = new /obj/item/circuitboard/robot_module/medic(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 0, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 0, RADIO_CHANNEL_MEDSCI = 1, RADIO_CHANNEL_REQ = 0 ) - if(camera && ("Robots" in camera.network)) - camera.network.Add("Medical") - module_sprites["Standard"] = "surgeon" - module_sprites["Advanced Droid"] = "droid-medical" - module_sprites["Needles"] = "medicalrobot" - module_sprites["Drone"] = "drone-medical" - - if("Surgeon") - module = new /obj/item/circuitboard/robot_module/surgeon(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 0, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 0, RADIO_CHANNEL_MEDSCI = 1, RADIO_CHANNEL_REQ = 0 ) - if(camera && ("Robots" in camera.network)) - camera.network.Add("Medical") - module_sprites["Standard"] = "surgeon" - module_sprites["Advanced Droid"] = "droid-medical" - module_sprites["Needles"] = "medicalrobot" - module_sprites["Drone"] = "drone-medical" - - if("Security") - module = new /obj/item/circuitboard/robot_module/security(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 1, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 0, RADIO_CHANNEL_MEDSCI = 0, RADIO_CHANNEL_REQ = 0 ) - module_sprites["Bloodhound"] = "bloodhound" - module_sprites["Bloodhound - Treaded"] = "secborg+tread" - module_sprites["Drone"] = "drone-sec" - - if("Engineering") - module = new /obj/item/circuitboard/robot_module/engineering(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 0, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 1, RADIO_CHANNEL_MEDSCI = 0, RADIO_CHANNEL_REQ = 0 ) - if(camera && ("Robots" in camera.network)) - camera.network.Add("Engineering") - module_sprites["Landmate"] = "landmate" - module_sprites["Landmate - Treaded"] = "engiborg+tread" - module_sprites["Drone"] = "drone-engineer" - - if("Janitor") - module = new /obj/item/circuitboard/robot_module/janitor(src) - module.channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_MP = 0, SQUAD_MARINE_1 = 0, SQUAD_MARINE_2 = 0, SQUAD_MARINE_3 = 0, SQUAD_MARINE_4 = 0, RADIO_CHANNEL_ENGI = 0, RADIO_CHANNEL_MEDSCI = 0, RADIO_CHANNEL_REQ = 0 ) - module_sprites["Mop Gear Rex"] = "mopgearrex" - module_sprites["Drone"] = "drone-janitor" - - //languages - module.add_languages(src) - - hands.icon_state = lowertext(modtype) - updatename() - - if(modtype == "Medic" || modtype == "Security" || modtype == "Surgeon") - status_flags &= ~CANPUSH - - choose_icon(6,module_sprites) - radio.config(module.channels) - -/mob/living/silicon/robot/proc/updatename(prefix as text) - if(prefix) - modtype = prefix - if(mmi) - braintype = "Cyborg" - else - braintype = "Robot" - - var/changed_name = "" - if(custom_name) - changed_name = custom_name - else - changed_name = "[modtype] [braintype]-[num2text(ident)]" - - change_real_name(src, changed_name) - - // if we've changed our name, we also need to update the display name for our PDA - //setup_PDA() - - //We also need to update name of internal camera. - if (camera) - camera.c_tag = changed_name - - -/mob/living/silicon/robot/verb/Namepick() - set category = "Robot Commands" - if(custom_name) - return 0 - - spawn(0) - var/newname - newname = input(src,"You are a robot. Enter a name, or leave blank for the default name.", "Name change","") as text - if (newname != "") - custom_name = newname - - updatename() - update_icons() - -/mob/living/silicon/robot/verb/cmd_robot_alerts() - set category = "Robot Commands" - set name = "Show Alerts" - robot_alerts() - -// this verb lets cyborgs see the stations manifest -/mob/living/silicon/robot/verb/cmd_station_manifest() - set category = "Robot Commands" - set name = "Show Crew Manifest" - show_station_manifest() - - -/mob/living/silicon/robot/proc/robot_alerts() - var/dat = "Current Station Alerts\n" - dat += "Close

      " - for (var/cat in alarms) - dat += text("[cat]
      \n") - var/list/alarmlist = alarms[cat] - if (alarmlist.len) - for (var/area_name in alarmlist) - var/datum/alarm/alarm = alarmlist[area_name] - dat += "" - dat += text("-- [area_name]") - if (alarm.sources.len > 1) - dat += text("- [alarm.sources.len] sources") - dat += "
      \n" - else - dat += "-- All Systems Nominal
      \n" - dat += "
      \n" - - viewalerts = 1 - src << browse(dat, "window=robotalerts&can_close=0") - -/mob/living/silicon/robot/proc/self_diagnosis() - if(!is_component_functioning("diagnosis unit")) - return null - - var/dat = "[src.name] Self-Diagnosis Report\n" - for (var/V in components) - var/datum/robot_component/C = components[V] - dat += "[C.name]
      Brute Damage:[C.brute_damage]
      Electronics Damage:[C.electronics_damage]
      Powered:[(!C.idle_usage || C.is_powered()) ? "Yes" : "No"]
      Toggled:[ C.toggled ? "Yes" : "No"]

      " - - return dat - -/mob/living/silicon/robot/verb/toggle_lights() - set category = "Robot Commands" - set name = "Toggle Lights" - - lights_on = !lights_on - to_chat(usr, "You [lights_on ? "enable" : "disable"] your integrated light.") - if(lights_on) - set_light(integrated_light_power) // 1.5x luminosity of flashlight - else - set_light(0) - -/mob/living/silicon/robot/verb/self_diagnosis_verb() - set category = "Robot Commands" - set name = "Self Diagnosis" - - if(!is_component_functioning("diagnosis unit")) - to_chat(src, SPAN_DANGER("Your self-diagnosis component isn't functioning.")) - - var/datum/robot_component/CO = get_component("diagnosis unit") - if (!cell_use_power(CO.active_usage)) - to_chat(src, SPAN_DANGER("Low Power.")) - var/dat = self_diagnosis() - src << browse(dat, "window=robotdiagnosis") - - -/mob/living/silicon/robot/verb/toggle_component() - set category = "Robot Commands" - set name = "Toggle Component" - set desc = "Toggle a component, conserving power." - - var/list/installed_components = list() - for(var/V in components) - if(V == "power cell") continue - var/datum/robot_component/C = components[V] - if(C.installed) - installed_components += V - - var/toggle = tgui_input_list(src, "Which component do you want to toggle?", "Toggle Component", installed_components) - if(!toggle) - return - - var/datum/robot_component/C = components[toggle] - if(C.toggled) - C.toggled = 0 - to_chat(src, SPAN_DANGER("You disable [C.name].")) - else - C.toggled = 1 - to_chat(src, SPAN_DANGER("You enable [C.name].")) - -// this function displays jetpack pressure in the stat panel -/mob/living/silicon/robot/proc/show_jetpack_pressure() - // if you have a jetpack, show the internal tank pressure - var/obj/item/tank/jetpack/current_jetpack = installed_jetpack() - if (current_jetpack) - stat("Internal Atmosphere Info", current_jetpack.name) - stat("Tank Pressure", current_jetpack.return_pressure()) - - -// this function returns the robots jetpack, if one is installed -/mob/living/silicon/robot/proc/installed_jetpack() - if(module) - return (locate(/obj/item/tank/jetpack) in module.modules) - return 0 - - -// this function displays the cyborgs current cell charge in the stat panel -/mob/living/silicon/robot/proc/show_cell_power() - if(cell) - stat(null, text("Charge Left: [round(cell.percent())]%")) - stat(null, text("Cell Rating: [round(cell.maxcharge)]")) // Round just in case we somehow get crazy values - stat(null, text("Power Cell Load: [round(used_power_this_tick)]W")) - else - stat(null, text("No Cell Inserted!")) - - -/mob/living/silicon/robot/is_mob_restrained() - return 0 - -/mob/living/silicon/robot/bullet_act(obj/projectile/Proj) - ..(Proj) - if(prob(75) && Proj.damage > 0) spark_system.start() - return 2 - -/mob/living/silicon/robot/Collide(atom/A) - ..() - if (istype(A, /obj/structure/machinery/recharge_station)) - var/obj/structure/machinery/recharge_station/F = A - F.move_inside() - return - - -/mob/living/silicon/robot/triggerAlarm(class, area/A, list/cameralist, source) - if (stat == 2) - return 1 - - ..() - - queueAlarm(text("--- [class] alarm detected in [A.name]!"), class) - - -/mob/living/silicon/robot/cancelAlarm(class, area/A as area, obj/origin) - var/has_alarm = ..() - - if (!has_alarm) - queueAlarm(text("--- [class] alarm in [A.name] has been cleared."), class, 0) -// if (viewalerts) robot_alerts() - return has_alarm - - -/mob/living/silicon/robot/attackby(obj/item/W as obj, mob/user as mob) - if (istype(W, /obj/item/handcuffs)) // fuck i don't even know why isrobot() in handcuff code isn't working so this will have to do - return - - if(opened) // Are they trying to insert something? - for(var/V in components) - var/datum/robot_component/C = components[V] - if(!C.installed && istype(W, C.external_type)) - C.installed = 1 - C.wrapped = W - C.install() - if(user.drop_held_item()) - W.moveToNullspace() - var/obj/item/robot_parts/robot_component/WC = W - if(istype(WC)) - C.brute_damage = WC.brute - C.electronics_damage = WC.burn - - to_chat(usr, SPAN_NOTICE(" You install the [W.name].")) - - return - - if (iswelder(W)) - if(!HAS_TRAIT(W, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return - if (src == user) - to_chat(user, SPAN_WARNING("You lack the reach to be able to repair yourself.")) - return - - if (!getBruteLoss()) - to_chat(user, "Nothing to fix here!") - return - var/obj/item/tool/weldingtool/WT = W - if (WT.remove_fuel(0)) - apply_damage(-30, BRUTE) - updatehealth() - add_fingerprint(user) - for(var/mob/O in viewers(user, null)) - O.show_message(text(SPAN_DANGER("[user] has fixed some of the dents on [src]!")), SHOW_MESSAGE_VISIBLE) - else - to_chat(user, "Need more welding fuel!") - return - - else if(istype(W, /obj/item/stack/cable_coil) && (wiresexposed || ismaintdrone(src))) - if (!getFireLoss()) - to_chat(user, "Nothing to fix here!") - return - var/obj/item/stack/cable_coil/coil = W - if (coil.use(1)) - apply_damage(-30, BURN) - updatehealth() - for(var/mob/O in viewers(user, null)) - O.show_message(text(SPAN_DANGER("[user] has fixed some of the burnt wires on [src]!")), SHOW_MESSAGE_VISIBLE) - - else if (HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) // crowbar means open or close the cover - if(opened) - if(cell) - to_chat(user, "You close the cover.") - opened = 0 - update_icons() - else if(wiresexposed && isWireCut(1) && isWireCut(2) && isWireCut(3) && isWireCut(4) && isWireCut(5)) - //Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob. - if(!mmi) - to_chat(user, "\The [src] has no brain to remove.") - return - - to_chat(user, "You jam the crowbar into the robot and begin levering [mmi].") - sleep(30) - to_chat(user, "You damage some parts of the chassis, but eventually manage to rip out [mmi]!") - var/obj/item/robot_parts/robot_suit/C = new/obj/item/robot_parts/robot_suit(loc) - C.l_leg = new/obj/item/robot_parts/leg/l_leg(C) - C.r_leg = new/obj/item/robot_parts/leg/r_leg(C) - C.l_arm = new/obj/item/robot_parts/arm/l_arm(C) - C.r_arm = new/obj/item/robot_parts/arm/r_arm(C) - C.updateicon() - new/obj/item/robot_parts/chest(loc) - qdel(src) - else - // Okay we're not removing the cell or an MMI, but maybe something else? - var/list/removable_components = list() - for(var/V in components) - if(V == "power cell") continue - var/datum/robot_component/C = components[V] - if(C.installed == 1 || C.installed == -1) - removable_components += V - - var/remove = tgui_input_list(user, "Which component do you want to pry out?", "Remove Component", removable_components) - if(!remove) - return - var/datum/robot_component/C = components[remove] - var/obj/item/robot_parts/robot_component/I = C.wrapped - to_chat(user, "You remove \the [I].") - if(istype(I)) - I.brute = C.brute_damage - I.burn = C.electronics_damage - - I.forceMove(src.loc) - - if(C.installed == 1) - C.uninstall() - C.installed = 0 - - else - if(locked) - to_chat(user, "The cover is locked and cannot be opened.") - else - to_chat(user, "You open the cover.") - opened = 1 - update_icons() - - else if (istype(W, /obj/item/cell) && opened) // trying to put a cell inside - var/datum/robot_component/C = components["power cell"] - if(wiresexposed) - to_chat(user, "Secure the wiring with a screwdriver first.") - else if(cell) - to_chat(user, "There is a power cell already installed.") - else - if(user.drop_inv_item_to_loc(W, src)) - cell = W - to_chat(user, "You insert the power cell.") - - C.installed = 1 - C.wrapped = W - C.install() - //This will mean that removing and replacing a power cell will repair the mount, but I don't care at this point. ~Z - C.brute_damage = 0 - C.electronics_damage = 0 - - else if (HAS_TRAIT(W, TRAIT_TOOL_WIRECUTTERS) || HAS_TRAIT(W, TRAIT_TOOL_MULTITOOL)) - if (wiresexposed) - interact(user) - else - to_chat(user, "You can't reach the wiring.") - - else if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) && opened && !cell) // haxing - wiresexposed = !wiresexposed - to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]") - update_icons() - - else if(HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) && opened && cell) // radio - if(radio) - radio.attackby(W,user)//Push it to the radio to let it handle everything - else - to_chat(user, "Unable to locate a radio.") - update_icons() - - else if(istype(W, /obj/item/device/encryptionkey/) && opened) - if(radio)//sanityyyyyy - radio.attackby(W,user)//GTFO, you have your own procs - else - to_chat(user, "Unable to locate a radio.") - - else if(istype(W, /obj/item/robot/upgrade/)) - var/obj/item/robot/upgrade/U = W - if(!opened) - to_chat(usr, "You must access the borgs internals!") - else if(!src.module && U.require_module) - to_chat(usr, "The borg must choose a module before he can be upgraded!") - else if(U.locked) - to_chat(usr, "The upgrade is locked and cannot be used yet!") - else - if(U.action(src)) - to_chat(usr, "You apply the upgrade to [src]!") - if(usr.drop_held_item()) - U.forceMove(src) - else - to_chat(usr, "Upgrade error!") - - - else - if( !(istype(W, /obj/item/device/robotanalyzer) || istype(W, /obj/item/device/healthanalyzer)) ) - spark_system.start() - return ..() - -/mob/living/silicon/robot/verb/unlock_own_cover() - set category = "Robot Commands" - set name = "Toggle Cover" - set desc = "Toggle your cover open and closed." - if(stat == DEAD) - return //won't work if dead - if(!opened) - opened = 1 - to_chat(usr, "You open your cover.") - else - opened = 0 - to_chat(usr, "You close your cover.") - -/mob/living/silicon/robot/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 25, 1) - for(var/mob/O in viewers(src, null)) - O.show_message(SPAN_DANGER("[M] [M.attacktext] [src]!"), SHOW_MESSAGE_VISIBLE) - last_damage_data = create_cause_data(initial(M.name), M) - M.attack_log += text("\[[time_stamp()]\] attacked [key_name(src)]") - src.attack_log += text("\[[time_stamp()]\] was attacked by [key_name(M)]") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - apply_damage(damage, BRUTE) - updatehealth() - - -/mob/living/silicon/robot/attack_hand(mob/user) - - add_fingerprint(user) - - if(opened && !wiresexposed && (!isRemoteControlling(user))) - var/datum/robot_component/cell_component = components["power cell"] - if(cell) - cell.update_icon() - cell.add_fingerprint(user) - user.put_in_active_hand(cell) - to_chat(user, "You remove \the [cell].") - cell = null - cell_component.wrapped = null - cell_component.installed = 0 - update_icons() - else if(cell_component.installed == -1) - cell_component.installed = 0 - var/obj/item/broken_device = cell_component.wrapped - to_chat(user, "You remove \the [broken_device].") - user.put_in_active_hand(broken_device) - -/mob/living/silicon/robot/proc/allowed(mob/M) - //check if it doesn't require any access at all - if(check_access(null)) - return 1 - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - //if they are holding or wearing a card that has access, that works - if(check_access(H.get_active_hand()) || check_access(H.wear_id)) - return 1 - return 0 - -/mob/living/silicon/robot/proc/check_access(obj/item/card/id/I) - if(!istype(req_access, /list)) //something's very wrong - return 1 - - var/list/L = req_access - if(!L.len) //no requirements - return 1 - if(!I || !istype(I, /obj/item/card/id) || !I.access) //not ID or no access - return 0 - for(var/req in req_access) - if(req in I.access) //have one of the required accesses - return 1 - return 0 - -/mob/living/silicon/robot/update_icons() - - overlays.Cut() - if(stat == 0) - overlays += "eyes" - overlays.Cut() - overlays += "eyes-[icon_state]" - else - overlays -= "eyes" - - if(opened) - if(wiresexposed) - overlays += "ov-openpanel +w" - else if(cell) - overlays += "ov-openpanel +c" - else - overlays += "ov-openpanel -c" - -/mob/living/silicon/robot/proc/installed_modules() - if(weapon_lock) - to_chat(src, SPAN_DANGER("Weapon lock active, unable to use modules! Count:[weaponlock_time]")) - return - - if(!module) - pick_module() - return - var/dat = "Modules\n" - dat += {" - Activated Modules -
      - Module 1: [module_state_1 ? "[module_state_1]" : "No Module"]
      - Module 2: [module_state_2 ? "
      [module_state_2]" : "No Module"]
      - Module 3: [module_state_3 ? "
      [module_state_3]" : "No Module"]
      -
      - Installed Modules

      "} - - - for (var/obj in module.modules) - if (!obj) - dat += text("Resource depleted
      ") - else if(activated(obj)) - dat += text("[obj]: Activated
      ") - else - dat += text("[obj]:
      Activate
      ") -/* - if(activated(obj)) - dat += text("[obj]: \[Activated|Deactivate\]
      ") - else - dat += text("[obj]: \[Activate|Deactivated\]
      ") -*/ - src << browse(dat, "window=robotmod") - - -/mob/living/silicon/robot/Topic(href, href_list) - ..() - - if(usr != src) - return - - if (href_list["showalerts"]) - robot_alerts() - return - - if (href_list["mod"]) - var/obj/item/O = locate(href_list["mod"]) - if (istype(O) && (O.loc == src)) - O.attack_self(src) - - if (href_list["act"]) - var/obj/item/O = locate(href_list["act"]) - if (!istype(O)) - return - - if(!((O in src.module.modules) || (O == src.module.emag))) - return - - if(activated(O)) - to_chat(src, "Already activated") - return - if(!module_state_1) - module_state_1 = O - O.layer = ABOVE_HUD_LAYER - O.plane = ABOVE_HUD_PLANE - contents += O - if(istype(module_state_1,/obj/item/robot/sight)) - sight_mode |= module_state_1:sight_mode - else if(!module_state_2) - module_state_2 = O - O.layer = ABOVE_HUD_LAYER - O.plane = ABOVE_HUD_PLANE - contents += O - if(istype(module_state_2,/obj/item/robot/sight)) - sight_mode |= module_state_2:sight_mode - else if(!module_state_3) - module_state_3 = O - O.layer = ABOVE_HUD_LAYER - O.plane = ABOVE_HUD_PLANE - contents += O - if(istype(module_state_3,/obj/item/robot/sight)) - sight_mode |= module_state_3:sight_mode - else - to_chat(src, "You need to disable a module first!") - installed_modules() - - if (href_list["deact"]) - var/obj/item/O = locate(href_list["deact"]) - if(activated(O)) - if(module_state_1 == O) - module_state_1 = null - contents -= O - else if(module_state_2 == O) - module_state_2 = null - contents -= O - else if(module_state_3 == O) - module_state_3 = null - contents -= O - else - to_chat(src, "Module isn't activated.") - else - to_chat(src, "Module isn't activated") - installed_modules() - - return - -/mob/living/silicon/robot/proc/radio_menu() - radio.interact(src)//Just use the radio's Topic() instead of bullshit special-snowflake code - - -/mob/living/silicon/robot/Move(a, b, flag) - if (!is_component_functioning("actuator")) - return 0 - - var/datum/robot_component/actuator/AC = get_component("actuator") - if (!cell_use_power(AC.active_usage)) - return 0 - - . = ..() - - if(module) - if(module.type == /obj/item/circuitboard/robot_module/janitor) - var/turf/tile = loc - if(isturf(tile)) - for(var/A in tile) - if(istype(A, /obj/effect)) - if(istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay)) - qdel(A) - else if(istype(A, /obj/item)) - var/obj/item/cleaned_item = A - cleaned_item.clean_blood() - else if(istype(A, /mob/living/carbon/human)) - var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.body_position == LYING_DOWN) - if(cleaned_human.head) - cleaned_human.head.clean_blood() - cleaned_human.update_inv_head(0) - if(cleaned_human.wear_suit) - cleaned_human.wear_suit.clean_blood() - cleaned_human.update_inv_wear_suit(0) - else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.clean_blood() - cleaned_human.update_inv_w_uniform(0) - if(cleaned_human.shoes) - cleaned_human.shoes.clean_blood() - cleaned_human.update_inv_shoes(0) - cleaned_human.clean_blood(1) - to_chat(cleaned_human, SPAN_WARNING("[src] cleans your face!")) - return - -/mob/living/silicon/robot/proc/self_destruct() - robogibs() - return - -/mob/living/silicon/robot/proc/UnlinkSelf() - if (src.connected_ai) - src.connected_ai = null - lawupdate = 0 - lockcharge = 0 - //canmove = 1 // Yes this will probably break something, whatevver it is - scrambledcodes = 1 - //Disconnect it's camera so it's not so easily tracked. - if(src.camera) - src.camera.network = list() - GLOB.cameranet.removeCamera(src.camera) - - -/mob/living/silicon/robot/proc/ResetSecurityCodes() - set category = "Robot Commands" - set name = "Reset Identity Codes" - set desc = "Scrambles your security and identification codes and resets your current buffers. Unlocks you and but permanently severs you from your AI and the robotics console and will deactivate your camera system." - - var/mob/living/silicon/robot/R = src - - if(R) - R.UnlinkSelf() - to_chat(R, "Buffers flushed and reset. Camera system shutdown. All systems operational.") - remove_verb(src, /mob/living/silicon/robot/proc/ResetSecurityCodes) - -/mob/living/silicon/robot/mode() - set name = "Activate Held Object" - set category = "IC" - set src = usr - - var/obj/item/W = get_active_hand() - if (W) - W.attack_self(src) - - return - -/mob/living/silicon/robot/proc/choose_icon(triesleft, list/module_sprites) - - if(triesleft<1 || !module_sprites.len) - return - else - triesleft-- - - var/icontype = tgui_input_list(usr, "Select an icon! [triesleft ? "You have [triesleft] more chances." : "This is your last try."]", "Robot", module_sprites) - - if(icontype) - icon_state = module_sprites[icontype] - else - to_chat(src, "Something is badly wrong with the sprite selection. Harass a coder.") - icon_state = module_sprites[1] - return - - overlays -= "eyes" - update_icons() - - if (triesleft >= 1) - var/choice = tgui_input_list(usr, "Look at your icon - is this what you want?", "Icon", list("Yes","No")) - if(choice=="No") - choose_icon(triesleft, module_sprites) - else - triesleft = 0 - return - else - to_chat(src, "Your icon has been set. You now require a module reset to change it.") - -/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs - set name = "Set Sensor Augmentation" - set category = "Robot Commands" - set desc = "Augment visual feed with internal sensor overlays." - toggle_sensor_mode() - -/mob/living/silicon/robot/proc/add_robot_verbs() - add_verb(src, GLOB.robot_verbs_default) - -/mob/living/silicon/robot/proc/remove_robot_verbs() - remove_verb(src, GLOB.robot_verbs_default) - -// Uses power from cyborg's cell. Returns 1 on success or 0 on failure. -// Properly converts using CELLRATE now! Amount is in Joules. -/mob/living/silicon/robot/proc/cell_use_power(amount = 0) - // No cell inserted - if(!cell) - return 0 - - // Power cell is empty. - if(cell.charge == 0) - return 0 - - if(cell.use(amount * CELLRATE * CYBORG_POWER_USAGE_MULTIPLIER)) - used_power_this_tick += amount * CYBORG_POWER_USAGE_MULTIPLIER - return 1 - return 0 - -/mob/living/silicon/robot/hear_apollo() - if(is_component_functioning("comms")) - var/datum/robot_component/RC = get_component("comms") - use_power(RC.active_usage) - return TRUE - return FALSE - - - - - - -/mob/living/silicon/robot/update_sight() - if (stat == DEAD || sight_mode & BORGXRAY) - sight |= SEE_TURFS - sight |= SEE_MOBS - sight |= SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - else if (sight_mode & BORGMESON && sight_mode & BORGTHERM) - sight |= SEE_TURFS - sight |= SEE_MOBS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - else if (sight_mode & BORGMESON) - sight |= SEE_TURFS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - else if (sight_mode & BORGTHERM) - sight |= SEE_MOBS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - else if (stat != DEAD) - sight &= ~SEE_MOBS - sight &= ~SEE_TURFS - sight &= ~SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm deleted file mode 100644 index 78b6b78445e0..000000000000 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ /dev/null @@ -1,148 +0,0 @@ -/mob/living/silicon/robot/updatehealth() - if(status_flags & GODMODE) - health = maxHealth - set_stat(CONSCIOUS) - return - health = maxHealth - (getBruteLoss() + getFireLoss()) - return - -/mob/living/silicon/robot/getBruteLoss() - var/amount = 0 - for(var/V in components) - var/datum/robot_component/C = components[V] - if(C.installed != 0) amount += C.brute_damage - return amount - -/mob/living/silicon/robot/getFireLoss() - var/amount = 0 - for(var/V in components) - var/datum/robot_component/C = components[V] - if(C.installed != 0) amount += C.electronics_damage - return amount - -/mob/living/silicon/robot/adjustBruteLoss(amount) - if(amount > 0) - take_overall_damage(amount, 0) - else - heal_overall_damage(-amount, 0) - -/mob/living/silicon/robot/adjustFireLoss(amount) - if(amount > 0) - take_overall_damage(0, amount) - else - heal_overall_damage(0, -amount) - -/mob/living/silicon/robot/proc/get_damaged_components(brute, burn, destroyed = 0) - var/list/datum/robot_component/parts = list() - for(var/V in components) - var/datum/robot_component/C = components[V] - if(C.installed == 1 || (C.installed == -1 && destroyed)) - if((brute && C.brute_damage) || (burn && C.electronics_damage) || (!C.toggled) || (!C.powered && C.toggled)) - parts += C - return parts - -/mob/living/silicon/robot/proc/get_damageable_components() - var/list/rval = new - for(var/V in components) - var/datum/robot_component/C = components[V] - if(C.installed == 1) rval += C - return rval - -/mob/living/silicon/robot/proc/get_armour() - - if(!components.len) return 0 - var/datum/robot_component/C = components["armour"] - if(C && C.installed == 1) - return C - return 0 - -/mob/living/silicon/robot/heal_limb_damage(brute, burn) - var/list/datum/robot_component/parts = get_damaged_components(brute,burn) - if(!parts.len) return - var/datum/robot_component/picked = pick(parts) - picked.heal_damage(brute,burn) - -/mob/living/silicon/robot/take_limb_damage(brute = 0, burn = 0, sharp = 0, edge = 0) - var/list/components = get_damageable_components() - if(!components.len) - return - - //Combat shielding absorbs a percentage of damage directly into the cell. - if(module_active && istype(module_active,/obj/item/robot/combat/shield)) - var/obj/item/robot/combat/shield/shield = module_active - //Shields absorb a certain percentage of damage based on their power setting. - var/absorb_brute = brute*shield.shield_level - var/absorb_burn = burn*shield.shield_level - var/cost = (absorb_brute+absorb_burn)*100 - - cell.charge -= cost - if(cell.charge <= 0) - cell.charge = 0 - to_chat(src, SPAN_DANGER("Your shield has overloaded!")) - else - brute -= absorb_brute - burn -= absorb_burn - to_chat(src, SPAN_DANGER("Your shield absorbs some of the impact!")) - - var/datum/robot_component/armour/A = get_armour() - if(A) - A.take_damage(brute,burn,sharp,edge) - return - - var/datum/robot_component/C = pick(components) - C.take_damage(brute,burn,sharp,edge) - -/mob/living/silicon/robot/heal_overall_damage(brute, burn) - var/list/datum/robot_component/parts = get_damaged_components(brute,burn) - - while(parts.len && (brute>0 || burn>0) ) - var/datum/robot_component/picked = pick(parts) - - var/brute_was = picked.brute_damage - var/burn_was = picked.electronics_damage - - picked.heal_damage(brute,burn) - - brute -= (brute_was-picked.brute_damage) - burn -= (burn_was-picked.electronics_damage) - - parts -= picked - -/mob/living/silicon/robot/take_overall_damage(brute = 0, burn = 0, sharp = 0, used_weapon = null) - if(status_flags & GODMODE) return //godmode - var/list/datum/robot_component/parts = get_damageable_components() - - //Combat shielding absorbs a percentage of damage directly into the cell. - if(module_active && istype(module_active,/obj/item/robot/combat/shield)) - var/obj/item/robot/combat/shield/shield = module_active - //Shields absorb a certain percentage of damage based on their power setting. - var/absorb_brute = brute*shield.shield_level - var/absorb_burn = burn*shield.shield_level - var/cost = (absorb_brute+absorb_burn)*100 - - cell.charge -= cost - if(cell.charge <= 0) - cell.charge = 0 - to_chat(src, SPAN_DANGER("Your shield has overloaded!")) - else - brute -= absorb_brute - burn -= absorb_burn - to_chat(src, SPAN_DANGER("Your shield absorbs some of the impact!")) - - var/datum/robot_component/armour/A = get_armour() - if(A) - A.take_damage(brute,burn,sharp) - return - - while(parts.len && (brute>0 || burn>0) ) - var/datum/robot_component/picked = pick(parts) - - var/brute_was = picked.brute_damage - var/burn_was = picked.electronics_damage - - picked.take_damage(brute,burn) - - brute -= (picked.brute_damage - brute_was) - burn -= (picked.electronics_damage - burn_was) - - parts -= picked diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm deleted file mode 100644 index 6b29a47be3ea..000000000000 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ /dev/null @@ -1,93 +0,0 @@ -// A special pen for service droids. Can be toggled to switch between normal writting mode, and paper rename mode -// Allows service droids to rename paper items. - -/obj/item/tool/pen/robopen - desc = "A black ink printing attachment with a paper naming mode." - name = "Printing Pen" - var/mode = 1 - -/obj/item/tool/pen/robopen/attack_self(mob/user) - ..() - - var/choice = tgui_input_list(usr, "Would you like to change color or mode?", "Change Mode", list("Colour","Mode")) - if(!choice) - return - - playsound(src.loc, 'sound/effects/pop.ogg', 25, FALSE) - - switch(choice) - if("Colour") - var/newcolour = tgui_input_list(usr, "Which color would you like to use?", list("black","blue","red","green","yellow")) - if(newcolour) pen_colour = newcolour - if("Mode") - if (mode == 1) - mode = 2 - else - mode = 1 - to_chat(user, "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'") - -// Copied over from paper's rename verb -// see code\modules\paperwork\paper.dm line 62 - -/obj/item/tool/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) - if ( !user || !paper ) - return - var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text - if ( !user || !paper ) - return - - n_name = copytext(n_name, 1, 32) - if(( get_dist(user,paper) <= 1 && user.stat == 0)) - paper.name = "paper[(n_name ? text("- '[n_name]'") : null)]" - add_fingerprint(user) - return - -//TODO: Add prewritten forms to dispense when you work out a good way to store the strings. -/obj/item/form_printer - //name = "paperwork printer" - name = "paper dispenser" - icon = 'icons/obj/items/paper.dmi' - icon_state = "paper_bin1" - item_state = "sheet-metal" - -/obj/item/form_printer/attack(mob/living/carbon/M, mob/living/carbon/user) - return - -/obj/item/form_printer/afterattack(atom/target, mob/living/user, flag, params) - if(!target || !flag) - return - - if(istype(target,/obj/structure/surface/table)) - deploy_paper(get_turf(target)) - -/obj/item/form_printer/attack_self(mob/user) - ..() - deploy_paper(get_turf(src)) - -/obj/item/form_printer/proc/deploy_paper(turf/T) - T.visible_message(SPAN_NOTICE("\The [src.loc] dispenses a sheet of crisp white paper.")) - new /obj/item/paper(T) - - -//Personal shielding for the combat module. -/obj/item/robot/combat/shield - name = "personal shielding" - desc = "A powerful experimental module that turns aside or absorbs incoming attacks at the cost of charge." - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "shock" - var/shield_level = 0.5 //Percentage of damage absorbed by the shield. - -/obj/item/robot/combat/shield/verb/set_shield_level() - set name = "Set shield level" - set category = "Object" - set src in range(0) - - var/N = tgui_input_list(usr, "How much damage should the shield absorb?", "Shield level", list("5","10","25","50","75","100")) - if (N) - shield_level = text2num(N)/100 - -/obj/item/robot/combat/mobility - name = "mobility module" - desc = "By retracting limbs and tucking in its head, a combat android can roll at high speeds." - icon = 'icons/obj/structures/props/decals.dmi' - icon_state = "shock" diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm deleted file mode 100644 index ef8d160cca7c..000000000000 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ /dev/null @@ -1,23 +0,0 @@ -/mob/living/silicon/robot/Process_Spaceslipping(prob_slip) - if(module && (istype(module,/obj/item/circuitboard/robot_module/drone))) - return 0 - ..(prob_slip) - -/mob/living/silicon/robot/Process_Spacemove() - if(module) - for(var/obj/item/tank/jetpack/J in module.modules) - if(J && istype(J, /obj/item/tank/jetpack)) - if(J.allow_thrust(0.01)) return 1 - if(..()) return 1 - return 0 - -//No longer needed, but I'll leave it here incase we plan to re-use it. -/mob/living/silicon/robot/movement_delay() - . = ..() - - if(module_active && istype(module_active, /obj/item/robot/combat/mobility)) - . -= 3 - - . += CONFIG_GET(number/robot_delay) - - move_delay = . diff --git a/code/modules/mob/living/silicon/robot/wires.dm b/code/modules/mob/living/silicon/robot/wires.dm deleted file mode 100644 index 62d05abe6e13..000000000000 --- a/code/modules/mob/living/silicon/robot/wires.dm +++ /dev/null @@ -1,147 +0,0 @@ -#define BORG_WIRE_LAWCHECK 1 -#define BORG_WIRE_MAIN_POWER1 2 -#define BORG_WIRE_MAIN_POWER2 3 -#define BORG_WIRE_AI_CONTROL 4 -#define BORG_WIRE_CAMERA 5 - -/proc/RandomBorgWires() - //to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else). - var/list/Borgwires = list(0, 0, 0, 0, 0) - GLOB.BorgIndexToFlag = list(0, 0, 0, 0, 0) - GLOB.BorgIndexToWireColor = list(0, 0, 0, 0, 0) - GLOB.BorgWireColorToIndex = list(0, 0, 0, 0, 0) - var/flagIndex = 1 - //I think it's easier to read this way, also doesn't rely on the random number generator to land on a new wire. - var/list/colorIndexList = list(BORG_WIRE_LAWCHECK, BORG_WIRE_MAIN_POWER1, BORG_WIRE_MAIN_POWER2, BORG_WIRE_AI_CONTROL, BORG_WIRE_CAMERA) - for (var/flag=1, flag<=16, flag+=flag) - var/colorIndex = pick(colorIndexList) - if (Borgwires[colorIndex]==0) - Borgwires[colorIndex] = flag - GLOB.BorgIndexToFlag[flagIndex] = flag - GLOB.BorgIndexToWireColor[flagIndex] = colorIndex - GLOB.BorgWireColorToIndex[colorIndex] = flagIndex - colorIndexList -= colorIndex // Shortens the list. - //world.log << "Flag: [flag], CIndex: [colorIndex], FIndex: [flagIndex]" - flagIndex+=1 - return Borgwires - -/mob/living/silicon/robot/proc/isWireColorCut(wireColor) - var/wireFlag = GLOB.BorgWireColorToFlag[wireColor] - return ((src.borgwires & wireFlag) == 0) - -/mob/living/silicon/robot/proc/isWireCut(wireIndex) - var/wireFlag = GLOB.BorgIndexToFlag[wireIndex] - return ((src.borgwires & wireFlag) == 0) - -/mob/living/silicon/robot/proc/cut(wireColor) - var/wireFlag = GLOB.BorgWireColorToFlag[wireColor] - var/wireIndex = GLOB.BorgWireColorToIndex[wireColor] - borgwires &= ~wireFlag - switch(wireIndex) - if(BORG_WIRE_LAWCHECK) //Cut the law wire, and the borg will no longer receive law updates from its AI - if (src.lawupdate == 1) - to_chat(src, "LawSync protocol engaged.") - src.show_laws() - if (BORG_WIRE_AI_CONTROL) //Cut the AI wire to reset AI control - if (src.connected_ai) - src.connected_ai = null - if (BORG_WIRE_CAMERA) - if(camera && camera.status && !scrambledcodes) - camera.toggle_cam_status(usr, TRUE) // Will kick anyone who is watching the Cyborg's camera. - - src.interact(usr) - -/mob/living/silicon/robot/proc/mend(wireColor) - var/wireFlag = GLOB.BorgWireColorToFlag[wireColor] - var/wireIndex = GLOB.BorgWireColorToIndex[wireColor] - borgwires |= wireFlag - switch(wireIndex) - if(BORG_WIRE_LAWCHECK) //turns law updates back on assuming the borg hasn't been emagged - if (src.lawupdate == 0) - src.lawupdate = 1 - if(BORG_WIRE_CAMERA) - if(camera && !camera.status && !scrambledcodes) - camera.toggle_cam_status(usr, TRUE) // Will kick anyone who is watching the Cyborg's camera. - - src.interact(usr) - - -/mob/living/silicon/robot/proc/pulse(wireColor) - var/wireIndex = GLOB.BorgWireColorToIndex[wireColor] - switch(wireIndex) - if(BORG_WIRE_LAWCHECK) //Forces a law update if the borg is set to receive them. Since an update would happen when the borg checks its laws anyway, not much use, but eh - if (src.lawupdate) - src.photosync() - - if (BORG_WIRE_AI_CONTROL) //pulse the AI wire to make the borg reselect an AI - src.connected_ai = select_active_ai() - - if (BORG_WIRE_CAMERA) - if(camera && camera.status && !scrambledcodes) - camera.toggle_cam_status(src, TRUE) // Kick anyone watching the Cyborg's camera, doesn't display you disconnecting the camera. - to_chat(usr, "[src]'s camera lens focuses loudly.") - to_chat(src, "Your camera lens focuses loudly.") - - src.interact(usr) - -/mob/living/silicon/robot/proc/interact(mob/user) - if(wiresexposed && (!isRemoteControlling(user))) - user.set_interaction(src) - var/t1 = text("Access Panel
      \n") - var/list/Borgwires = list( - "Orange" = 1, - "Dark red" = 2, - "White" = 3, - "Yellow" = 4, - "Blue" = 5, - ) - for(var/wiredesc in Borgwires) - var/is_uncut = src.borgwires & GLOB.BorgWireColorToFlag[Borgwires[wiredesc]] - t1 += "[wiredesc] wire: " - if(!is_uncut) - t1 += "Mend" - else - t1 += "Cut " - t1 += "Pulse " - t1 += "
      " - t1 += text("
      \n[(src.lawupdate ? "The LawSync light is on." : "The LawSync light is off.")]
      \n[(src.connected_ai ? "The AI link light is on." : "The AI link light is off.")]") - t1 += text("
      \n[((!isnull(src.camera) && src.camera.status == 1) ? "The Camera light is on." : "The Camera light is off.")]
      \n") - t1 += text("

      Close

      \n") - user << browse(t1, "window=borgwires") - onclose(user, "borgwires") - -/mob/living/silicon/robot/Topic(href, href_list) - ..() - if (((in_range(src, usr) && istype(src.loc, /turf))) && !isRemoteControlling(usr)) - usr.set_interaction(src) - if (href_list["borgwires"]) - var/t1 = text2num(href_list["borgwires"]) - var/obj/item/held_item = usr.get_held_item() - if (!held_item || !HAS_TRAIT(held_item, TRAIT_TOOL_WIRECUTTERS)) - to_chat(usr, SPAN_WARNING("You need wirecutters!")) - return - if (src.isWireColorCut(t1)) - src.mend(t1) - else - src.cut(t1) - else if (href_list["pulse"]) - var/t1 = text2num(href_list["pulse"]) - var/obj/item/held_item = usr.get_held_item() - if (!held_item || !HAS_TRAIT(held_item, TRAIT_TOOL_MULTITOOL)) - to_chat(usr, SPAN_WARNING("You need a multitool!")) - return - if (src.isWireColorCut(t1)) - to_chat(usr, SPAN_WARNING("You can't pulse a cut wire.")) - return - else - src.pulse(t1) - else if (href_list["close2"]) - close_browser(usr, "borgwires") - usr.unset_interaction() - return - -#undef BORG_WIRE_LAWCHECK -#undef BORG_WIRE_MAIN_POWER1 -#undef BORG_WIRE_MAIN_POWER2 -#undef BORG_WIRE_AI_CONTROL -#undef BORG_WIRE_CAMERA diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 3ee58585b524..6cf271738bf5 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -8,9 +8,6 @@ return speak_statement -#define IS_AI 1 -#define IS_ROBOT 2 - /mob/living/silicon/say_understands(mob/other, datum/language/speaking = null) //These only pertain to common. Languages are handled by mob/say_understands() if (!speaking) @@ -42,16 +39,7 @@ if(!findtext(message, "*", 2)) //Second asterisk means it is markup for *bold*, not an *emote. return emote(lowertext(copytext(message,2))) - var/bot_type = 0 //Let's not do a fuck ton of type checks, thanks. - if(isAI(src)) - bot_type = IS_AI - else if(isrobot(src)) - bot_type = IS_ROBOT - - var/mob/living/silicon/ai/AI = src //and let's not declare vars over and over and over for these guys. - var/mob/living/silicon/robot/R = src - - //Must be concious to speak + //Must be conscious to speak if (stat) return @@ -91,84 +79,13 @@ if(M.client) to_chat(M, "[src] transmits, \")[message]\"") return - if(message_mode && bot_type == IS_ROBOT && !R.is_component_functioning("radio")) - to_chat(src, SPAN_DANGER("Your radio isn't functional at this time.")) - return - switch(message_mode) if("department") - switch(bot_type) - if(IS_AI) - return AI.holopad_talk(message) - if(IS_ROBOT) - log_say("[key_name(src)] : [message]") - R.radio.talk_into(src,message,message_mode,verb,speaking) return 1 - if("general") - switch(bot_type) - if(IS_AI) - if (AI.aiRadio.disabledAi) - to_chat(src, SPAN_DANGER("System Error - Transceiver Disabled")) - return - else - log_say("[key_name(src)] : [message]") - AI.aiRadio.talk_into(src,message,null,verb,speaking) - if(IS_ROBOT) - log_say("[key_name(src)] : [message]") - R.radio.talk_into(src,message,null,verb,speaking) return 1 - else if(message_mode) - switch(bot_type) - if(IS_AI) - if (AI.aiRadio.disabledAi) - to_chat(src, SPAN_DANGER("System Error - Transceiver Disabled")) - return - else - log_say("[key_name(src)] : [message]") - AI.aiRadio.talk_into(src,message,message_mode,verb,speaking) - if(IS_ROBOT) - log_say("[key_name(src)] : [message]") - R.radio.talk_into(src,message,message_mode,verb,speaking) return 1 return ..(message,speaking,verb) - -//For holopads only. Usable by AI. -/mob/living/silicon/ai/proc/holopad_talk(message) - - log_say("[key_name(src)] : [message]") - - message = trim(message) - - if (!message) - return - - var/obj/structure/machinery/hologram/holopad/T = src.holo - if(T && T.hologram && T.master == src)//If there is a hologram and its master is the user. - var/verb = say_quote(message) - - //Human-like, sorta, heard by those who understand humans. - var/rendered_a = "[name] [verb], \"[message]\"" - //Speach distorted, heard by those who do not understand AIs. - var/message_stars = stars(message) - - var/rendered_b = "[voice_name] [verb], \"[message_stars]\"" - - to_chat(src, "Holopad transmitted, [real_name] [verb], [message]")//The AI can "hear" its own message. - for(var/mob/M in hearers(T.loc))//The location is the object, default distance. - if(M.say_understands(src))//If they understand AI speak. Humans and the like will be able to. - M.show_message(rendered_a, SHOW_MESSAGE_AUDIBLE) - else//If they do not. - M.show_message(rendered_b, SHOW_MESSAGE_AUDIBLE) - /*Radios "filter out" this conversation channel so we don't need to account for them. - This is another way of saying that we won't bother dealing with them.*/ - else - to_chat(src, "No holopad connected.") - return - return 1 - -#undef IS_AI -#undef IS_ROBOT diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 7f95e3d695b5..b47860806e5c 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -10,7 +10,6 @@ var/speak_exclamation = "declares" var/speak_query = "queries" var/pose //Yes, now AIs can pose too. - var/obj/item/device/camera/siliconcam/aiCamera = null //photography var/local_transmit //If set, can only speak to others of the same type within a short range. var/med_hud = MOB_HUD_MEDICAL_ADVANCED //Determines the med hud to use @@ -61,13 +60,6 @@ /mob/living/silicon/apply_effect(effect = 0, effecttype = STUN, blocked = 0) return 0//The only effect that can hit them atm is flashes and they still directly edit so this works for now -/proc/islinked(mob/living/silicon/robot/bot, mob/living/silicon/ai/ai) - if(!istype(bot) || !istype(ai)) - return 0 - if (bot.connected_ai == ai) - return 1 - return 0 - // this function shows health in the Status panel /mob/living/silicon/proc/show_system_integrity() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index d4b8c4ad4960..272bc289b2ec 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -32,7 +32,7 @@ ) /// The cat will 'play' with dead hunted targets near it until this counter reaches a certain value. var/play_counter = 0 - min_oxy = 16 //Require atleast 16kPA oxygen + min_oxy = 16 //Require at least 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius maxbodytemp = 323 //Above 50 Degrees Celcius holder_type = /obj/item/holder/cat diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 8edc7116628e..5b896203a704 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -204,8 +204,6 @@ alone = 0 break if(alone && ian && puppies < 4) - if(near_camera(src) || near_camera(ian)) - return new /mob/living/simple_animal/corgi/puppy(loc) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 11064634d498..b76935c4c158 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -22,7 +22,7 @@ density = FALSE var/body_color //brown, gray and white, leave blank for random layer = ABOVE_LYING_MOB_LAYER - min_oxy = 16 //Require atleast 16kPA oxygen + min_oxy = 16 //Require at least 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius maxbodytemp = 323 //Above 50 Degrees Celcius universal_speak = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 1e1c15d173b7..cb4d02cd28ec 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -6,7 +6,6 @@ minbodytemp = 0 maxbodytemp = 500 - var/obj/item/device/radio/borg/radio = null var/mob/living/silicon/ai/connected_ai = null var/obj/item/cell/cell = null var/obj/structure/machinery/camera/camera = null @@ -174,7 +173,6 @@ /mob/living/simple_animal/spiderbot/New() - radio = new /obj/item/device/radio/borg(src) camera = new /obj/structure/machinery/camera(src) camera.c_tag = "Spiderbot-[real_name]" camera.network = list("SS13") diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 6e8d0b8a2867..ba7bf741f6c0 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -110,7 +110,7 @@ wound_icon_holder.layer = layer + 0.01 wound_icon_holder.dir = dir - var/health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks + var/health_threshold = max(Ceiling((health * 4) / (maxHealth)), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) wound_icon_holder.icon_state = "none" diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 41f539d85aab..dcab9f70cbb5 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -131,7 +131,7 @@ return //Is the usr's mob type able to do this? - if(ishuman(usr) || isrobot(usr)) + if(ishuman(usr)) //Removing from inventory if(href_list["remove_inv"]) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a1ef9032e435..caf47b2824bb 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -323,7 +323,7 @@ explosion_throw(severity, direction) /mob/living/simple_animal/adjustBruteLoss(damage) - health = Clamp(health - damage, 0, maxHealth) + health = clamp(health - damage, 0, maxHealth) /mob/living/simple_animal/proc/SA_attackable(target_mob) if (isliving(target_mob)) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 79cd0c521067..c11b8acd7f9a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -761,7 +761,7 @@ note dizziness decrements automatically in the mob's Life() proc. recalculate_move_delay = TRUE if(usr.stat) - to_chat(usr, "You are unconcious and cannot do that!") + to_chat(usr, "You are unconscious and cannot do that!") return if(usr.is_mob_restrained()) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f7f062295778..f8df788aa5fc 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -24,7 +24,7 @@ /*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob. A variable should only be globally attached to turfs/obj/whatever, when it is in fact needed as such. - The current method unnecessarily clusters up the variable list, especially for humans (although rearranging won't really clean it up a lot but the difference will be noticable for other mobs). + The current method unnecessarily clusters up the variable list, especially for humans (although rearranging won't really clean it up a lot but the difference will be noticeable for other mobs). I'll make some notes on where certain variable defines should probably go. Changing this around would probably require a good look-over the pre-existing code. */ @@ -366,10 +366,6 @@ switch(type) if(/mob/living/carbon/human) possibleverbs += typesof(/mob/living/carbon/proc,/mob/living/carbon/verb,/mob/living/carbon/human/verb,/mob/living/carbon/human/proc) - if(/mob/living/silicon/robot) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/robot/proc,/mob/living/silicon/robot/verb) - if(/mob/living/silicon/ai) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc) possibleverbs -= verbs possibleverbs += "Cancel" // ...And one for the bottom diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 4f9244126c36..ce9e16e3747e 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -331,7 +331,7 @@ GLOBAL_LIST_INIT(limb_types_by_name, list( while(i < steps) animate(pixel_x = old_X + rand(-(strength), strength), pixel_y = old_y + rand(-(strength), strength), easing = JUMP_EASING, time = time_per_step) i++ - animate(pixel_x = old_X, pixel_y = old_y,time = Clamp(Floor(strength/PIXELS_PER_STRENGTH_VAL),2,4))//ease it back + animate(pixel_x = old_X, pixel_y = old_y,time = clamp(Floor(strength/PIXELS_PER_STRENGTH_VAL),2,4))//ease it back #undef PIXELS_PER_STRENGTH_VAL diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 8e9a513fdc88..9d108d36b461 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -56,9 +56,6 @@ if(istype(mob, /mob/living/carbon)) mob.swap_hand() - if(istype(mob,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = mob - R.cycle_modules() return @@ -71,8 +68,7 @@ /client/verb/drop_item() set hidden = TRUE - if(!isrobot(mob)) - mob.drop_item_v() + mob.drop_item_v() return @@ -181,7 +177,7 @@ if((mob.flags_atom & DIRLOCK) && mob.dir != direct) move_delay += MOVE_REDUCTION_DIRECTION_LOCKED // by Geeves - mob.cur_speed = Clamp(10/(move_delay + 0.5), MIN_SPEED, MAX_SPEED) + mob.cur_speed = clamp(10/(move_delay + 0.5), MIN_SPEED, MAX_SPEED) next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL // We pre-set this now for the crawling case. If crawling do_after fails, next_movement would be set after the attempt end instead of now. //Try to crawl first diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index ccf649fb0509..7917394df830 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -168,16 +168,6 @@ tutorial_menu() return - if(client.prefs.species != "Human") - if(!is_alien_whitelisted(src, client.prefs.species) && CONFIG_GET(flag/usealienwhitelist)) - to_chat(src, "You are currently not whitelisted to play [client.prefs.species].") - return - - var/datum/species/S = GLOB.all_species[client.prefs.species] - if(!(S.flags & IS_WHITELISTED)) - to_chat(src, alert("Your current species,[client.prefs.species], is not available for play on the station.")) - return - LateChoices() if("late_join_xeno") @@ -217,16 +207,6 @@ to_chat(usr, SPAN_WARNING("There is an administrative lock on entering the game! (The dropship likely crashed into the Almayer. This should take at most 20 minutes.)")) return - if(client.prefs.species != "Human") - if(!is_alien_whitelisted(src, client.prefs.species) && CONFIG_GET(flag/usealienwhitelist)) - to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species].")) - return 0 - - var/datum/species/S = GLOB.all_species[client.prefs.species] - if(!(S.flags & IS_WHITELISTED)) - to_chat(src, alert("Your current species,[client.prefs.species], is not available for play on the station.")) - return 0 - AttemptLateSpawn(href_list["job_selected"]) return @@ -367,7 +347,7 @@ roles_show ^= FLAG_SHOW_MEDICAL else if(roles_show & FLAG_SHOW_MARINES && GLOB.ROLES_MARINES.Find(J.title)) - dat += "
      Squad Riflemen:
      " + dat += "
      Marines:
      " roles_show ^= FLAG_SHOW_MARINES dat += "[J.disp_title] ([J.current_positions]) (Active: [active])
      " @@ -382,14 +362,6 @@ var/mob/living/carbon/human/new_character - var/datum/species/chosen_species - if(client.prefs.species) - chosen_species = GLOB.all_species[client.prefs.species] - if(chosen_species) - // Have to recheck admin due to no usr at roundstart. Latejoins are fine though. - if(is_species_whitelisted(chosen_species) || has_admin_rights()) - new_character = new(loc, client.prefs.species) - if(!new_character) new_character = new(loc) @@ -456,26 +428,6 @@ ui.close() continue -/mob/new_player/proc/has_admin_rights() - return client.admin_holder.rights & R_ADMIN - -/mob/new_player/proc/is_species_whitelisted(datum/species/S) - if(!S) return 1 - return is_alien_whitelisted(src, S.name) || !CONFIG_GET(flag/usealienwhitelist) || !(S.flags & IS_WHITELISTED) - -/mob/new_player/get_species() - var/datum/species/chosen_species - if(client.prefs.species) - chosen_species = GLOB.all_species[client.prefs.species] - - if(!chosen_species) - return "Human" - - if(is_species_whitelisted(chosen_species) || has_admin_rights()) - return chosen_species.name - - return "Human" - /mob/new_player/get_gender() if(!client || !client.prefs) ..() return client.prefs.gender diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index a4525e16a6c6..7e8439cee244 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -247,10 +247,8 @@ if(JOB_SQUAD_TEAM_LEADER) return /datum/equipment_preset/uscm/tl_equipped if(JOB_CO) - if(length(GLOB.RoleAuthority.roles_whitelist)) - var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_CO] - return J.gear_preset_whitelist["[JOB_CO][J.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, owner)]"] - return /datum/equipment_preset/uscm_ship/commander + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_CO] + return J.gear_preset_whitelist["[JOB_CO][J.get_whitelist_status(owner)]"] if(JOB_SO) return /datum/equipment_preset/uscm_ship/so if(JOB_XO) @@ -268,10 +266,8 @@ if(JOB_COMBAT_REPORTER) return /datum/equipment_preset/uscm_ship/reporter if(JOB_SYNTH) - if(length(GLOB.RoleAuthority.roles_whitelist)) - var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_SYNTH] - return J.gear_preset_whitelist["[JOB_SYNTH][J.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, owner)]"] - return /datum/equipment_preset/synth/uscm + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_SYNTH] + return J.gear_preset_whitelist["[JOB_SYNTH][J.get_whitelist_status(owner)]"] if(JOB_WORKING_JOE) return /datum/equipment_preset/synth/working_joe if(JOB_POLICE) @@ -317,10 +313,8 @@ return pick(SSmapping.configs[GROUND_MAP].CO_survivor_types) return /datum/equipment_preset/uscm_ship/commander if(JOB_PREDATOR) - if(length(GLOB.RoleAuthority.roles_whitelist)) - var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_PREDATOR] - return J.gear_preset_whitelist["[JOB_PREDATOR][J.get_whitelist_status(GLOB.RoleAuthority.roles_whitelist, owner)]"] - return /datum/equipment_preset/yautja/blooded + var/datum/job/J = GLOB.RoleAuthority.roles_by_name[JOB_PREDATOR] + return J.gear_preset_whitelist["[JOB_PREDATOR][J.get_whitelist_status(owner)]"] return /datum/equipment_preset/uscm/private_equipped diff --git a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm index 09c4c4861e57..5420753d635e 100644 --- a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm @@ -43,6 +43,6 @@ SYNTH_INFILTRATOR ) - // Whether or not the accessory can be affected by colouration - var/do_colouration = 1 + // Whether or not the accessory can be affected by coloration + var/do_coloration = 1 var/selectable = 1 diff --git a/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm b/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm index 0e18424a04d0..f2ae00e886f6 100644 --- a/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm +++ b/code/modules/mob/new_player/sprite_accessories/yautja_hair.dm @@ -1,7 +1,7 @@ /datum/sprite_accessory/yautja_hair icon = 'icons/mob/humans/yaut_hair.dmi' species_allowed = list(SPECIES_YAUTJA) - do_colouration = FALSE + do_coloration = FALSE /datum/sprite_accessory/yautja_hair/standard name = "Standard" diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 032888f26709..95c9227bd3d5 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -117,8 +117,6 @@ return 1 if(other.universal_speak) return 1 - if(isAI(src)) - return 1 if (istype(other, src.type) || istype(src, other.type)) return 1 return 0 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 6dda93e4d9c2..520b58a30db6 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -50,79 +50,6 @@ return O -/mob/new_player/AIize() - spawning = TRUE - return ..() - -/mob/living/carbon/human/AIize() - if (monkeyizing) - return - for(var/t in limbs) - qdel(t) - - return ..() - -/mob/living/carbon/AIize() - if (monkeyizing) - return - for(var/obj/item/W in src) - drop_inv_item_on_ground(W) - monkeyizing = 1 - ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") - icon = null - invisibility = 101 - return ..() - -/mob/proc/AIize() - return // this was unmaintained - - -//human -> robot -/mob/living/carbon/human/proc/Robotize() - if (monkeyizing) - return - for(var/obj/item/W in src) - drop_inv_item_on_ground(W) - regenerate_icons() - monkeyizing = 1 - ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") - icon = null - invisibility = 101 - for(var/t in limbs) - qdel(t) - - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) - - // cyborgs produced by Robotize get an automatic power cell - O.cell = new(O) - O.cell.maxcharge = 7500 - O.cell.charge = 7500 - - - O.gender = gender - O.invisibility = 0 - - if(mind) //TODO - mind.transfer_to(O) - if(O.job == "Cyborg") - O.mind.original = O - else - O.key = key - if(O.client) O.client.change_view(GLOB.world_view_size) - - O.forceMove(loc) - O.job = "Cyborg" - if(O.job == "Cyborg") - O.mmi = new /obj/item/device/mmi(O) - - if(O.mmi) - O.mmi.transfer_identity(src) - - O.Namepick() - - qdel(src) - return O - //human -> alien /mob/living/carbon/human/proc/Alienize(list/types) if (monkeyizing) diff --git a/code/modules/movement/launching/launching.dm b/code/modules/movement/launching/launching.dm index f72a7c773490..778c452a3240 100644 --- a/code/modules/movement/launching/launching.dm +++ b/code/modules/movement/launching/launching.dm @@ -54,6 +54,16 @@ matching_procs += collision_callbacks[path] return matching_procs +/// Invoke end_throw_callbacks on this metadata. +/// Takes argument of type /atom/movable +/datum/launch_metadata/proc/invoke_end_throw_callbacks(atom/movable/movable_atom) + if(length(end_throw_callbacks)) + for(var/datum/callback/callback as anything in end_throw_callbacks) + if(istype(callback, /datum/callback/dynamic)) + callback.Invoke(movable_atom) + else + callback.Invoke() + /atom/movable/var/datum/launch_metadata/launch_metadata = null //called when src is thrown into hit_atom @@ -164,7 +174,7 @@ animation_spin(5, 1 + min(1, LM.range/20)) var/old_speed = cur_speed - cur_speed = Clamp(LM.speed, MIN_SPEED, MAX_SPEED) // Sanity check, also ~1 sec delay between each launch move is not very reasonable + cur_speed = clamp(LM.speed, MIN_SPEED, MAX_SPEED) // Sanity check, also ~1 sec delay between each launch move is not very reasonable var/delay = 10/cur_speed - 0.5 // scales delay back to deciseconds for when sleep is called var/pass_flags = LM.pass_flags @@ -173,7 +183,7 @@ add_temp_pass_flags(pass_flags) var/turf/start_turf = get_step_towards(src, LM.target) - var/list/turf/path = getline2(start_turf, LM.target) + var/list/turf/path = get_line(start_turf, LM.target) var/last_loc = loc var/early_exit = FALSE @@ -210,12 +220,7 @@ rebounding = FALSE cur_speed = old_speed remove_temp_pass_flags(pass_flags) - if(length(LM.end_throw_callbacks)) - for(var/datum/callback/CB as anything in LM.end_throw_callbacks) - if(istype(CB, /datum/callback/dynamic)) - CB.Invoke(src) - else - CB.Invoke() + LM.invoke_end_throw_callbacks(src) QDEL_NULL(launch_metadata) /atom/movable/proc/throw_random_direction(range, speed = 0, atom/thrower, spin, launch_type = NORMAL_LAUNCH, pass_flags = NO_FLAGS) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 46a30b313bb8..3e26b2b8a1da 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -57,8 +57,8 @@ nanoui is used to open and update nano browser uis // the current status/visibility of the ui var/status = STATUS_INTERACTIVE - // Only allow users with a certain user.stat to get updates. Defaults to 0 (concious) - var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconcious or alive, 2 = dead concious or alive + // Only allow users with a certain user.stat to get updates. Defaults to 0 (conscious) + var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconscious or alive, 2 = dead conscious or alive /** * Create a new nanoui instance. @@ -166,7 +166,7 @@ nanoui is used to open and update nano browser uis set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) else if (allowed_user_stat == -1 || user == src_object) set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) - else if (isrobot(user)) + else if (isSilicon(user)) if (src_object in view(7, user)) // robots can see and interact with things they can see within 7 tiles set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) else diff --git a/code/modules/nightmare/nmnodes/mapload.dm b/code/modules/nightmare/nmnodes/mapload.dm index 6f75a46ed125..4b9ae2a3014b 100644 --- a/code/modules/nightmare/nmnodes/mapload.dm +++ b/code/modules/nightmare/nmnodes/mapload.dm @@ -100,7 +100,7 @@ if(!matcher.Find(filename)) continue #if !defined(UNIT_TESTS) - var/fprob = Clamp(text2num(matcher.group[1]) / 100, 0, 1) + var/fprob = clamp(text2num(matcher.group[1]) / 100, 0, 1) if(fprob < rand()) continue #endif // Remove the possibility of chance for testing diff --git a/code/modules/organs/limb_objects.dm b/code/modules/organs/limb_objects.dm index 734f303c7f5b..9d49ad7736d2 100644 --- a/code/modules/organs/limb_objects.dm +++ b/code/modules/organs/limb_objects.dm @@ -105,7 +105,7 @@ var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[H.f_style] if(facial_hair_style) var/icon/facial = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") - if(facial_hair_style.do_colouration) + if(facial_hair_style.do_coloration) facial.Blend(rgb(H.r_facial, H.g_facial, H.b_facial), ICON_ADD) overlays.Add(facial) // icon.Blend(facial, ICON_OVERLAY) @@ -115,7 +115,7 @@ if(hair_style) var/icon/hair = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") var/icon/eyes = new/icon("icon" = 'icons/mob/humans/onmob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s") - if(hair_style.do_colouration) + if(hair_style.do_coloration) hair.Blend(rgb(H.r_hair, H.g_hair, H.b_hair), ICON_ADD) eyes.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD) diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm index 949104c5d673..09ce36dbbfcb 100644 --- a/code/modules/organs/limbs.dm +++ b/code/modules/organs/limbs.dm @@ -365,7 +365,8 @@ //If limb was damaged before and took enough damage, try to cut or tear it off var/no_perma_damage = owner.status_flags & NO_PERMANENT_DAMAGE - if(previous_brute > 0 && !is_ff && body_part != BODY_FLAG_CHEST && body_part != BODY_FLAG_GROIN && !no_limb_loss && !no_perma_damage) + var/no_bone_break = owner.chem_effect_flags & CHEM_EFFECT_RESIST_FRACTURE + if(previous_brute > 0 && !is_ff && body_part != BODY_FLAG_CHEST && body_part != BODY_FLAG_GROIN && !no_limb_loss && !no_perma_damage && !no_bone_break) if(CONFIG_GET(flag/limbs_can_break) && brute_dam >= max_damage * CONFIG_GET(number/organ_health_multiplier)) var/cut_prob = brute/max_damage * 5 if(prob(cut_prob)) @@ -1091,7 +1092,7 @@ treat_grafted var tells it to apply to grafted but unsalved wounds, for burn kit //if the chance was not set by what called fracture(), the endurance check is done instead if(bonebreak_probability == null) //bone break chance is based on endurance, 25% for survivors, erts, 100% for most everyone else. - bonebreak_probability = 100 / Clamp(owner.skills?.get_skill_level(SKILL_ENDURANCE)-1,1,100) //can't be zero + bonebreak_probability = 100 / clamp(owner.skills?.get_skill_level(SKILL_ENDURANCE)-1,1,100) //can't be zero var/list/bonebreak_data = list("bonebreak_probability" = bonebreak_probability) SEND_SIGNAL(owner, COMSIG_HUMAN_BONEBREAK_PROBABILITY, bonebreak_data) diff --git a/code/modules/organs/organ_objects.dm b/code/modules/organs/organ_objects.dm index 7c7622820aac..d011933e4b2e 100644 --- a/code/modules/organs/organ_objects.dm +++ b/code/modules/organs/organ_objects.dm @@ -4,14 +4,20 @@ icon = 'icons/obj/items/organs.dmi' icon_state = "appendix" - health = 100 // Process() ticks before death. - - var/fresh = 3 // Squirts of blood left in it. - var/dead_icon // Icon used when the organ dies. - var/robotic // Is the limb prosthetic? - var/organ_tag // What slot does it go in? - var/organ_type = /datum/internal_organ // Used to spawn the relevant organ data when produced via a machine or spawn(). - var/datum/internal_organ/organ_data // Stores info when removed. + /// Process() ticks before death. + health = 100 + /// Squirts of blood left in it. + var/fresh = 3 + /// Icon used when the organ dies. + var/dead_icon + /// Is the limb prosthetic? + var/robotic + /// What slot does it go in? + var/organ_tag + /// Used to spawn the relevant organ data when produced via a machine or spawn(). + var/organ_type = /datum/internal_organ + /// Stores info when removed. + var/datum/internal_organ/organ_data black_market_value = 25 /obj/item/organ/attack_self(mob/user) @@ -100,7 +106,7 @@ gender = PLURAL organ_tag = "eyes" organ_type = /datum/internal_organ/eyes - var/eye_colour + var/eyes_color /obj/item/organ/liver name = "liver" @@ -164,13 +170,13 @@ /obj/item/organ/eyes/removed(mob/living/target, mob/living/user) - if(!eye_colour) - eye_colour = list(0,0,0) + if(!eyes_color) + eyes_color = list(0,0,0) ..() //Make sure target is set so we can steal their eye color for later. var/mob/living/carbon/human/H = target if(istype(H)) - eye_colour = list( + eyes_color = list( H.r_eyes ? H.r_eyes : 0, H.g_eyes ? H.g_eyes : 0, H.b_eyes ? H.b_eyes : 0 @@ -189,10 +195,10 @@ // Apply our eye color to the target. var/mob/living/carbon/human/H = target - if(istype(H) && eye_colour) - H.r_eyes = eye_colour[1] - H.g_eyes = eye_colour[2] - H.b_eyes = eye_colour[3] + if(istype(H) && eyes_color) + H.r_eyes = eyes_color[1] + H.g_eyes = eyes_color[2] + H.b_eyes = eyes_color[3] H.update_body() /obj/item/organ/proc/bitten(mob/user) diff --git a/code/modules/paperwork/notepad.dm b/code/modules/paperwork/notepad.dm index f30d56c4a7eb..3eb83b6a67b0 100644 --- a/code/modules/paperwork/notepad.dm +++ b/code/modules/paperwork/notepad.dm @@ -14,14 +14,14 @@ var/page = 1 var/screen = 0 - var/list/cover_colours = list("red", "green", "black", "blue") - var/cover_colour + var/list/cover_colors = list("red", "green", "black", "blue") + var/cover_color /obj/item/notepad/Initialize(mapload, ...) . = ..() - if(!cover_colour) - cover_colour = pick(cover_colours) - icon_state = initial(icon_state) + "_[cover_colour]" + if(!cover_color) + cover_color = pick(cover_colors) + icon_state = initial(icon_state) + "_[cover_color]" for(var/i = 1 to paper_left) new /obj/item/paper(src) @@ -129,13 +129,13 @@ add_fingerprint(usr) /obj/item/notepad/black - cover_colour = "black" + cover_color = "black" /obj/item/notepad/blue - cover_colour = "blue" + cover_color = "blue" /obj/item/notepad/green - cover_colour = "green" + cover_color = "green" /obj/item/notepad/red - cover_colour = "red" + cover_color = "red" diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 8220f60e77ed..27b1fa885133 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -114,10 +114,7 @@ /obj/item/paper/attack_remote(mob/living/silicon/ai/user as mob) var/dist - if(istype(user) && user.camera) //is AI - dist = get_dist(src, user.camera) - else //cyborg or AI not seeing through a camera - dist = get_dist(src, user) + dist = get_dist(src, user) if(dist < 2) read_paper(user) else @@ -258,7 +255,7 @@ t = replacetext(t, "\[upp\]", "") t = replacetext(t, "\[cmb\]", "") - t = "[t]" + t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! t = replacetext(t, "\[*\]", "") t = replacetext(t, "\[hr\]", "") @@ -272,7 +269,7 @@ t = replacetext(t, "\[cell\]", "") t = replacetext(t, "\[logo\]", "") - t = "[t]" + t = "[t]" // t = replacetext(t, "#", "") // Junk converted to nothing! @@ -361,8 +358,8 @@ iscrayon = 1 - // if paper is not in usr, then it must be near them, or in a clipboard or folder, which must be in or near usr - if(src.loc != usr && !src.Adjacent(usr) && !((istype(src.loc, /obj/item/clipboard) || istype(src.loc, /obj/item/folder)) && (src.loc.loc == usr || src.loc.Adjacent(usr)) ) ) + // if paper is not in usr, then it must be near them, or in a clipboard, noticeboard or folder, which must be in or near usr + if(src.loc != usr && !src.Adjacent(usr) && !((istype(src.loc, /obj/item/clipboard) || istype(src.loc, /obj/structure/noticeboard) || istype(src.loc, /obj/item/folder)) && (src.loc.loc == usr || src.loc.Adjacent(usr)) ) ) return t = replacetext(t, "\n", "
      ") @@ -408,10 +405,7 @@ if(!p.on) to_chat(user, SPAN_NOTICE("Your pen is not on!")) return - if ( istype(P, /obj/item/tool/pen/robopen) && P:mode == 2 ) - P:RenamePaper(user,src) - else - show_browser(user, "[info_links][stamps]", name, name) // Update the window + show_browser(user, "[info_links][stamps]", name, name) // Update the window //openhelp(user) return diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index c094c8f32569..6ee3a12faffd 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -96,3 +96,29 @@ if (response != "Carbon-Copy" && response != "Company Document" && response != "USCM Document") return sec_paper_type = response + +/// Relic from the days of cyborgs, kept for flavour, an handheld paper +/// dispenser that was supposed to print pre-filled forms but never did. +/obj/item/form_printer + name = "paper dispenser" + icon = 'icons/obj/items/paper.dmi' + icon_state = "paper_bin1" + item_state = "sheet-metal" + +/obj/item/form_printer/attack(mob/living/carbon/M, mob/living/carbon/user) + return + +/obj/item/form_printer/afterattack(atom/target, mob/living/user, flag, params) + if(!target || !flag) + return + + if(istype(target,/obj/structure/surface/table)) + deploy_paper(get_turf(target)) + +/obj/item/form_printer/attack_self(mob/user) + ..() + deploy_paper(get_turf(src)) + +/obj/item/form_printer/proc/deploy_paper(turf/T) + T.visible_message(SPAN_NOTICE("\The [src.loc] dispenses a sheet of crisp white paper.")) + new /obj/item/paper(T) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index b47f630974e6..08711f295085 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -31,8 +31,6 @@ dat += "+

      " else if(toner) dat += "Please insert paper to copy.

      " - if(istype(user,/mob/living/silicon)) - dat += "Print photo from database

      " dat += "Current toner level: [toner]" if(!toner) dat +="
      Please insert a new toner cartridge!" @@ -111,27 +109,6 @@ if(copies < maxcopies) copies++ updateUsrDialog() - else if(href_list["aipic"]) - if(!istype(usr,/mob/living/silicon)) return - if(toner >= 5) - var/mob/living/silicon/tempAI = usr - var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera - - if(!camera) - return - var/datum/picture/selection = camera.selectpicture() - if (!selection) - return - - var/obj/item/photo/p = new /obj/item/photo (src.loc) - p.construct(selection) - if (p.desc == "") - p.desc += "Copied by [tempAI.name]" - else - p.desc += " - Copied by [tempAI.name]" - toner -= 5 - sleep(15) - updateUsrDialog() /obj/structure/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/paper)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 40d88f684791..f42030cce69d 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -17,6 +17,10 @@ item_state = "electropack" w_class = SIZE_TINY +/** Picture metadata */ +/datum/picture + var/name = "image" + var/list/fields = list() /* * photo * diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm deleted file mode 100644 index 0a82fde5c88b..000000000000 --- a/code/modules/paperwork/silicon_photography.dm +++ /dev/null @@ -1,170 +0,0 @@ -/* -* AI-specific * -**************/ -/datum/picture - var/name = "image" - var/list/fields = list() - -/obj/item/device/camera/siliconcam - var/in_camera_mode = 0 - var/photos_taken = 0 - var/list/aipictures = list() - -/obj/item/device/camera/siliconcam/ai_camera //camera AI can take pictures with - name = "AI photo camera" - -/obj/item/device/camera/siliconcam/robot_camera //camera cyborgs can take pictures with - name = "Cyborg photo camera" - -/obj/item/device/camera/siliconcam/drone_camera //currently doesn't offer the verbs, thus cannot be used - name = "Drone photo camera" - -/obj/item/device/camera/siliconcam/proc/injectaialbum(datum/picture/P, sufix = "") //stores image information to a list similar to that of the datacore - photos_taken++ - P.fields["name"] = "Image [photos_taken][sufix]" - aipictures += P - -/obj/item/device/camera/siliconcam/proc/injectmasteralbum(datum/picture/P) //stores image information to a list similar to that of the datacore - var/mob/living/silicon/robot/C = src.loc - if(C.connected_ai) - var/mob/A = P.fields["author"] - C.connected_ai.aiCamera.injectaialbum(P, " (taken by [A.name])") - to_chat(C.connected_ai, SPAN_UNCONSCIOUS("Image recorded and saved by [name]")) - to_chat(usr, SPAN_UNCONSCIOUS("Image recorded and saved to remote database")) //feedback to the Cyborg player that the picture was taken - else - injectaialbum(P) - to_chat(usr, SPAN_UNCONSCIOUS("Image recorded")) - -/obj/item/device/camera/siliconcam/proc/selectpicture(obj/item/device/camera/siliconcam/cam) - if(!cam) - cam = getsource() - - var/list/nametemp = list() - var/find - if(cam.aipictures.len == 0) - to_chat(usr, SPAN_DANGER("No images saved")) - return - for(var/datum/picture/t in cam.aipictures) - nametemp += t.fields["name"] - find = tgui_input_list(usr, "Select image (numbered in order taken)", "Camera", nametemp) - - for(var/datum/picture/q in cam.aipictures) - if(q.fields["name"] == find) - return q - -/obj/item/device/camera/siliconcam/proc/viewpictures() - var/datum/picture/selection = selectpicture() - - if(!selection) - return - - var/obj/item/photo/P = new/obj/item/photo() - P.construct(selection) - P.show(usr) - to_chat(usr, P.desc) - - // TG uses a special garbage collector... qdel(P) - qdel(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all. - -/obj/item/device/camera/siliconcam/proc/deletepicture() - var/datum/picture/selection = selectpicture() - - if(!selection) - return - - aipictures -= selection - to_chat(usr, SPAN_UNCONSCIOUS("Image deleted")) - -/obj/item/device/camera/siliconcam/proc/toggle_camera_mode() - if(in_camera_mode) - camera_mode_off() - else - camera_mode_on() - -/obj/item/device/camera/siliconcam/proc/camera_mode_off() - src.in_camera_mode = 0 - to_chat(usr, "Camera Mode deactivated") - -/obj/item/device/camera/siliconcam/proc/camera_mode_on() - src.in_camera_mode = 1 - to_chat(usr, "Camera Mode activated") - -/obj/item/device/camera/siliconcam/ai_camera/printpicture(mob/user, datum/picture/P) - injectaialbum(P) - to_chat(usr, SPAN_UNCONSCIOUS("Image recorded")) - -/obj/item/device/camera/siliconcam/robot_camera/printpicture(mob/user, datum/picture/P) - injectmasteralbum(P) - -/obj/item/device/camera/siliconcam/ai_camera/verb/take_image() - set category = "AI Commands" - set name = "Images - Snap" - set desc = "Takes an image" - set src in usr - - toggle_camera_mode() - -/obj/item/device/camera/siliconcam/ai_camera/verb/view_images() - set category = "AI Commands" - set name = "Images - View" - set desc = "View images" - set src in usr - - viewpictures() - -/obj/item/device/camera/siliconcam/ai_camera/verb/delete_images() - set category = "AI Commands" - set name = "Images - Delete" - set desc = "Delete image" - set src in usr - - deletepicture() - -/obj/item/device/camera/siliconcam/robot_camera/verb/take_image() - set category ="Robot Commands" - set name = "Images - Snap" - set desc = "Takes an image" - set src in usr - - toggle_camera_mode() - -/obj/item/device/camera/siliconcam/robot_camera/verb/view_images() - set category ="Robot Commands" - set name = "Images - View" - set desc = "View images" - set src in usr - - viewpictures() - -/obj/item/device/camera/siliconcam/robot_camera/verb/delete_images() - set category = "Robot Commands" - set name = "Images - Delete" - set desc = "Delete a local image" - set src in usr - - // Explicitly only allow deletion from the local camera - var/mob/living/silicon/robot/C = src.loc - if(C.connected_ai) - to_chat(C, "Not allowed to delete from the remote database.") - return - - deletepicture() - -/obj/item/device/camera/siliconcam/proc/getsource() - if(ismob(src.loc)) - var/mob/M = src.loc - if(isRemoteControlling(M)) - return src - - var/mob/living/silicon/robot/C = src.loc - var/obj/item/device/camera/siliconcam/Cinfo - if(C.connected_ai) - Cinfo = C.connected_ai.aiCamera - else - Cinfo = src - return Cinfo - -/mob/living/silicon/proc/GetPicture() - if(!aiCamera) - return - return aiCamera.selectpicture() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 8f138d2c905f..309fa583589c 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -530,7 +530,7 @@ L.update() - if(user.put_in_active_hand(L)) //succesfully puts it in our active hand + if(user.put_in_active_hand(L)) //successfully puts it in our active hand L.add_fingerprint(user) else L.forceMove(loc) //if not, put it on the ground diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 00e6b92eab8f..9aefa21d0f7a 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -81,7 +81,7 @@ if(has_power || !src.needs_power) if(machine_processing) if(stat & NOPOWER) - addToListNoDupe(GLOB.processing_machines, src) // power interupted us, start processing again + addToListNoDupe(GLOB.processing_machines, src) // power interrupted us, start processing again stat &= ~NOPOWER src.update_use_power(USE_POWER_IDLE) diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index 1eb249b5ecfa..d6fb7bb66841 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -10,7 +10,7 @@ var/max_coils = 6 //30M capacity, 1.5MW input/output when fully upgraded /w default coils var/cur_coils = 1 // Current amount of installed coils var/safeties_enabled = 1 // If 0 modifications can be done without discharging the SMES, at risk of critical failure. - var/failing = 0 // If 1 critical failure has occured and SMES explosion is imminent. + var/failing = 0 // If 1 critical failure has occurred and SMES explosion is imminent. should_be_mapped = 1 unslashable = TRUE unacidable = TRUE diff --git a/code/modules/projectiles/ammo_boxes/handful_boxes.dm b/code/modules/projectiles/ammo_boxes/handful_boxes.dm index 9ac2aeea8870..3e9300c8b5c2 100644 --- a/code/modules/projectiles/ammo_boxes/handful_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/handful_boxes.dm @@ -68,6 +68,20 @@ /obj/item/ammo_box/magazine/shotgun/beanbag/empty empty = TRUE + +//-----------------------16 GAUGE SHOTGUN SHELL BOXES----------------------- + +/obj/item/ammo_box/magazine/shotgun/light/breaching + name = "\improper 16-gauge shotgun shell box (Breaching x 120)" + icon_state = "base_breach" + overlay_content = "_breach" + magazine_type = /obj/item/ammo_magazine/shotgun/light/breaching + num_of_magazines = 120 //10 full mag reloads. + can_explode = FALSE + +/obj/item/ammo_box/magazine/shotgun/light/breaching/empty + empty = TRUE + //-----------------------R4T Lever-action rifle handfuls box----------------------- /obj/item/ammo_box/magazine/lever_action diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm index 6d20dcc75949..170bb539bc73 100644 --- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm @@ -170,6 +170,19 @@ /obj/item/ammo_box/magazine/m4ra/heap/empty empty = TRUE +//-----------------------XM51 Breaching Scattergun Mag Box----------------------- + +/obj/item/ammo_box/magazine/xm51 + name = "\improper magazine box (XM51 x 8)" + icon_state = "base_breach" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_xm51" + num_of_magazines = 8 + magazine_type = /obj/item/ammo_magazine/rifle/xm51 + +/obj/item/ammo_box/magazine/xm51/empty + empty = TRUE + //-----------------------L42A Battle Rifle Mag Boxes----------------------- /obj/item/ammo_box/magazine/l42a diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 594ad6b69dce..a3ba517c0cae 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -199,7 +199,7 @@ They're all essentially identical when it comes to getting the job done. var/severity = round(current_rounds / 50) //the more ammo inside, the faster and harder it cooks off if(severity > 0) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, -1, ((severity > 4) ? 0 : -1), Clamp(severity, 0, 1), Clamp(severity, 0, 2), 1, 0, 0, flame_cause_data), max(5 - severity, 2)) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, -1, ((severity > 4) ? 0 : -1), clamp(severity, 0, 1), clamp(severity, 0, 2), 1, 0, 0, flame_cause_data), max(5 - severity, 2)) if(!QDELETED(src)) qdel(src) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d00b6cbe90c9..497b95061d6c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -663,11 +663,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w // weapon info - data["icon"] = SSassets.transport.get_asset_url("no_name.png") - - if(SSassets.cache["[base_gun_icon].png"]) - data["icon"] = SSassets.transport.get_asset_url("[base_gun_icon].png") - + data["icon"] = base_gun_icon data["name"] = name data["desc"] = desc data["two_handed_only"] = (flags_gun_features & GUN_WIELDED_FIRING_ONLY) @@ -727,8 +723,8 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w /obj/item/weapon/gun/ui_assets(mob/user) . = ..() || list() - . += get_asset_datum(/datum/asset/simple/firemodes) - //. += get_asset_datum(/datum/asset/spritesheet/gun_lineart) + . += get_asset_datum(/datum/asset/spritesheet/gun_lineart_modes) + . += get_asset_datum(/datum/asset/spritesheet/gun_lineart) // END TGUI \\ diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 0f3fde8f3c9b..1807213f6226 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -31,7 +31,7 @@ Defined in conflicts.dm of the #defines folder. var/pixel_shift_y = 16 //Uses the bottom left corner of the item. flags_atom = FPRINT|CONDUCT - matter = list("metal" = 2000) + matter = list("metal" = 100) w_class = SIZE_SMALL force = 1 var/slot = null //"muzzle", "rail", "under", "stock", "special" @@ -168,7 +168,8 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/proc/Detach(mob/user, obj/item/weapon/gun/detaching_gub) if(!istype(detaching_gub)) return //Guns only - detaching_gub.on_detach(user) + if(user) + detaching_gub.on_detach(user, src) if(flags_attach_features & ATTACH_ACTIVATION) activate_attachment(detaching_gub, null, TRUE) @@ -454,7 +455,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/f90_dmr_barrel name = "f90 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "aug_dmr_barrel_a" attach_icon = "aug_dmr_barrel_a" slot = "muzzle" @@ -465,7 +466,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/f90_shotgun_barrel name = "f90 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "aug_mkey_barrel_a" attach_icon = "aug_mkey_barrel_a" slot = "muzzle" @@ -476,7 +477,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/l56a2_smartgun name = "l56a2 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "magsg_barrel_a" attach_icon = "magsg_barrel_a" slot = "muzzle" @@ -2104,6 +2105,43 @@ Defined in conflicts.dm of the #defines folder. flags_attach_features = NO_FLAGS hud_offset_mod = 2 +/obj/item/attachable/stock/xm51 + name = "\improper XM51 stock" + desc = "A specialized stock designed for XM51 breaching shotguns. Helps the user absorb the recoil of the weapon while also reducing scatter. Integrated mechanisms inside the stock allow use of a devastating two-shot burst. This comes at a cost of the gun becoming too unwieldy to holster, worse handling and mobility." + icon_state = "xm51_stock" + attach_icon = "xm51_stock_a" + wield_delay_mod = WIELD_DELAY_FAST + hud_offset_mod = 3 + melee_mod = 10 + +/obj/item/attachable/stock/xm51/Initialize(mapload, ...) + . = ..() + select_gamemode_skin(type) + //it makes stuff much better when two-handed + accuracy_mod = HIT_ACCURACY_MULT_TIER_3 + recoil_mod = -RECOIL_AMOUNT_TIER_4 + scatter_mod = -SCATTER_AMOUNT_TIER_8 + movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_4 + //and allows for burst-fire + burst_mod = BURST_AMOUNT_TIER_2 + //but it makes stuff much worse when one handed + accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_5 + recoil_unwielded_mod = RECOIL_AMOUNT_TIER_5 + scatter_unwielded_mod = SCATTER_AMOUNT_TIER_6 + //and makes you slower + aim_speed_mod = CONFIG_GET(number/slowdown_med) + +/obj/item/attachable/stock/xm51/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) + . = ..() + var/new_attach_icon + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + if("desert") + attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + if("classic") + attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + /obj/item/attachable/stock/mod88 name = "\improper Mod 88 burst stock" desc = "Increases the fire rate and burst amount on the Mod 88. Some versions act as a holster for the weapon when un-attached. This is a test item and should not be used in normal gameplay (yet)." @@ -2196,7 +2234,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel name = "M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_barrel" attach_icon = "m4ra_barrel" slot = "special" @@ -2222,7 +2260,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel_custom name = "custom M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_custom_barrel" attach_icon = "m4ra_custom_barrel" slot = "special" @@ -2248,7 +2286,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/upp_rpg_breech name = "HJRA-12 Breech" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "hjra_breech" attach_icon = "hjra_breech" @@ -2260,7 +2298,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/pkpbarrel name = "QYJ-72 Barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "uppmg_barrel" attach_icon = "uppmg_barrel" @@ -2272,7 +2310,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/pkpstock name = "QYJ-72 Stock" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "uppmg_stock" attach_icon = "uppmg_stock" @@ -2284,7 +2322,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/type88_barrel name = "Type-88 Barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "type88_barrel" attach_icon = "type88_barrel" @@ -2296,7 +2334,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/type73suppressor name = "Type 73 Integrated Suppressor" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "type73_suppressor" attach_icon = "type73_suppressor" @@ -2308,7 +2346,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/type71 name = "Type 71 Stock" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "type71_stock" attach_icon = "type71_stock" @@ -2940,7 +2978,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/attached_gun/flamer/proc/unleash_flame(atom/target, mob/living/user) set waitfor = 0 - var/list/turf/turfs = getline2(user,target) + var/list/turf/turfs = get_line(user,target) var/distance = 0 var/turf/prev_T var/stop_at_turf = FALSE diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index 8e73124a8b92..66e3a65f2f77 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -395,7 +395,7 @@ DEFINES in setup.dm, referenced here. playsound(user, 'sound/handling/attachment_add.ogg', 15, 1, 4) return TRUE -/obj/item/weapon/gun/proc/on_detach(obj/item/attachable/attachment) +/obj/item/weapon/gun/proc/on_detach(mob/user, obj/item/attachable/attachment) return /obj/item/weapon/gun/proc/update_attachables() //Updates everything. You generally don't need to use this. @@ -526,12 +526,7 @@ DEFINES in setup.dm, referenced here. return FALSE -//For the holster hotkey -/mob/living/silicon/robot/verb/holster_verb(unholster_number_offset = 1 as num) - set name = "holster" - set hidden = TRUE - uneq_active() - +///For the holster hotkey /mob/living/carbon/human/verb/holster_verb(unholster_number_offset = 1 as num) set name = "holster" set hidden = TRUE diff --git a/code/modules/projectiles/guns/boltaction.dm b/code/modules/projectiles/guns/boltaction.dm index d21cb5b87254..a06131f98ce0 100644 --- a/code/modules/projectiles/guns/boltaction.dm +++ b/code/modules/projectiles/guns/boltaction.dm @@ -129,7 +129,7 @@ The 'pitter-patter' of 'rain' that the crews heard was in fact multiple rifles failing to penetrate through the vehicle's external armor. Once a number of the anti-materiel rifles were examined, it was deemed a high priority to produce a Corps version. In the process, the rifles were designed for a higher calibre then that of the rebel versions, so the M707 would be capable of penetrating the light vehicle armor of their UPP peers in the event of another Dog War or Tientsin."} - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overriden with camos + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overridden with camos icon_state = "vulture" item_state = "vulture" cocked_sound = 'sound/weapons/gun_cocked2.ogg' diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 282edcab9fd6..62e37e4f7c3b 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -205,16 +205,16 @@ var/flameshape = R.flameshape var/fire_type = R.fire_type - R.intensityfire = Clamp(R.intensityfire, current_mag.reagents.min_fire_int, current_mag.reagents.max_fire_int) - R.durationfire = Clamp(R.durationfire, current_mag.reagents.min_fire_dur, current_mag.reagents.max_fire_dur) - R.rangefire = Clamp(R.rangefire, current_mag.reagents.min_fire_rad, current_mag.reagents.max_fire_rad) + R.intensityfire = clamp(R.intensityfire, current_mag.reagents.min_fire_int, current_mag.reagents.max_fire_int) + R.durationfire = clamp(R.durationfire, current_mag.reagents.min_fire_dur, current_mag.reagents.max_fire_dur) + R.rangefire = clamp(R.rangefire, current_mag.reagents.min_fire_rad, current_mag.reagents.max_fire_rad) var/max_range = R.rangefire if (max_range < fuel_pressure) //Used for custom tanks, allows for higher ranges - max_range = Clamp(fuel_pressure, 0, current_mag.reagents.max_fire_rad) + max_range = clamp(fuel_pressure, 0, current_mag.reagents.max_fire_rad) if(R.rangefire == -1) max_range = current_mag.reagents.max_fire_rad - var/turf/temp[] = getline2(get_turf(user), get_turf(target)) + var/turf/temp[] = get_line(get_turf(user), get_turf(target)) var/turf/to_fire = temp[2] diff --git a/code/modules/projectiles/guns/flamer/flameshape.dm b/code/modules/projectiles/guns/flamer/flameshape.dm index ae6c2dec0a67..3e5e398c91e8 100644 --- a/code/modules/projectiles/guns/flamer/flameshape.dm +++ b/code/modules/projectiles/guns/flamer/flameshape.dm @@ -74,7 +74,7 @@ for(var/dirn in dirs) var/endturf = get_ranged_target_turf(F, dirn, fire_spread_amount) - var/list/turfs = getline2(source_turf, endturf) + var/list/turfs = get_line(source_turf, endturf) var/turf/prev_T = source_turf for(var/turf/T in turfs) @@ -124,7 +124,7 @@ var/distance = 1 var/stop_at_turf = FALSE - var/list/turfs = getline2(source_turf, F.target_clicked) + var/list/turfs = get_line(source_turf, F.target_clicked) for(var/turf/T in turfs) if(istype(T, /turf/open/space)) break @@ -174,7 +174,7 @@ user = F.weapon_cause_data.resolve_mob() var/unleash_dir = user.dir - var/list/turf/turfs = getline2(F, F.target_clicked) + var/list/turf/turfs = get_line(F, F.target_clicked) var/distance = 1 var/hit_dense_atom_mid = FALSE var/turf/prev_T = user.loc diff --git a/code/modules/projectiles/guns/lever_action.dm b/code/modules/projectiles/guns/lever_action.dm index 849844f4f044..a8fb78f72a9c 100644 --- a/code/modules/projectiles/guns/lever_action.dm +++ b/code/modules/projectiles/guns/lever_action.dm @@ -353,7 +353,7 @@ their unique feature is that a direct hit will buff your damage and firerate name = "\improper XM88 heavy rifle" desc = "An experimental man-portable anti-material rifle chambered in .458 SOCOM. It must be manually chambered for every shot.\nIt has a special property - when you obtain multiple direct hits in a row, its armor penetration and damage will increase." desc_lore = "Originally developed by ARMAT Battlefield Systems for the government of the state of Greater Brazil for use in the Favela Wars (2161 - Ongoing) against mechanized infantry. The platform features an onboard computerized targeting system, sensor array, and an electronic autoloader; these features work in tandem to reduce and render inert armor on the users target with successive hits. The Almayer was issued a small amount of XM88s while preparing for Operation Swamp Hopper with the USS Nan-Shan." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overriden with camos anyways + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' // overridden with camos anyways icon_state = "boomslang" item_state = "boomslang" fire_sound = 'sound/weapons/gun_boomslang_fire.ogg' diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 1ee8aa189ed3..29b2c55b7ec0 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -1867,3 +1867,123 @@ f90_shotgun_barrel.Attach(src) update_attachable(f90_shotgun.slot) update_attachable(f90_shotgun_barrel.slot) + +//------------------------------------------------------- +//XM51, Breaching Scattergun + +/obj/item/weapon/gun/rifle/xm51 + name = "\improper XM51 breaching scattergun" + desc = "An experimental shotgun model going through testing trials in the USCM. Based on the original civilian and CMB version, the XM51 is a mag-fed, pump-action shotgun. It utilizes special 16-gauge breaching rounds which are effective at breaching walls and doors. Users are advised not to employ the weapon against soft or armored targets due to low performance of the shells." + icon_state = "xm51" + item_state = "xm51" + fire_sound = 'sound/weapons/gun_shotgun_xm51.ogg' + reload_sound = 'sound/weapons/handling/l42_reload.ogg' + unload_sound = 'sound/weapons/handling/l42_unload.ogg' + current_mag = /obj/item/ammo_magazine/rifle/xm51 + attachable_allowed = list( + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/bayonet/co2, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/angledgrip, + /obj/item/attachable/gyro, + /obj/item/attachable/flashlight/grip, + /obj/item/attachable/flashlight, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/stock/xm51, + ) + flags_equip_slot = SLOT_BACK + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + gun_category = GUN_CATEGORY_SHOTGUN + aim_slowdown = SLOWDOWN_ADS_SHOTGUN + map_specific_decoration = TRUE + + var/pump_delay //How long we have to wait before we can pump the shotgun again. + var/pump_sound = "shotgunpump" + var/message_delay = 1 SECONDS //To stop message spam when trying to pump the gun constantly. + var/burst_count = 0 //To detect when the burst fire is near its end. + COOLDOWN_DECLARE(allow_message) + COOLDOWN_DECLARE(allow_pump) + +/obj/item/weapon/gun/rifle/xm51/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 34, "muzzle_y" = 18, "rail_x" = 12, "rail_y" = 20, "under_x" = 24, "under_y" = 13, "stock_x" = 15, "stock_y" = 16) + +/obj/item/weapon/gun/rifle/xm51/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_4*2) + set_burst_amount(0) + burst_scatter_mult = SCATTER_AMOUNT_TIER_7 + accuracy_mult = BASE_ACCURACY_MULT + 2*HIT_ACCURACY_MULT_TIER_8 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_8 + recoil = RECOIL_AMOUNT_TIER_4 + recoil_unwielded = RECOIL_AMOUNT_TIER_2 + scatter = SCATTER_AMOUNT_TIER_6 + +/obj/item/weapon/gun/rifle/xm51/Initialize(mapload, spawn_empty) + . = ..() + pump_delay = FIRE_DELAY_TIER_8*3 + additional_fire_group_delay += pump_delay + +/obj/item/weapon/gun/rifle/xm51/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY_ID("turfs", /datum/element/bullet_trait_damage_boost, 30, GLOB.damage_boost_turfs), //2550, 2 taps colony walls, 4 taps reinforced walls + BULLET_TRAIT_ENTRY_ID("xeno turfs", /datum/element/bullet_trait_damage_boost, 0.23, GLOB.damage_boost_turfs_xeno), //2550*0.23 = 586, 2 taps resin walls, 3 taps thick resin + BULLET_TRAIT_ENTRY_ID("breaching", /datum/element/bullet_trait_damage_boost, 15, GLOB.damage_boost_breaching), //1275, enough to 1 tap airlocks + BULLET_TRAIT_ENTRY_ID("pylons", /datum/element/bullet_trait_damage_boost, 6, GLOB.damage_boost_pylons) //510, 4 shots to take out a pylon + )) + +/obj/item/weapon/gun/rifle/xm51/unique_action(mob/user) + if(!COOLDOWN_FINISHED(src, allow_pump)) + return + if(in_chamber) + if(COOLDOWN_FINISHED(src, allow_message)) + to_chat(usr, SPAN_WARNING("[src] already has a shell in the chamber!")) + COOLDOWN_START(src, allow_message, message_delay) + return + + playsound(user, pump_sound, 10, 1) + COOLDOWN_START(src, allow_pump, pump_delay) + ready_in_chamber() + burst_count = 0 //Reset the count for burst mode. + +/obj/item/weapon/gun/rifle/xm51/load_into_chamber(mob/user) + return in_chamber + +/obj/item/weapon/gun/rifle/xm51/reload_into_chamber(mob/user) //Don't chamber bullets after firing. + if(!current_mag) + update_icon() + return + + in_chamber = null + if(current_mag.current_rounds <= 0 && flags_gun_features & GUN_AUTO_EJECTOR) + if (user.client?.prefs && (user.client?.prefs?.toggle_prefs & TOGGLE_AUTO_EJECT_MAGAZINE_OFF)) + update_icon() + else if (!(flags_gun_features & GUN_BURST_FIRING) || !in_chamber) // Magazine will only unload once burstfire is over + var/drop_to_ground = TRUE + if (user.client?.prefs && (user.client?.prefs?.toggle_prefs & TOGGLE_AUTO_EJECT_MAGAZINE_TO_HAND)) + drop_to_ground = FALSE + unwield(user) + user.swap_hand() + unload(user, TRUE, drop_to_ground) // We want to quickly autoeject the magazine. This proc does the rest based on magazine type. User can be passed as null. + playsound(src, empty_sound, 25, 1) + if(gun_firemode == GUN_FIREMODE_BURSTFIRE & burst_count < burst_amount - 1) //Fire two (or more) shots in a burst without having to pump. + ready_in_chamber() + burst_count++ + return in_chamber + +/obj/item/weapon/gun/rifle/xm51/replace_magazine(mob/user, obj/item/ammo_magazine/magazine) //Don't chamber a round when reloading. + user.drop_inv_item_to_loc(magazine, src) //Click! + current_mag = magazine + replace_ammo(user,magazine) + user.visible_message(SPAN_NOTICE("[user] loads [magazine] into [src]!"), + SPAN_NOTICE("You load [magazine] into [src]!"), null, 3, CHAT_TYPE_COMBAT_ACTION) + if(reload_sound) + playsound(user, reload_sound, 25, 1, 5) + +/obj/item/weapon/gun/rifle/xm51/cock_gun(mob/user) + return + +/obj/item/weapon/gun/rifle/xm51/cock(mob/user) //Stops the "You cock the gun." message where nothing happens. + return diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index c3b4906c1b29..5acad2255356 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -274,7 +274,7 @@ can cause issues with ammo types getting mixed up during the burst. update_attachable(ugl.slot) stock.hidden = FALSE stock.Attach(src) - update_attachable(stock.slot) + update_attachable(stock.slot) /obj/item/weapon/gun/shotgun/combat/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 14, "under_y" = 16, "stock_x" = 11, "stock_y" = 13.) @@ -1019,7 +1019,7 @@ can cause issues with ammo types getting mixed up during the burst. if(!T) //Off edge of map. throw_turfs.Remove(T) continue - var/list/turf/path = getline2(get_step_towards(src, T), T) //Same path throw code will calculate from. + var/list/turf/path = get_line(get_step_towards(src, T), T) //Same path throw code will calculate from. if(!path.len) throw_turfs.Remove(T) continue diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index 8ac629310132..9c1e2bbbd7ca 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -497,7 +497,7 @@ if((angledegree*2) > angle_list[angle]) continue - path = getline2(user, M) + path = get_line(user, M) if(path.len) var/blocked = FALSE diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm index 24eddf31597d..69fd5d968750 100644 --- a/code/modules/projectiles/guns/smgs.dm +++ b/code/modules/projectiles/guns/smgs.dm @@ -11,7 +11,7 @@ aim_slowdown = SLOWDOWN_ADS_QUICK wield_delay = WIELD_DELAY_VERY_FAST attachable_allowed = list( - /obj/item/attachable/suppressor, + /obj/item/attachable/suppressor, /obj/item/attachable/reddot, /obj/item/attachable/reflex, /obj/item/attachable/flashlight, @@ -50,7 +50,7 @@ /obj/item/attachable/suppressor, /obj/item/attachable/reddot, /obj/item/attachable/reflex, - /obj/item/attachable/angledgrip, + /obj/item/attachable/angledgrip, /obj/item/attachable/verticalgrip, /obj/item/attachable/flashlight/grip, /obj/item/attachable/stock/smg, @@ -84,7 +84,7 @@ accuracy_mult = BASE_ACCURACY_MULT accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_4 - burst_scatter_mult = SCATTER_AMOUNT_TIER_4 + burst_scatter_mult = SCATTER_AMOUNT_TIER_7 scatter_unwielded = SCATTER_AMOUNT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 @@ -302,7 +302,7 @@ /obj/item/weapon/gun/smg/ppsh/unique_action(mob/user) if(jammed) if(prob(PPSH_UNJAM_CHANCE)) - to_chat(user, SPAN_GREEN("You succesfully unjam \the [src]!")) + to_chat(user, SPAN_GREEN("You successfully unjam \the [src]!")) playsound(src, 'sound/weapons/handling/gun_jam_rack_success.ogg', 50, FALSE) jammed = FALSE cock_cooldown += 1 SECONDS //so they dont accidentally cock a bullet away @@ -538,7 +538,7 @@ /obj/item/weapon/gun/smg/uzi/unique_action(mob/user) if(jammed) if(prob(UZI_UNJAM_CHANCE)) - to_chat(user, SPAN_GREEN("You succesfully unjam \the [src]!")) + to_chat(user, SPAN_GREEN("You successfully unjam \the [src]!")) playsound(src, 'sound/weapons/handling/gun_jam_rack_success.ogg', 35, TRUE) jammed = FALSE cock_cooldown += 1 SECONDS //so they dont accidentally cock a bullet away @@ -609,7 +609,7 @@ /obj/item/weapon/gun/smg/fp9000/pmc name = "\improper FN FP9000/2 Submachinegun" - desc = "Despite the rather ancient design, the FN FP9K sees frequent use in PMC teams due to its extreme reliability and versatility, allowing it to excel in any situation, especially due to the fact that they use the patented, official version of the gun, which has recieved several upgrades and tuning to its design over time." + desc = "Despite the rather ancient design, the FN FP9K sees frequent use in PMC teams due to its extreme reliability and versatility, allowing it to excel in any situation, especially due to the fact that they use the patented, official version of the gun, which has received several upgrades and tuning to its design over time." icon_state = "fp9000_pmc" item_state = "fp9000_pmc" random_spawn_chance = 100 diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index 673de1a59602..bdb0ba02f3ab 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -198,7 +198,7 @@ return TRUE /datum/action/item_action/specialist/aimed_shot/proc/check_shot_is_blocked(mob/firer, mob/target, obj/projectile/P) - var/list/turf/path = getline2(firer, target, include_from_atom = FALSE) + var/list/turf/path = get_line(firer, target, include_start_atom = FALSE) if(!path.len || get_dist(firer, target) > P.ammo.max_range) return TRUE diff --git a/code/modules/projectiles/magazines/flamer.dm b/code/modules/projectiles/magazines/flamer.dm index 787a0585640a..7fba325177c6 100644 --- a/code/modules/projectiles/magazines/flamer.dm +++ b/code/modules/projectiles/magazines/flamer.dm @@ -94,7 +94,7 @@ to_chat(user, SPAN_WARNING("This chemical is not potent enough to be used in a flamethrower!")) return - var/fuel_amt_to_remove = Clamp(to_add.volume, 0, max_rounds - reagents.get_reagent_amount(to_add.id)) + var/fuel_amt_to_remove = clamp(to_add.volume, 0, max_rounds - reagents.get_reagent_amount(to_add.id)) if(!fuel_amt_to_remove) if(!max_rounds) to_chat(user, SPAN_WARNING("[target] is empty!")) @@ -171,7 +171,7 @@ if(usr.get_active_hand() != src) return - var/set_pressure = Clamp(tgui_input_number(usr, "Change fuel pressure to: (max: [max_pressure])", "Fuel pressure", fuel_pressure, 10, 1), 1 ,max_pressure) + var/set_pressure = clamp(tgui_input_number(usr, "Change fuel pressure to: (max: [max_pressure])", "Fuel pressure", fuel_pressure, 10, 1), 1 ,max_pressure) if(!set_pressure) to_chat(usr, SPAN_WARNING("You can't find that setting on the regulator!")) else diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index 3d1b7088fa83..bfc411a2ea63 100644 --- a/code/modules/projectiles/magazines/rifles.dm +++ b/code/modules/projectiles/magazines/rifles.dm @@ -499,3 +499,17 @@ item_state = "aug_dmr" default_ammo = /datum/ammo/bullet/rifle/heap ammo_band_color = AMMO_BAND_COLOR_HEAP + +//-------------------------------------------------------- +//XM51 BREACHING SHOTGUN + +/obj/item/ammo_magazine/rifle/xm51 + name = "\improper XM51 magazine (16g)" + desc = "A 16 gauge pump-action shotgun magazine." + icon_state = "xm51" + caliber = "16g" + w_class = SIZE_MEDIUM + default_ammo = /datum/ammo/bullet/shotgun/light/breaching + max_rounds = 12 + gun_type = /obj/item/weapon/gun/rifle/xm51 + transfer_handful_amount = 6 diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm index 6c103aaa9677..61070690e9ac 100644 --- a/code/modules/projectiles/magazines/shotguns.dm +++ b/code/modules/projectiles/magazines/shotguns.dm @@ -86,6 +86,18 @@ GLOBAL_LIST_INIT(shotgun_boxes_12g, list( default_ammo = /datum/ammo/bullet/shotgun/beanbag handful_state = "beanbag_slug" caliber = "20g" + +/obj/item/ammo_magazine/shotgun/light/breaching + name = "box of breaching shells" + desc = "A box filled with breaching shotgun shells. 16 Gauge." + icon_state = "breaching" + item_state = "breaching" + max_rounds = 30 //6 handfuls of 6 shells, 12 rounds in a XM51 mag + transfer_handful_amount = 6 + default_ammo = /datum/ammo/bullet/shotgun/light/breaching + handful_state = "breaching_shell" + caliber = "16g" + //------------------------------------------------------- /* @@ -238,7 +250,6 @@ GLOBAL_LIST_INIT(shotgun_handfuls_12g, list( name = "handful of beanbag slugs (20g)" caliber = "20g" - /obj/item/ammo_magazine/handful/shotgun/heavy name = "handful of heavy shotgun slugs (8g)" icon_state = "heavy_slug_4" @@ -277,6 +288,17 @@ GLOBAL_LIST_INIT(shotgun_handfuls_12g, list( handful_state = "heavy_beanbag" default_ammo = /datum/ammo/bullet/shotgun/heavy/beanbag +/obj/item/ammo_magazine/handful/shotgun/light/breaching + name = "handful of breaching shells (16g)" + icon_state = "breaching_shell_6" + handful_state = "breaching_shell" + max_rounds = 6 //XM51 magazines are 12 rounds total, two handfuls should be enough to reload a mag + current_rounds = 6 + transfer_handful_amount = 6 + default_ammo = /datum/ammo/bullet/shotgun/light/breaching + caliber = "16g" + gun_type = /obj/item/weapon/gun/rifle/xm51 + /obj/item/ammo_magazine/handful/shotgun/twobore name = "handful of shotgun slugs (2 bore)" icon_state = "twobore_3" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index ee9caa61d7a7..3ed10129f4d6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -216,16 +216,16 @@ if(ammo.bonus_projectiles_amount && ammo.bonus_projectiles_type) ammo.fire_bonus_projectiles(src) - path = getline2(starting, target_turf) - p_x += Clamp((rand()-0.5)*scatter*3, -8, 8) - p_y += Clamp((rand()-0.5)*scatter*3, -8, 8) + path = get_line(starting, target_turf) + p_x += clamp((rand()-0.5)*scatter*3, -8, 8) + p_y += clamp((rand()-0.5)*scatter*3, -8, 8) update_angle(starting, target_turf) src.speed = speed // Randomize speed by a small factor to help bullet animations look okay // Otherwise you get a s t r e a m of warping bullets in same positions src.speed *= (1 + (rand()-0.5) * 0.30) // 15.0% variance either way - src.speed = Clamp(src.speed, 0.1, 100) // Safety to avoid loop hazards + src.speed = clamp(src.speed, 0.1, 100) // Safety to avoid loop hazards // Also give it some headstart, flying it now ahead of tick var/delta_time = world.tick_lag * rand() * 0.4 @@ -237,8 +237,8 @@ SSprojectiles.queue_projectile(src) /obj/projectile/proc/update_angle(turf/source_turf, turf/aim_turf) - p_x = Clamp(p_x, -16, 16) - p_y = Clamp(p_y, -16, 16) + p_x = clamp(p_x, -16, 16) + p_y = clamp(p_y, -16, 16) if(process_start_turf != vis_source) vis_travelled = 0 @@ -274,9 +274,6 @@ return FALSE -//#define LERP(a, b, t) (a + (b - a) * CLAMP01(t)) -#define LERP_UNCLAMPED(a, b, t) (a + (b - a) * t) - /// Animates the projectile across the process'ed flight. /obj/projectile/proc/animate_flight(turf/start_turf, start_pixel_x, start_pixel_y, delta_time) //Get pixelspace coordinates of start and end of visual path @@ -301,8 +298,8 @@ var/vis_current = vis_travelled + speed * (time_carry * 0.1) //speed * (time_carry * 0.1) for remainder time movement, visually "catching up" to where it should be var/vis_interpolant = vis_current / vis_length - var/pixel_x_lerped = LERP_UNCLAMPED(pixel_x_source, pixel_x_target, vis_interpolant) - var/pixel_y_lerped = LERP_UNCLAMPED(pixel_y_source, pixel_y_target, vis_interpolant) + var/pixel_x_lerped = LERP(pixel_x_source, pixel_x_target, vis_interpolant) + var/pixel_y_lerped = LERP(pixel_y_source, pixel_y_target, vis_interpolant) //Convert pixelspace to pixel offset relative to current loc @@ -319,7 +316,7 @@ var/dist_current = distance_travelled + speed * (time_carry * 0.1) //speed * (time_carry * 0.1) for remainder time fade-in var/alpha_interpolant = dist_current - 1 //-1 so it transitions from transparent to opaque between dist 1-2 - var/alpha_new = LERP_UNCLAMPED(0, 255, alpha_interpolant) + var/alpha_new = LERP(0, 255, alpha_interpolant) //Animate the visuals from starting position to new position @@ -332,9 +329,6 @@ var/anim_time = delta_time * 0.1 animate(src, pixel_x = pixel_x_rel_new, pixel_y = pixel_y_rel_new, alpha = alpha_new, time = anim_time, flags = ANIMATION_END_NOW) -//#undef LERP -#undef LERP_UNCLAMPED - /// Flies the projectile forward one single turf /obj/projectile/proc/fly() SHOULD_NOT_SLEEP(TRUE) @@ -387,7 +381,7 @@ /obj/projectile/proc/retarget(atom/new_target, keep_angle = FALSE) var/turf/current_turf = get_turf(src) - path = getline2(current_turf, new_target) + path = get_line(current_turf, new_target) path.Cut(1, 2) // remove the turf we're already on var/atom/source = keep_angle ? original : current_turf update_angle(source, new_target) @@ -1208,8 +1202,8 @@ if(P.ammo.sound_bounce) playsound(src, P.ammo.sound_bounce, 50, 1) var/image/I = image('icons/obj/items/weapons/projectiles.dmi', src, P.ammo.ping, 10) - var/offset_x = Clamp(P.pixel_x + pixel_x_offset, -10, 10) - var/offset_y = Clamp(P.pixel_y + pixel_y_offset, -10, 10) + var/offset_x = clamp(P.pixel_x + pixel_x_offset, -10, 10) + var/offset_y = clamp(P.pixel_y + pixel_y_offset, -10, 10) I.pixel_x += round(rand(-4,4) + offset_x, 1) I.pixel_y += round(rand(-4,4) + offset_y, 1) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index dcb949424bdf..924f0f827584 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -226,9 +226,9 @@ if(!my_atom) return if(my_atom.flags_atom & NOREACT) return //Yup, no reactions here. No siree. - var/reaction_occured = 0 + var/reaction_occurred = 0 do - reaction_occured = 0 + reaction_occurred = 0 for(var/datum/reagent/R in reagent_list) // Usually a small list if(R.original_id) //Prevent synthesised chem variants from being mixed for(var/datum/reagent/O in reagent_list) @@ -309,10 +309,10 @@ playsound(get_turf(my_atom), 'sound/effects/bubbles.ogg', 15, 1) C.on_reaction(src, created_volume) - reaction_occured = 1 + reaction_occurred = 1 break - while(reaction_occured) + while(reaction_occurred) if(trigger_volatiles) handle_volatiles() if(exploded) //clear reagents only when everything has reacted @@ -374,7 +374,7 @@ if(total_volume + amount > maximum_volume) amount = maximum_volume - total_volume //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. - var/new_data = list("blood_type" = null, "blood_colour" = "#A10808", "viruses" = null, "resistances" = null, "last_source_mob" = null) + var/new_data = list("blood_type" = null, "blood_color" = "#A10808", "viruses" = null, "resistances" = null, "last_source_mob" = null) if(data) for(var/index in data) new_data[index] = data[index] diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 4e3f3a91449d..b8c3d20df671 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/datum/reagents/holder = null var/reagent_state = SOLID var/data = 0 //Scratchpad for random chemicals to do their own thing TODO: unify this somehow? - var/list/data_properties = list("blood_type" = null, "blood_colour" = "#A10808", "viruses" = null, "resistances" = null) //mostly for viruses... + var/list/data_properties = list("blood_type" = null, "blood_color" = "#A10808", "viruses" = null, "resistances" = null) //mostly for viruses... var/volume = 0 var/nutriment_factor = 0 var/custom_metabolism = REAGENTS_METABOLISM @@ -28,7 +28,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/overdose_dam = 1//Handeled by heart damage var/spray_warning = FALSE //whether spraying that reagent creates an admin message. //var/list/viruses = list() - var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) + var/color = COLOR_BLACK //(does not support alpha channels - yet!) var/datum/weakref/last_source_mob // For explosions var/explosive = FALSE diff --git a/code/modules/reagents/chemistry_machinery/chem_dispenser.dm b/code/modules/reagents/chemistry_machinery/chem_dispenser.dm index 85ed21543127..62b095ababbe 100644 --- a/code/modules/reagents/chemistry_machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry_machinery/chem_dispenser.dm @@ -201,9 +201,6 @@ . = TRUE /obj/structure/machinery/chem_dispenser/attackby(obj/item/reagent_container/attacking_object, mob/user) - if(isrobot(user)) - return - if(istype(attacking_object, /obj/item/reagent_container/glass) || istype(attacking_object, /obj/item/reagent_container/food)) if(accept_beaker_only && istype(attacking_object,/obj/item/reagent_container/food)) to_chat(user, SPAN_NOTICE("This machine only accepts beakers")) diff --git a/code/modules/reagents/chemistry_machinery/chem_master.dm b/code/modules/reagents/chemistry_machinery/chem_master.dm index 1e7e3bb08384..dc5206bb2df5 100644 --- a/code/modules/reagents/chemistry_machinery/chem_master.dm +++ b/code/modules/reagents/chemistry_machinery/chem_master.dm @@ -215,7 +215,7 @@ return if(href_list["createpill_multiple"]) - count = Clamp(tgui_input_number(user, "Select the number of pills to make. (max: [max_pill_count])", "Pills to make", pillamount, max_pill_count, 1), 0, max_pill_count) + count = clamp(tgui_input_number(user, "Select the number of pills to make. (max: [max_pill_count])", "Pills to make", pillamount, max_pill_count, 1), 0, max_pill_count) if(!count) return diff --git a/code/modules/reagents/chemistry_machinery/chem_simulator.dm b/code/modules/reagents/chemistry_machinery/chem_simulator.dm index 8dc34f208549..8a95e3f3b07e 100644 --- a/code/modules/reagents/chemistry_machinery/chem_simulator.dm +++ b/code/modules/reagents/chemistry_machinery/chem_simulator.dm @@ -443,7 +443,7 @@ for(var/datum/chem_property/P in creation_template) creation_cost += max(abs(P.value), 1) * P.level if(P.level > 5) // a penalty is added at each level above 5 (+1 at 6, +2 at 7, +4 at 8, +5 at 9, +7 at 10) - creation_cost += P.level - 6 + n_ceil((P.level - 5) / 2) + creation_cost += P.level - 6 + Ceiling((P.level - 5) / 2) creation_cost += ((new_od_level - 10) / 5) * 3 //3 cost for every 5 units above 10 for(var/rarity in creation_complexity) switch(rarity) diff --git a/code/modules/reagents/chemistry_machinery/chem_storage.dm b/code/modules/reagents/chemistry_machinery/chem_storage.dm index 692daef7864f..3df417741d82 100644 --- a/code/modules/reagents/chemistry_machinery/chem_storage.dm +++ b/code/modules/reagents/chemistry_machinery/chem_storage.dm @@ -57,4 +57,4 @@ if(energy >= max_energy) return energy = min(energy + recharge_rate, max_energy) - use_power(1500) // This thing uses up alot of power (this is still low as shit for creating reagents from thin air) + use_power(1500) // This thing uses up a lot of power (this is still low as shit for creating reagents from thin air) diff --git a/code/modules/reagents/chemistry_properties/prop_neutral.dm b/code/modules/reagents/chemistry_properties/prop_neutral.dm index 3048b12ee296..e1e59b8b886c 100644 --- a/code/modules/reagents/chemistry_properties/prop_neutral.dm +++ b/code/modules/reagents/chemistry_properties/prop_neutral.dm @@ -29,7 +29,7 @@ return list(REAGENT_CANCEL = TRUE) var/effectiveness = 1 if(M.stat != DEAD) - effectiveness = Clamp(max(M.oxyloss / 10, (BLOOD_VOLUME_NORMAL - M.blood_volume) / BLOOD_VOLUME_NORMAL) * 0.1 * level, 0.1, 1) + effectiveness = clamp(max(M.oxyloss / 10, (BLOOD_VOLUME_NORMAL - M.blood_volume) / BLOOD_VOLUME_NORMAL) * 0.1 * level, 0.1, 1) return list(REAGENT_FORCE = TRUE, REAGENT_EFFECT = effectiveness) /datum/chem_property/neutral/excreting diff --git a/code/modules/reagents/chemistry_reactions/other.dm b/code/modules/reagents/chemistry_reactions/other.dm index 6b60ae89059c..f03abec98fba 100644 --- a/code/modules/reagents/chemistry_reactions/other.dm +++ b/code/modules/reagents/chemistry_reactions/other.dm @@ -385,28 +385,11 @@ to_chat(M, SPAN_WARNING("The solution spews out a metallic shiny foam!")) var/datum/effect_system/foam_spread/s = new() + if (created_volume > 300) + created_volume = 300 s.set_up(created_volume, location, holder, 1) s.start() - -/datum/chemical_reaction/ironfoam - name = "Iron Foam" - id = "ironlfoam" - result = null - required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) - var/location = get_turf(holder.my_atom) - - for(var/mob/M as anything in viewers(5, location)) - to_chat(M, SPAN_WARNING("The solution spews out a metallic dull foam!")) - - var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 2) - s.start() - - /datum/chemical_reaction/foaming_agent name = "Foaming Agent" id = "foaming_agent" diff --git a/code/modules/reagents/chemistry_reagents/alcohol.dm b/code/modules/reagents/chemistry_reagents/alcohol.dm index 08beb42fa410..b5db671b626c 100644 --- a/code/modules/reagents/chemistry_reagents/alcohol.dm +++ b/code/modules/reagents/chemistry_reagents/alcohol.dm @@ -234,7 +234,7 @@ name = "Poison Wine" id = "pwine" description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" - color = "#000000" // rgb: 0, 0, 0 SHOCKER + color = COLOR_BLACK properties = list(PROPERTY_ALCOHOLIC = 1, PROPERTY_FUELING = 3, PROPERTY_OXIDIZING = 3, PROPERTY_FLOWING = 2) boozepwr = 1 @@ -559,7 +559,7 @@ name = "Snow White" id = "snowwhite" description = "A cold refreshment" - color = "#FFFFFF" // rgb: 255, 255, 255 + color = COLOR_WHITE properties = list(PROPERTY_ALCOHOLIC = 1.5, PROPERTY_FUELING = 3, PROPERTY_OXIDIZING = 3, PROPERTY_FLOWING = 2) boozepwr = 1.5 diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm index 3a49429d664e..9577f61a3dcd 100644 --- a/code/modules/reagents/chemistry_reagents/drink.dm +++ b/code/modules/reagents/chemistry_reagents/drink.dm @@ -222,7 +222,7 @@ name = "Cherry Souto" id = "souto_cherry" description = "A cherry flavored soda that's canned in Havanna" - color = "#800000" + color = COLOR_MAROON /datum/reagent/drink/souto/lime name = "Lime Souto" @@ -494,7 +494,7 @@ name = "Lemonade" description = "Oh the nostalgia..." id = "lemonade" - color = "#FFFF00" // rgb: 255, 255, 0 + color = COLOR_YELLOW //*****************************************************************************************************/ //***************************************Remove When Safe**********************************************/ diff --git a/code/modules/reagents/chemistry_reagents/food.dm b/code/modules/reagents/chemistry_reagents/food.dm index 0ec3a2250260..2ee2a05bef32 100644 --- a/code/modules/reagents/chemistry_reagents/food.dm +++ b/code/modules/reagents/chemistry_reagents/food.dm @@ -184,7 +184,7 @@ id = "sodiumchloride" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 + color = COLOR_WHITE chemfiresupp = TRUE intensitymod = 0.1 burncolor = "#ffff00" @@ -227,7 +227,7 @@ id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FF00FF" // rgb: 255, 0, 255 + color = COLOR_MAGENTA properties = list(PROPERTY_NUTRITIOUS = 2) flags = REAGENT_NO_GENERATION @@ -288,7 +288,7 @@ description = "The most widely consumed staple food on Earth. Rice is the most important grain with regard to human nutrition and caloric intake." reagent_state = SOLID nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFFFF" // rgb: 0, 0, 0 + color = COLOR_WHITE properties = list(PROPERTY_NUTRITIOUS = 2) /datum/reagent/cherryjelly @@ -304,6 +304,6 @@ name = "Honey" id = "honey" description = "Honey is a natural sweet, viscous food substance composed of mainly fructose and glucose." - color = "#FFFF00" + color = COLOR_YELLOW chemclass = CHEM_CLASS_RARE flags = REAGENT_NO_GENERATION diff --git a/code/modules/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index 45e66c182e6a..ae1a42bd5e6d 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -9,7 +9,7 @@ description = "Blood is classified as a connective tissue and consists of two main components: Plasma, which is a clear extracellular fluid. Formed elements, which are made up of the blood cells and platelets." reagent_state = LIQUID color = "#A10808" - data_properties = new/list("blood_type"=null,"blood_colour"= "#A10808","viruses"=null,"resistances"=null) + data_properties = new/list("blood_type"=null,"blood_color"= "#A10808","viruses"=null,"resistances"=null) chemclass = CHEM_CLASS_RARE @@ -185,7 +185,7 @@ id = "oxygen" description = "Chemical element of atomic number 8. It is an oxidizing agent that forms oxides with most elements and many other compounds. Dioxygen is used in cellular respiration and is nessesary to sustain organic life." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemfiresupp = TRUE properties = list(PROPERTY_OXIDIZING = 2) intensitymod = 0.75 @@ -212,7 +212,7 @@ id = "nitrogen" description = "Chemical element of atomic number 7. Liquid nitrogen is commonly used in cryogenics, with its melting point of 63.15 kelvin. Nitrogen is a component of many explosive compounds and fertilizers." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemclass = CHEM_CLASS_BASIC custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) @@ -223,7 +223,7 @@ id = "hydrogen" description = "Chemical element of atomic number 1. Is the most abundant chemical element in the Universe. Liquid hydrogen was used as one of the first fuel sources for space travel. Very combustible and is used in many chemical reactions." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemfiresupp = TRUE durationmod = -0.5 radiusmod = 0.2 @@ -295,7 +295,7 @@ id = "chlorine" description = "Chemical element of atomic number 17. High concentrations of elemental chlorine is highly reactive and poisonous for all living organisms. Chlorine gas has been used as a chemical warfare agent. Industrially used in the production of disinfectants, medicines, plastics and purification of water." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY overdose = REAGENTS_OVERDOSE overdose_critical = REAGENTS_OVERDOSE_CRITICAL chemclass = CHEM_CLASS_BASIC @@ -306,7 +306,7 @@ id = "fluorine" description = "Chemical element of atomic number 9. It is a very reactive and highly toxic pale yellow gas at standard conditions. Mostly used for medical and dental purposes." reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY overdose = REAGENTS_OVERDOSE overdose_critical = REAGENTS_OVERDOSE_CRITICAL chemclass = CHEM_CLASS_BASIC @@ -317,7 +317,7 @@ id = "sodium" description = "Chemical element of atomic number 11. Pure it is a soft and very reactive metal. Many salt compounds contain sodium, such as sodium chloride and sodium bicarbonate. There are more uses for sodium as a salt than as a metal." reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemclass = CHEM_CLASS_BASIC custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) @@ -343,7 +343,7 @@ id = "lithium" description = "Chemical element of atomic number 3. Is a soft alkali metal commonly used in the production of batteries. Highly reactive and flammable. Used as an antidepressant and for treating bipolar disorder." reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemfiresupp = TRUE intensitymod = 0.15 burncolor = "#ff356f" @@ -358,7 +358,7 @@ id = "sugar" description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste. The most simple form of sugar, glucose, is the only form of nutriment for red blood cells as they have no mitocondria. Sugar can therefore be used to improve blood regeneration as a nutriment, although ineffective." reagent_state = SOLID - color = "#FFFFFF" // rgb: 255, 255, 255 + color = COLOR_WHITE chemclass = CHEM_CLASS_BASIC properties = list(PROPERTY_NUTRITIOUS = 1) flags = REAGENT_TYPE_MEDICAL @@ -368,7 +368,7 @@ id = "glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity, often used in medicines and beverages. Used in the production of plastic, nitroglycerin and other explosives." reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY chemclass = CHEM_CLASS_RARE custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) @@ -585,18 +585,6 @@ custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) flags = REAGENT_NO_GENERATION -/datum/reagent/nanites - name = "Nanomachines" - id = "nanites" - description = "Microscopic construction robots." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - -/datum/reagent/nanites/reaction_mob(mob/M, method=TOUCH, volume) - src = null - if((prob(10) && method==TOUCH) || method==INGEST) - M.contract_disease(new /datum/disease/robotic_transformation(0),1) - /datum/reagent/xenomicrobes name = "Xenomicrobes" id = "xenomicrobes" @@ -720,8 +708,8 @@ id = "napalmgel" description = "Unlike its liquid contemporaries, this gelled variant of napalm is easily extinguished, but shoots far and lingers on the ground in a viscous mess, while reacting with inorganic materials to ignite them." flameshape = FLAMESHAPE_LINE - color = "#00ff00" - burncolor = "#00ff00" + color = COLOR_GREEN + burncolor = COLOR_GREEN burn_sprite = "green" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, @@ -750,8 +738,8 @@ id = "napalmb" description = "A special variant of napalm that's unable to cling well to anything, but disperses over a wide area while burning slowly. The composition reacts with inorganic materials to ignite them, causing severe damage." flameshape = FLAMESHAPE_TRIANGLE - color = "#00ff00" - burncolor = "#00ff00" + color = COLOR_GREEN + burncolor = COLOR_GREEN burn_sprite = "green" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, @@ -764,8 +752,8 @@ name = "Napalm E" id = "napalme" description = "A sticky combustible liquid chemical that penetrates the best fire retardants." - color = "#800080" - burncolor = "#800080" + color = COLOR_PURPLE + burncolor = COLOR_PURPLE burn_sprite = "dynamic" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, @@ -807,7 +795,7 @@ id = "chlorine trifluoride" description = "A highly reactive interhalogen compound capaple of self ignition. A very strong oxidizer and is extremely reactive with most organic and inorganic materials." reagent_state = LIQUID - color = "#00FFFF" + color = COLOR_CYAN custom_metabolism = 100 chemfiresupp = TRUE burncolor = "#ff9300" @@ -874,7 +862,7 @@ id = "nitroglycerin" description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol. Despite being a highly volatile material, it is used for many medical purposes." reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) explosive = TRUE power = 1 diff --git a/code/modules/reagents/chemistry_reagents/toxin.dm b/code/modules/reagents/chemistry_reagents/toxin.dm index 445918ef284d..53ccb53f1748 100644 --- a/code/modules/reagents/chemistry_reagents/toxin.dm +++ b/code/modules/reagents/chemistry_reagents/toxin.dm @@ -205,10 +205,10 @@ id = "potassium_chloride" description = "A bitter tasting salt that can be used as a spice, but can cause cardiac arrest in larger quantities. It has for this reason been used as a component in lethal injections for many years." reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 + color = COLOR_WHITE chemfiresupp = TRUE intensitymod = 0.1 - burncolor = "#800080" + burncolor = COLOR_PURPLE burncolormod = 5 overdose = 30 chemclass = CHEM_CLASS_UNCOMMON @@ -219,7 +219,7 @@ id = "potassium_chlorophoride" description = "A specific chemical based on Potassium Chloride used to stop the heart for surgery. Causes instant cardiac arrest. Not safe to eat!" reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 + color = COLOR_WHITE overdose = 20 chemclass = CHEM_CLASS_UNCOMMON properties = list(PROPERTY_RELAXING = 8, PROPERTY_HYPOXEMIC = 4, PROPERTY_TOXIC = 2) @@ -261,7 +261,7 @@ name = "Formaldehyde" id = "formaldehyde" description = "Formaldehyde is a toxic organic gas that is mostly used in making resins, polymers and explosives. It is known to be a natural carcinogen." - color = "#808080" // rgb: 128, 128, 128 + color = COLOR_GRAY reagent_state = GAS chemclass = CHEM_CLASS_UNCOMMON properties = list(PROPERTY_TOXIC = 1, PROPERTY_CARCINOGENIC = 1) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 4c60a9e345e0..8e1390c778f6 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -101,7 +101,6 @@ // attack with item, place item on conveyor /obj/structure/machinery/conveyor/attackby(obj/item/I, mob/user) - if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts var/obj/item/grab/G = I if(istype(G)) // handle grabbed mob if(ismob(G.grabbed_thing)) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 88efcf7a37ba..c82109156a6c 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -172,8 +172,6 @@ return TRUE return FALSE - if(isrobot(user)) - return if(!I) return @@ -503,10 +501,6 @@ if(istype(AM, /obj/item/smallDelivery) && !hasmob) var/obj/item/smallDelivery/T = AM destinationTag = T.sortTag - //Drones can mail themselves through maint. - if(istype(AM, /mob/living/silicon/robot/drone)) - var/mob/living/silicon/robot/drone/drone = AM - destinationTag = drone.mail_destination //Start the movement process //Argument is the disposal unit the holder started in @@ -658,7 +652,7 @@ /obj/structure/disposalpipe/proc/nextdir(fromdir) return dpdir & (~turn(fromdir, 180)) -//Transfer the holder through this pipe segment, overriden for special behaviour +//Transfer the holder through this pipe segment, overridden for special behaviour /obj/structure/disposalpipe/proc/transfer(obj/structure/disposalholder/H) var/nextdir = nextdir(H.dir) H.setDir(nextdir) @@ -1377,7 +1371,7 @@ //Expel the contents of the holder object, then delete it. Called when the holder exits the outlet /obj/structure/disposaloutlet/proc/expel(obj/structure/disposalholder/H) - flick("outlet-open", src) + flick("[icon_state]-open", src) playsound(src, 'sound/machines/warning-buzzer.ogg', 25, 0) sleep(20) //Wait until correct animation frame playsound(src, 'sound/machines/hiss.ogg', 25, 0) diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index d357a15b36f8..1301a0c0925d 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -168,7 +168,7 @@ override_being_removed = FALSE if(dropship_control_lost) remove_door_lock() - to_chat(user, SPAN_NOTICE("You succesfully removed the lockout!")) + to_chat(user, SPAN_NOTICE("You successfully removed the lockout!")) playsound(loc, 'sound/machines/terminal_success.ogg', KEYBOARD_SOUND_VOLUME, 1) if(!shuttle.is_hijacked) @@ -239,7 +239,7 @@ if(dropship.is_hijacked) return - // door controls being overriden + // door controls being overridden if(!dropship_control_lost) dropship.control_doors("unlock", "all", TRUE) dropship_control_lost = TRUE @@ -467,7 +467,7 @@ if("set-automate") var/almayer_lz = params["hangar_id"] var/ground_lz = params["ground_id"] - var/delay = Clamp(params["delay"] SECONDS, DROPSHIP_MIN_AUTO_DELAY, DROPSHIP_MAX_AUTO_DELAY) + var/delay = clamp(params["delay"] SECONDS, DROPSHIP_MIN_AUTO_DELAY, DROPSHIP_MAX_AUTO_DELAY) // TODO verify if(almayer_lz == ground_lz) diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 5fe3a7989898..7a9f032be444 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -184,11 +184,6 @@ All ShuttleMove procs go here . = ..() if(. & MOVE_AREA) . |= MOVE_CONTENTS - GLOB.cameranet.removeCamera(src) - -/obj/structure/machinery/camera/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - GLOB.cameranet.addCamera(src) /obj/structure/machinery/atmospherics/pipe/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 7fe9d04c91b2..e83666ca2386 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(shuttle_controls) if(..(user)) return - if(!allowed(user) || ismaintdrone(user)) + if(!allowed(user)) to_chat(user, SPAN_WARNING("Access denied.")) return 1 diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index f87caaa54758..399f5f5360c3 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -41,6 +41,24 @@ success_sound = 'sound/handling/bandage.ogg' failure_sound = 'sound/surgery/organ2.ogg' +//Use materials to repair bones, same as /datum/surgery_step/mend_encased +/datum/surgery_step/mend_bones/extra_checks(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, repeating, skipped) + . = ..() + if(istype(tool, /obj/item/tool/surgery/bonegel)) //If bone gel, use some of the gel + var/obj/item/tool/surgery/bonegel/gel = tool + if(!gel.use_gel(gel.fracture_fix_cost)) + to_chat(user, SPAN_BOLDWARNING("[gel] is empty!")) + return FALSE + + else //Otherwise, use metal rods + var/obj/item/stack/rods/rods = user.get_inactive_hand() + if(!istype(rods)) + to_chat(user, SPAN_BOLDWARNING("You need metal rods in your offhand to repair [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + if(!rods.use(2)) //Refunded on failure + to_chat(user, SPAN_BOLDWARNING("You need more metal rods to mend [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + /datum/surgery_step/mend_bones/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, tool_type, datum/surgery/bone_repair/surgery) if(surgery.affected_bone) if(tool_type == /obj/item/tool/surgery/bonegel) @@ -118,6 +136,13 @@ target.apply_damage(10, BRUTE, target_zone) log_interact(user, target, "[key_name(user)] failed to begin repairing bones in [key_name(target)]'s [surgery.affected_limb.display_name] with \the [tool], aborting [surgery].") + + if(tool_type != /obj/item/tool/surgery/bonegel) + to_chat(user, SPAN_NOTICE("The metal rods used on [target]'s [surgery.affected_limb.display_name] fall loose from their [surgery.affected_limb].")) + var/obj/item/stack/rods/rods = new /obj/item/stack/rods(get_turf(target)) + rods.amount = 2 //Refund 2 rods on failure + rods.update_icon() + return FALSE //------------------------------------ diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index ea075080121b..c5d7f37a444c 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -573,6 +573,24 @@ success_sound = 'sound/handling/bandage.ogg' failure_sound = 'sound/surgery/organ2.ogg' +//Use materials to mend bones, same as /datum/surgery_step/mend_bones +/datum/surgery_step/mend_encased/extra_checks(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, repeating, skipped) + . = ..() + if(istype(tool, /obj/item/tool/surgery/bonegel)) //If bone gel, use some of the gel + var/obj/item/tool/surgery/bonegel/gel = tool + if(!gel.use_gel(gel.mend_bones_fix_cost)) + to_chat(user, SPAN_BOLDWARNING("[gel] is empty!")) + return FALSE + + else //Otherwise, use metal rods + var/obj/item/stack/rods/rods = user.get_inactive_hand() + if(!istype(rods)) + to_chat(user, SPAN_BOLDWARNING("You need metal rods in your offhand to mend [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + if(!rods.use(2)) //Refunded on failure + to_chat(user, SPAN_BOLDWARNING("You need more metal rods to mend [target]'s [surgery.affected_limb.display_name] with [tool].")) + return FALSE + /datum/surgery_step/mend_encased/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, tool_type, datum/surgery/surgery) if(tool_type == /obj/item/tool/surgery/bonegel) user.affected_message(target, @@ -626,6 +644,11 @@ target.apply_damage(10, BRUTE, target_zone) log_interact(user, target, "[key_name(user)] failed to mend [key_name(target)]'s [surgery.affected_limb.encased].") + if(tool_type != /obj/item/tool/surgery/bonegel) + to_chat(user, SPAN_NOTICE("The metal rods used on [target]'s [surgery.affected_limb.display_name] fall loose from their [surgery.affected_limb].")) + var/obj/item/stack/rods/rods = new /obj/item/stack/rods(get_turf(target)) + rods.amount = 2 //Refund 2 rods on failure + rods.update_icon() /*Proof of concept. Functions but does nothing useful. If fiddling with, uncomment /mob/living/attackby surgery code also. It's pointless processing to have live without any surgeries for it to use.*/ diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 25d49b3e3bdb..a5c064a8eaf1 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -8,8 +8,12 @@ var/reboot_mode = TGS_REBOOT_MODE_NORMAL + /// List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call var/list/intercepted_message_queue + /// List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call + var/list/offline_message_queue + var/list/custom_commands var/list/test_merges @@ -194,17 +198,7 @@ var/datum/tgs_chat_channel/channel = I ids += channel.id - message2 = UpgradeDeprecatedChatMessage(message2) - - if (!length(channels)) - return - - var/list/data = message2._interop_serialize() - data[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = ids - if(intercepted_message_queue) - intercepted_message_queue += list(data) - else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = data)) + SendChatMessageRaw(message2, ids) /datum/tgs_api/v5/ChatTargetedBroadcast(datum/tgs_message_content/message2, admin_only) var/list/channels = list() @@ -213,26 +207,42 @@ if (!channel.is_private_channel && ((channel.is_admin_channel && admin_only) || (!channel.is_admin_channel && !admin_only))) channels += channel.id + SendChatMessageRaw(message2, channels) + +/datum/tgs_api/v5/ChatPrivateMessage(datum/tgs_message_content/message2, datum/tgs_chat_user/user) + SendChatMessageRaw(message2, list(user.channel.id)) + +/datum/tgs_api/v5/proc/SendChatMessageRaw(datum/tgs_message_content/message2, list/channel_ids) message2 = UpgradeDeprecatedChatMessage(message2) - if (!length(channels)) + if (!length(channel_ids)) return var/list/data = message2._interop_serialize() - data[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = channels + data[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = channel_ids if(intercepted_message_queue) intercepted_message_queue += list(data) - else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = data)) + return -/datum/tgs_api/v5/ChatPrivateMessage(datum/tgs_message_content/message2, datum/tgs_chat_user/user) - message2 = UpgradeDeprecatedChatMessage(message2) - var/list/data = message2._interop_serialize() - data[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = list(user.channel.id) - if(intercepted_message_queue) - intercepted_message_queue += list(data) + if(offline_message_queue) + offline_message_queue += list(data) + return + + if(detached) + offline_message_queue = list(data) + + WaitForReattach(FALSE) + + data = offline_message_queue + offline_message_queue = null + + for(var/queued_message in data) + SendChatDataRaw(queued_message) else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = data)) + SendChatDataRaw(data) + +/datum/tgs_api/v5/proc/SendChatDataRaw(list/data) + Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = data)) /datum/tgs_api/v5/ChatChannelInfo() RequireInitialBridgeResponse() diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm index e43c5c2375a1..0ec570ca9244 100644 --- a/code/modules/tgui/states.dm +++ b/code/modules/tgui/states.dm @@ -64,10 +64,10 @@ //if(!client && !HAS_TRAIT(src, TRAIT_PRESERVE_UI_WITHOUT_CLIENT)) if(!client) return UI_CLOSE - // Disable UIs if unconcious. + // Disable UIs if unconscious. else if(stat) return UI_DISABLED - // Update UIs if incapicitated but concious. + // Update UIs if incapicitated but conscious. else if(is_mob_incapacitated()) return UI_UPDATE return UI_INTERACTIVE @@ -80,13 +80,6 @@ return UI_UPDATE */ -/mob/living/silicon/robot/shared_ui_interaction(src_object) - // Disable UIs if the object isn't installed in the borg AND the borg is either locked, has a dead cell, or no cell. - var/atom/device = src_object - if((istype(device) && device.loc != src) && (!cell || cell.charge <= 0 || lockcharge)) - return UI_DISABLED - return ..() - /** * public * diff --git a/code/modules/tgui/states/default.dm b/code/modules/tgui/states/default.dm index fa0a90f613f4..2ad35ef92143 100644 --- a/code/modules/tgui/states/default.dm +++ b/code/modules/tgui/states/default.dm @@ -25,12 +25,3 @@ GLOBAL_DATUM_INIT(default_state, /datum/ui_state/default, new) //if(. == UI_INTERACTIVE && !src.IsAdvancedToolUser())) // unhandy living mobs can only look, not touch. // return UI_UPDATE -/mob/living/silicon/ai/default_can_use_topic(src_object) - . = shared_ui_interaction(src_object) - if(. < UI_INTERACTIVE) - return - - // The AI can interact with anything it can see nearby, or with cameras while wireless control is enabled. - if(!control_disabled && can_see(src_object)) - return UI_INTERACTIVE - return UI_CLOSE diff --git a/code/modules/tgui/tgui_number_input.dm b/code/modules/tgui/tgui_number_input.dm index aa189b1d2039..4c06b5333b6d 100644 --- a/code/modules/tgui/tgui_number_input.dm +++ b/code/modules/tgui/tgui_number_input.dm @@ -158,11 +158,13 @@ return switch(action) if("submit") - if(!isnum(params["entry"])) - CRASH("A non number was input into tgui input number by [usr]") var/choice = params["entry"] + if(!isnum(choice)) + CRASH("A non number was input into tgui input number by [usr]") + if(choice != choice) //isnan + CRASH("A NaN was input into tgui input number by [usr]") if(integer_only) - choice = round(params["entry"]) + choice = round(choice) if(choice > max_value) CRASH("A number greater than the max value was input into tgui input number by [usr]") if(choice < min_value) diff --git a/code/modules/tgui_input/text.dm b/code/modules/tgui_input/text.dm index 2a9b7f6dfff4..f60691860d79 100644 --- a/code/modules/tgui_input/text.dm +++ b/code/modules/tgui_input/text.dm @@ -14,8 +14,9 @@ * * multiline - Bool that determines if the input box is much larger. Good for large messages, laws, etc. * * encode - Toggling this determines if input is filtered via html_encode. Setting this to FALSE gives raw input. * * timeout - The timeout of the textbox, after which the modal will close and qdel itself. Set to zero for no timeout. + * * trim - Whether or not to trim leading and trailing whitespace from your input. Defaults to TRUE */ -/proc/tgui_input_text(mob/user, message = "", title = "Text Input", default, max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = TRUE, timeout = 0) +/proc/tgui_input_text(mob/user, message = "", title = "Text Input", default, max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = TRUE, timeout = 0, trim = TRUE) if (!user) user = usr if (!istype(user)) @@ -39,7 +40,7 @@ return input(user, message, title, default) as text|null */ - var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, timeout) + var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, timeout, trim) text_input.tgui_interact(user) text_input.wait() if (text_input) @@ -73,14 +74,17 @@ var/timeout /// The title of the TGUI window var/title + /// Whether to trim leading and trailing spaces + var/trim -/datum/tgui_input_text/New(mob/user, message, title, default, max_length, multiline, encode, timeout) +/datum/tgui_input_text/New(mob/user, message, title, default, max_length, multiline, encode, timeout, trim) src.default = default src.encode = encode src.max_length = max_length src.message = message src.multiline = multiline src.title = title + src.trim = trim if (timeout) src.timeout = timeout start_time = world.time @@ -141,7 +145,7 @@ CRASH("[usr] typed a text string longer than the max length") if(encode && (length(html_encode(params["entry"])) > max_length)) to_chat(usr, SPAN_NOTICE("Your message was clipped due to special character usage.")) - set_entry(params["entry"]) + set_entry(params["entry"], trim) closed = TRUE SStgui.close_uis(src) return TRUE @@ -156,7 +160,10 @@ * This can sometimes result in a string that is longer than the max length. * If the string is longer than the max length, it will be clipped. */ -/datum/tgui_input_text/proc/set_entry(entry) +/datum/tgui_input_text/proc/set_entry(entry, trim) if(!isnull(entry)) var/converted_entry = encode ? html_encode(entry) : entry - src.entry = trim(converted_entry, max_length) + if(trim) + src.entry = trim(converted_entry) + else + src.entry = converted_entry diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 9ed3183e5b3d..90040ec9acf9 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -41,7 +41,7 @@ /// Intended to be used in the manner of `TEST_FOCUS(/datum/unit_test/math)` #define TEST_FOCUS(test_path) ##test_path { focus = TRUE; } -/// Logs a noticable message on GitHub, but will not mark as an error. +/// Logs a noticeable message on GitHub, but will not mark as an error. /// Use this when something shouldn't happen and is of note, but shouldn't block CI. /// Does not mark the test as failed. #define TEST_NOTICE(source, message) source.log_for_test((##message), "notice", __FILE__, __LINE__) diff --git a/code/modules/vehicles/apc/interior.dm b/code/modules/vehicles/apc/interior.dm index d3947db2b8c8..86b33a89c885 100644 --- a/code/modules/vehicles/apc/interior.dm +++ b/code/modules/vehicles/apc/interior.dm @@ -61,7 +61,7 @@ if(!SG_seat) SG_seat = locate() in get_turf(src) if(!SG_seat) - . += SPAN_WARNING("ERROR HAS OCCURED! NO SEAT FOUND, TELL A DEV!") + . += SPAN_WARNING("ERROR HAS OCCURRED! NO SEAT FOUND, TELL A DEV!") return for(var/obj/item/hardpoint/special/firing_port_weapon/FPW in SG_seat.vehicle.hardpoints) if(FPW.allowed_seat == SG_seat.seat) @@ -76,7 +76,7 @@ if(!SG_seat) SG_seat = locate() in get_turf(src) if(!SG_seat) - to_chat(H, SPAN_WARNING("ERROR HAS OCCURED! NO SEAT FOUND, TELL A DEV!")) + to_chat(H, SPAN_WARNING("ERROR HAS OCCURRED! NO SEAT FOUND, TELL A DEV!")) return if(!SG_seat.buckled_mob && !H.buckled) SG_seat.do_buckle(H, H) diff --git a/code/modules/vehicles/hardpoints/primary/minigun.dm b/code/modules/vehicles/hardpoints/primary/minigun.dm index 3acf37eec268..03d1e7be0077 100644 --- a/code/modules/vehicles/hardpoints/primary/minigun.dm +++ b/code/modules/vehicles/hardpoints/primary/minigun.dm @@ -75,7 +75,7 @@ spin_stage -= delta_stage / spindown_time else return - spin_stage = Clamp(spin_stage, 1, stage_rate_len) + spin_stage = clamp(spin_stage, 1, stage_rate_len) var/old_stage_rate = stage_rate[Floor(old_spin_stage)] var/new_stage_rate = stage_rate[Floor(spin_stage)] diff --git a/code/modules/vehicles/interior/areas.dm b/code/modules/vehicles/interior/areas.dm index 605b32079fcc..254bcb6b26ea 100644 --- a/code/modules/vehicles/interior/areas.dm +++ b/code/modules/vehicles/interior/areas.dm @@ -1,29 +1,33 @@ -/area/vehicle +/area/interior ceiling = CEILING_METAL requires_power = 0 unlimited_power = 1 icon = 'icons/turf/areas_interiors.dmi' + icon_state = "interior" base_lighting_alpha = 255 ambience_exterior = 'sound/ambience/vehicle_interior1.ogg' sound_environment = SOUND_ENVIRONMENT_ROOM -/area/vehicle/tank +/area/interior/vehicle/tank name = "tank interior" icon_state = "tank" -/area/vehicle/apc +/area/interior/vehicle/apc name = "\improper APC interior" icon_state = "apc" -/area/vehicle/apc/med +/area/interior/vehicle/apc/med name = "\improper MED APC interior" icon_state = "apc_med" -/area/vehicle/apc/command +/area/interior/vehicle/apc/command name = "\improper CMD APC interior" icon_state = "apc_cmd" -/area/vehicle/van +/area/interior/vehicle/van name = "van interior" icon_state = "van" + +/area/interior/fancylocker + name = "closet interior" diff --git a/code/modules/vehicles/interior/objects/fancy_locker.dm b/code/modules/vehicles/interior/objects/fancy_locker.dm index f1068812a793..2cc7a02e548b 100644 --- a/code/modules/vehicles/interior/objects/fancy_locker.dm +++ b/code/modules/vehicles/interior/objects/fancy_locker.dm @@ -2,6 +2,13 @@ name = "fancy closet" desc = "It's a fancy storage unit." + icon_state = "cabinet_closed" + icon_closed = "cabinet_closed" + icon_opened = "cabinet_open" + + unacidable = TRUE + + var/interior_map = /datum/map_template/interior/fancy_locker var/datum/interior/interior = null var/entrance_speed = 1 SECONDS var/passengers_slots = 2 @@ -19,20 +26,52 @@ INVOKE_ASYNC(src, PROC_REF(do_create_interior)) /obj/structure/closet/fancy/proc/do_create_interior() - interior.create_interior("fancylocker") + interior.create_interior(interior_map) /obj/structure/closet/fancy/Destroy() QDEL_NULL(interior) return ..() +/obj/structure/closet/fancy/can_close() + for(var/obj/structure/closet/closet in get_turf(src)) + if(closet != src && !closet.wall_mounted) + return FALSE + return TRUE + /obj/structure/closet/fancy/store_mobs(stored_units) for(var/mob/M in loc) - var/succ = interior.enter(M, "default") + var/succ = interior.enter(M, "fancy") if(!succ) break +/obj/structure/closet/fancy/ex_act(severity) + return + /obj/structure/interior_exit/fancy name = "fancy wooden door" icon = 'icons/obj/structures/doors/mineral_doors.dmi' icon_state = "wood" density = TRUE + +/obj/structure/interior_exit/fancy/attackby(obj/item/O, mob/M) + attack_hand(M) + +/obj/structure/interior_exit/fancy/attack_hand(mob/escapee) + var/obj/structure/closet/fancy/closet = find_closet() + if(istype(closet) && !closet.can_open()) + to_chat(escapee, SPAN_WARNING("Something is blocking the exit!")) + return + ..() + +/obj/structure/interior_exit/fancy/attack_alien(mob/living/carbon/xenomorph/escapee, dam_bonus) + var/obj/structure/closet/fancy/closet = find_closet() + if(istype(closet) && !closet.can_open()) + to_chat(escapee, SPAN_XENOWARNING("Something is blocking the exit!")) + return + ..() + +/obj/structure/interior_exit/fancy/proc/find_closet() + var/obj/structure/closet/fancy/possible_closet = interior.exterior + if(istype(possible_closet)) + return possible_closet + return diff --git a/code/modules/vehicles/multitile/multitile_bump.dm b/code/modules/vehicles/multitile/multitile_bump.dm index 48706805948f..79789af054fa 100644 --- a/code/modules/vehicles/multitile/multitile_bump.dm +++ b/code/modules/vehicles/multitile/multitile_bump.dm @@ -341,10 +341,24 @@ return TRUE /obj/structure/machinery/m56d_post/handle_vehicle_bump(obj/vehicle/multitile/V) - new /obj/item/device/m56d_post(loc) playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] drives over \the [src]!")) - qdel(src) + + if(gun_mounted) + var/obj/item/device/m56d_gun/HMG = new(loc) + transfer_label_component(HMG) + HMG.rounds = gun_rounds + HMG.has_mount = TRUE + if(gun_health) + HMG.health = gun_health + HMG.update_icon() + qdel(src) + else + var/obj/item/device/m56d_post/post = new(loc) + post.health = health + transfer_label_component(post) + qdel(src) + return TRUE /obj/structure/machinery/m56d_hmg/handle_vehicle_bump(obj/vehicle/multitile/V) @@ -352,7 +366,9 @@ HMG.name = name HMG.rounds = rounds HMG.has_mount = TRUE + HMG.health = health HMG.update_icon() + transfer_label_component(HMG) playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] drives over \the [src]!")) qdel(src) diff --git a/code/modules/vehicles/multitile/multitile_interaction.dm b/code/modules/vehicles/multitile/multitile_interaction.dm index a93872e4e9ac..552d9cea4561 100644 --- a/code/modules/vehicles/multitile/multitile_interaction.dm +++ b/code/modules/vehicles/multitile/multitile_interaction.dm @@ -507,7 +507,7 @@ var/success = interior.enter(dragged_atom, entrance_used) if(success) - to_chat(user, SPAN_NOTICE("You succesfully fit [dragged_atom] inside \the [src].")) + to_chat(user, SPAN_NOTICE("You successfully fit [dragged_atom] inside \the [src].")) else to_chat(user, SPAN_WARNING("You fail to fit [dragged_atom] inside \the [src]! It's either too big or vehicle is out of space!")) return diff --git a/code/modules/vehicles/souto_mobile.dm b/code/modules/vehicles/souto_mobile.dm new file mode 100644 index 000000000000..fa559983d0a4 --- /dev/null +++ b/code/modules/vehicles/souto_mobile.dm @@ -0,0 +1,43 @@ +/obj/vehicle/souto + name = "\improper Soutomobile" + icon_state = "soutomobile" + desc = "Almost, but not quite, the best ride in the universe." + move_delay = 3 //The speed of a fed but shoeless pajamarine, or a bit slower than a heavy-armor marine. + buckling_y = 4 + layer = ABOVE_LYING_MOB_LAYER //Allows it to drive over people, but is below the driver. + +/obj/vehicle/souto/Initialize() + . = ..() + var/image/I = new(icon = 'icons/obj/vehicles/vehicles.dmi', icon_state = "soutomobile_overlay", layer = ABOVE_MOB_LAYER) //over mobs + overlays += I + +/obj/vehicle/souto/manual_unbuckle(mob/user) + if(buckled_mob && buckled_mob != user) + if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + ..() + else ..() + +/obj/vehicle/souto/relaymove(mob/user, direction) + if(user.is_mob_incapacitated()) return + if(world.time > l_move_time + move_delay) + . = step(src, direction) + +/obj/vehicle/souto/super + desc = "The best ride in the universe, for the one-and-only Souto Man!" + health = 1000 + locked = FALSE + unacidable = TRUE + indestructible = TRUE + +/obj/vehicle/souto/super/explode() + for(var/mob/M as anything in viewers(7, src)) + M.show_message("Somehow, [src] still looks as bright and shiny as a new can of Souto Classic.", SHOW_MESSAGE_VISIBLE) + health = initial(health) //Souto Man never dies, and neither does his bike. + +/obj/vehicle/souto/super/buckle_mob(mob/M, mob/user) + if(!locked) //Vehicle is unlocked until first being mounted, since the Soutomobile is faction-locked and otherwise Souto Man cannot automatically buckle in on spawn as his equipment is spawned before his ID. + locked = TRUE + else if(M == user && M.faction != FACTION_SOUTO && locked == TRUE) //Are you a cool enough dude to drive this bike? Nah, nobody's THAT cool. + to_chat(user, SPAN_WARNING("Somehow, as you take hold of the handlebars, [src] manages to glare at you. You back off. We didn't sign up for haunted motorbikes, man.")) + return + ..() diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 2239329d3e44..014452426a3c 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -18,15 +18,19 @@ var/maxhealth = 100 var/fire_dam_coeff = 1 var/brute_dam_coeff = 1 - var/open = 0 //Maint panel + ///Maint panel + var/open = 0 var/locked = TRUE var/stat = 0 - var/powered = 0 //set if vehicle is powered and should use fuel when moving - var/move_delay = 1 //set this to limit the speed of the vehicle + ///set if vehicle is powered and should use fuel when moving + var/powered = 0 + ///set this to limit the speed of the vehicle + var/move_delay = 1 var/buckling_y = 0 var/obj/item/cell/cell - var/charge_use = 5 //set this to adjust the amount of power the vehicle uses per move + ///set this to adjust the amount of power the vehicle uses per move + var/charge_use = 5 can_block_movement = TRUE //------------------------------------------- @@ -267,48 +271,3 @@ //------------------------------------------------------- /obj/vehicle/proc/update_stats() return - -/obj/vehicle/souto - name = "\improper Soutomobile" - icon_state = "soutomobile" - desc = "Almost, but not quite, the best ride in the universe." - move_delay = 3 //The speed of a fed but shoeless pajamarine, or a bit slower than a heavy-armor marine. - buckling_y = 4 - layer = ABOVE_LYING_MOB_LAYER //Allows it to drive over people, but is below the driver. - -/obj/vehicle/souto/Initialize() - . = ..() - var/image/I = new(icon = 'icons/obj/vehicles/vehicles.dmi', icon_state = "soutomobile_overlay", layer = ABOVE_MOB_LAYER) //over mobs - overlays += I - -/obj/vehicle/souto/manual_unbuckle(mob/user) - if(buckled_mob && buckled_mob != user) - if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - ..() - else ..() - -/obj/vehicle/souto/relaymove(mob/user, direction) - if(user.is_mob_incapacitated()) return - if(world.time > l_move_time + move_delay) - . = step(src, direction) - - -/obj/vehicle/souto/super - desc = "The best ride in the universe, for the one-and-only Souto Man!" - health = 1000 - locked = FALSE - unacidable = TRUE - indestructible = TRUE - -/obj/vehicle/souto/super/explode() - for(var/mob/M as anything in viewers(7, src)) - M.show_message("Somehow, [src] still looks as bright and shiny as a new can of Souto Classic.", SHOW_MESSAGE_VISIBLE) - health = initial(health) //Souto Man never dies, and neither does his bike. - -/obj/vehicle/souto/super/buckle_mob(mob/M, mob/user) - if(!locked) //Vehicle is unlocked until first being mounted, since the Soutomobile is faction-locked and otherwise Souto Man cannot automatically buckle in on spawn as his equipment is spawned before his ID. - locked = TRUE - else if(M == user && M.faction != FACTION_SOUTO && locked == TRUE) //Are you a cool enough dude to drive this bike? Nah, nobody's THAT cool. - to_chat(user, SPAN_WARNING("Somehow, as you take hold of the handlebars, [src] manages to glare at you. You back off. We didn't sign up for haunted motorbikes, man.")) - return - ..() diff --git a/colonialmarines.dme b/colonialmarines.dme index ec330db86a4d..0b39e89042d2 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -135,6 +135,7 @@ #include "code\__DEFINES\dcs\signals\atom\signals_obj.dm" #include "code\__DEFINES\dcs\signals\atom\signals_projectile.dm" #include "code\__DEFINES\dcs\signals\atom\signals_turf.dm" +#include "code\__DEFINES\dcs\signals\atom\mob\signals_mind.dm" #include "code\__DEFINES\dcs\signals\atom\mob\signals_mob.dm" #include "code\__DEFINES\dcs\signals\atom\mob\living\signals_human.dm" #include "code\__DEFINES\dcs\signals\atom\mob\living\signals_living.dm" @@ -143,8 +144,11 @@ #include "code\__DEFINES\paygrade_defs\cmb.dm" #include "code\__DEFINES\paygrade_defs\dutch.dm" #include "code\__DEFINES\paygrade_defs\marines.dm" +#include "code\__DEFINES\paygrade_defs\mercs.dm" #include "code\__DEFINES\paygrade_defs\navy.dm" +#include "code\__DEFINES\paygrade_defs\paygrade.dm" #include "code\__DEFINES\paygrade_defs\provost.dm" +#include "code\__DEFINES\paygrade_defs\twe.dm" #include "code\__DEFINES\paygrade_defs\upp.dm" #include "code\__DEFINES\paygrade_defs\weyland.dm" #include "code\__DEFINES\typecheck\assemblers.dm" @@ -205,7 +209,6 @@ #include "code\_onclick\ai.dm" #include "code\_onclick\click.dm" #include "code\_onclick\click_hold.dm" -#include "code\_onclick\cyborg.dm" #include "code\_onclick\double_click.dm" #include "code\_onclick\drag_drop.dm" #include "code\_onclick\human.dm" @@ -224,7 +227,6 @@ #include "code\_onclick\hud\other_mobs.dm" #include "code\_onclick\hud\radial.dm" #include "code\_onclick\hud\radial_persistent.dm" -#include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_object_holder.dm" #include "code\_onclick\hud\screen_objects.dm" #include "code\_onclick\hud\yautja.dm" @@ -430,7 +432,6 @@ #include "code\datums\diseases\pierrot_throat.dm" #include "code\datums\diseases\plasmatoid.dm" #include "code\datums\diseases\rhumba_beat.dm" -#include "code\datums\diseases\robotic_transformation.dm" #include "code\datums\diseases\xeno_transformation.dm" #include "code\datums\diseases\advance\advance.dm" #include "code\datums\diseases\advance\presets.dm" @@ -675,6 +676,8 @@ #include "code\datums\tutorial\ss13\_ss13.dm" #include "code\datums\tutorial\ss13\basic_ss13.dm" #include "code\datums\tutorial\ss13\intents.dm" +#include "code\datums\tutorial\xenomorph\_xenomorph.dm" +#include "code\datums\tutorial\xenomorph\xenomorph_basic.dm" #include "code\datums\weather\weather_event.dm" #include "code\datums\weather\weather_map_holder.dm" #include "code\datums\weather\weather_events\big_red.dm" @@ -880,10 +883,7 @@ #include "code\game\machinery\camera\camera.dm" #include "code\game\machinery\camera\motion.dm" #include "code\game\machinery\camera\presets.dm" -#include "code\game\machinery\camera\tracking.dm" #include "code\game\machinery\camera\wires.dm" -#include "code\game\machinery\computer\ai_core.dm" -#include "code\game\machinery\computer\aifixer.dm" #include "code\game\machinery\computer\almayer_control.dm" #include "code\game\machinery\computer\arcade.dm" #include "code\game\machinery\computer\area_air_control.dm" @@ -906,6 +906,7 @@ #include "code\game\machinery\computer\prisoner.dm" #include "code\game\machinery\computer\research.dm" #include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\robots_props.dm" #include "code\game\machinery\computer\security.dm" #include "code\game\machinery\computer\sentencing.dm" #include "code\game\machinery\computer\skills.dm" @@ -937,6 +938,7 @@ #include "code\game\machinery\kitchen\smartfridge.dm" #include "code\game\machinery\medical_pod\autodoc.dm" #include "code\game\machinery\medical_pod\bodyscanner.dm" +#include "code\game\machinery\medical_pod\bone_gel_refill.dm" #include "code\game\machinery\medical_pod\medical_pod.dm" #include "code\game\machinery\medical_pod\sleeper.dm" #include "code\game\machinery\pipe\construction.dm" @@ -1083,7 +1085,6 @@ #include "code\game\objects\items\devices\aicard.dm" #include "code\game\objects\items\devices\autopsy_scanner.dm" #include "code\game\objects\items\devices\binoculars.dm" -#include "code\game\objects\items\devices\camera_bug.dm" #include "code\game\objects\items\devices\cictablet.dm" #include "code\game\objects\items\devices\cloaking.dm" #include "code\game\objects\items\devices\clue_scanner.dm" @@ -1150,11 +1151,11 @@ #include "code\game\objects\items\implants\implantneurostim.dm" #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\props\helmetgarb.dm" +#include "code\game\objects\items\props\robots.dm" #include "code\game\objects\items\props\rocks.dm" #include "code\game\objects\items\props\souto_land.dm" #include "code\game\objects\items\reagent_containers\autoinjectors.dm" #include "code\game\objects\items\reagent_containers\blood_pack.dm" -#include "code\game\objects\items\reagent_containers\borghydro.dm" #include "code\game\objects\items\reagent_containers\dropper.dm" #include "code\game\objects\items\reagent_containers\food.dm" #include "code\game\objects\items\reagent_containers\glass.dm" @@ -1162,6 +1163,7 @@ #include "code\game\objects\items\reagent_containers\pill.dm" #include "code\game\objects\items\reagent_containers\reagent_container.dm" #include "code\game\objects\items\reagent_containers\robodropper.dm" +#include "code\game\objects\items\reagent_containers\robot_parts.dm" #include "code\game\objects\items\reagent_containers\spray.dm" #include "code\game\objects\items\reagent_containers\syringes.dm" #include "code\game\objects\items\reagent_containers\food\cans.dm" @@ -1179,9 +1181,6 @@ #include "code\game\objects\items\reagent_containers\food\snacks\meat.dm" #include "code\game\objects\items\reagent_containers\glass\bottle.dm" #include "code\game\objects\items\reagent_containers\glass\bottle\robot.dm" -#include "code\game\objects\items\robot\robot_items.dm" -#include "code\game\objects\items\robot\robot_parts.dm" -#include "code\game\objects\items\robot\robot_upgrades.dm" #include "code\game\objects\items\stacks\barbed_wire.dm" #include "code\game\objects\items\stacks\cable_coil.dm" #include "code\game\objects\items\stacks\catwalk.dm" @@ -1281,6 +1280,7 @@ #include "code\game\objects\structures\musician.dm" #include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\platforms.dm" +#include "code\game\objects\structures\prop_mech.dm" #include "code\game\objects\structures\props.dm" #include "code\game\objects\structures\reagent_dispensers.dm" #include "code\game\objects\structures\safe.dm" @@ -1691,7 +1691,6 @@ #include "code\modules\desert_dam\filtration\floodgates.dm" #include "code\modules\desert_dam\filtration\structures.dm" #include "code\modules\desert_dam\motion_sensor\sensortower.dm" -#include "code\modules\destilery\main.dm" #include "code\modules\discord\discord_embed.dm" #include "code\modules\droppod\container_droppod.dm" #include "code\modules\droppod\droppod_ui.dm" @@ -2063,43 +2062,11 @@ #include "code\modules\mob\living\carbon\xenomorph\mutators\strains\ravager\berserker.dm" #include "code\modules\mob\living\carbon\xenomorph\mutators\strains\ravager\hedgehog.dm" #include "code\modules\mob\living\carbon\xenomorph\mutators\strains\runner\acid.dm" -#include "code\modules\mob\living\silicon\alarm.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\login.dm" #include "code\modules\mob\living\silicon\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" -#include "code\modules\mob\living\silicon\ai\ai.dm" -#include "code\modules\mob\living\silicon\ai\death.dm" -#include "code\modules\mob\living\silicon\ai\examine.dm" -#include "code\modules\mob\living\silicon\ai\life.dm" -#include "code\modules\mob\living\silicon\ai\login.dm" -#include "code\modules\mob\living\silicon\ai\logout.dm" -#include "code\modules\mob\living\silicon\ai\say.dm" -#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" -#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" -#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" -#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" -#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" #include "code\modules\mob\living\silicon\decoy\decoy.dm" -#include "code\modules\mob\living\silicon\robot\analyzer.dm" -#include "code\modules\mob\living\silicon\robot\component.dm" -#include "code\modules\mob\living\silicon\robot\death.dm" -#include "code\modules\mob\living\silicon\robot\examine.dm" -#include "code\modules\mob\living\silicon\robot\inventory.dm" -#include "code\modules\mob\living\silicon\robot\life.dm" -#include "code\modules\mob\living\silicon\robot\login.dm" -#include "code\modules\mob\living\silicon\robot\photos.dm" -#include "code\modules\mob\living\silicon\robot\robot.dm" -#include "code\modules\mob\living\silicon\robot\robot_damage.dm" -#include "code\modules\mob\living\silicon\robot\robot_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\wires.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" #include "code\modules\mob\living\simple_animal\bat.dm" #include "code\modules\mob\living\simple_animal\parrot.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" @@ -2183,7 +2150,6 @@ #include "code\modules\paperwork\paperbin.dm" #include "code\modules\paperwork\photocopier.dm" #include "code\modules\paperwork\photography.dm" -#include "code\modules\paperwork\silicon_photography.dm" #include "code\modules\power\apc.dm" #include "code\modules\power\batteryrack.dm" #include "code\modules\power\breaker_box.dm" @@ -2393,6 +2359,7 @@ #include "code\modules\unit_tests\_unit_tests.dm" #include "code\modules\vehicles\cargo_train.dm" #include "code\modules\vehicles\powerloader.dm" +#include "code\modules\vehicles\souto_mobile.dm" #include "code\modules\vehicles\train.dm" #include "code\modules\vehicles\vehicle.dm" #include "code\modules\vehicles\vehicle_misc_objects.dm" diff --git a/dependencies.sh b/dependencies.sh index f88c2f9b0a4b..69f16156b9d7 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -20,4 +20,4 @@ export SPACEMAN_DMM_VERSION=suite-1.7.2 # Python version for mapmerge and other tools export PYTHON_VERSION=3.7.9 -export OPENDREAM_VERSION=0.2.0 +export OPENDREAM_VERSION=tgs-min-compat diff --git a/html/changelogs/AutoChangeLog-pr-5122.yml b/html/changelogs/AutoChangeLog-pr-5122.yml deleted file mode 100644 index 68bc12f76aba..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5122.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ihatethisengine" -delete-after: True -changes: - - balance: "Pylons give larva only up to 50% of groundside (weighted) marines, instead of 40% of all humans." - - balance: "Xenos get major boost to evo speed for 3 minutes after hijack. Hijacking resets ovi cooldown." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5359.yml b/html/changelogs/AutoChangeLog-pr-5359.yml deleted file mode 100644 index 930b84a94626..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5359.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed simulators detonation button" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5369.yml b/html/changelogs/AutoChangeLog-pr-5369.yml deleted file mode 100644 index 8f7fe4aff293..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5369.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - code_imp: "Add missing bitfield definitions for variable viewer (VV)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5517.yml b/html/changelogs/AutoChangeLog-pr-5517.yml new file mode 100644 index 000000000000..b6a010ef1b90 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5517.yml @@ -0,0 +1,4 @@ +author: "cuberound" +delete-after: True +changes: + - balance: "increases healing node heal from 10hp every 5 sec to 20 hp every 5 sec" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5648.yml b/html/changelogs/AutoChangeLog-pr-5648.yml new file mode 100644 index 000000000000..368e32b82d9f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5648.yml @@ -0,0 +1,4 @@ +author: "SpartanBobby" +delete-after: True +changes: + - maptweak: "Fixes the two gauss sentry guns that were boxxed in by a mapper over a year ago on ice 3" \ No newline at end of file diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 12f002742892..01bc18eaee1b 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -84,3 +84,380 @@ private-tristan: - bugfix: Trijent security southern hallway and engineering east tunnel no longer have 2 APCs +2024-01-07: + BadAtThisGame302: + - qol: Spruced up the CLs office by adding a new plant, changing the stuck posters + to be random every round + - bugfix: Fixed the ATM Machine in the CLs office having Weyland-Yutani Automatic + Teller Machine and not Wey-Yu. Same thing, useless mapedit. + - bugfix: Fixes the PROUDLY REMEMBER IO! Posters in the CLs office (Again) + - bugfix: Puts the 29th Poster which was a pinup into the pinup posters and not + the music ones. + Birdtalon: + - bugfix: Runtime when consuming xeno fruits. + Blundir: + - rscadd: added approved stamp + - bugfix: fixed being unable to write on papers on noticeboard + - ui: changed noticeboard UI from scratch + - refactor: refactored noticeboard code + - maptweak: added noticeboard to req and approved stamp to QM's office, as well + as some pens in req area to interact with noticeboard + Drathek: + - refactor: Refactored the overlay_lighting component to better handle objects deleting + - bugfix: Fix putting lights in bags somereason keeping the light on + - ui: Polished various aspects of the new dropship weapons UI + - bugfix: Fixed CAS direct firing + - bugfix: Fixed Medevac buttons not moving the dropship (still currently requires + manual winch) + - bugfix: Fixed camera_manager resizing the view incorrectly because of overlay_lighting + - refactor: Ported some hard delete fixes for maps. + - bugfix: Fixed simulators detonation button + - bugfix: Fixed weeded corpses not changing color during forsaken conversion + - code_imp: Add missing bitfield definitions for variable viewer (VV) + LTNTS: + - bugfix: fixes trippy carrot cake sprite + SabreML: + - bugfix: Fixed observing a monkey/farwa/stok/etc. locking the camera onto it. + - bugfix: Fixed the 'busy' circle icon sometimes rendering behind object on the + tile above. + - spellcheck: Updated the night vision goggles 'Tip of the round' to instead relate + to night vision optics. + TheGamerdk: + - rscadd: SLs, SOs and XOs can now recommend people for medals! Do this by right-clicking + your headset, or using the new button in the object panel of the Status Panel! + ihatethisengine: + - balance: Pylons give larva only up to 50% of groundside (weighted) marines, instead + of 40% of all humans. + - balance: Xenos get major boost to evo speed for 3 minutes after hijack. Hijacking + resets ovi cooldown. + - rscadd: Xenos now see marines on the tacmap during hijack if xenos outnumber marines + for more than 25%. + private-tristan: + - spellcheck: Changed a tip related to runner pounce to be more accurate +2024-01-08: + realforest2001: + - bugfix: Yautja scimitars no longer bypass attack delay. +2024-01-09: + private-tristan: + - bugfix: Tunnels are now converted to forsaken on evac. +2024-01-10: + SabreML: + - bugfix: Fixed tunnels not showing on the minimap. + Tsurupeta: + - bugfix: Regular expressions in chat highlights work again. +2024-01-12: + Vicacrov: + - bugfix: Placing flags now anchors the actual flag, not the stack of flags in your + hand. + Zenith, Steelpoint: + - rscadd: Updates Steelpoint's donor armour, replacing it with a new sprite, camouflage + options for all maps and new item descriptions that are lore friendly. + realforest2001: + - rscadd: Added the X17 Riot Breaching Charge. +2024-01-15: + InsaneRed: + - qol: Moves "Banish, Re-admit and De-evolving" queen abilities into one list, making + the queen ui less clutterier + Stakeyng: + - rscadd: Added the ability to combine prescription glasses with eyewear for varying + roles + private-tristan: + - bugfix: removed a light fixture being doubled on trijent + - maptweak: moved some trijent lights in marshals off windows + - maptweak: Alamayer PermaBrig Chairs face the right way +2024-01-16: + Drathek: + - bugfix: Fix all hands on deck message not sending to those in cryopods + Huffie56: + - rscadd: Add the ability to build multi tile assembly from metal sheets. + ItsVyzo: + - balance: m56d loses burst fire + SabreML: + - bugfix: Fixed dead marines being able to man and fire the M56D. + TheGamerdk: + - bugfix: Overwatch now works on Whiskey Outpost again, not that you will use it. + Zonespace27: + - balance: 3 smartgun drums now spawn in the SG's equipment crate. Smartgun drums + cannot be purchased from the SG vendor. +2024-01-17: + SabreML: + - bugfix: Fixed larvae sometimes spawning in space on Fiorina. + TheGamerdk: + - bugfix: The Kutjevo Refinery has been granted an additional SMES +2024-01-18: + Birdtalon: + - bugfix: Fixed buckled mobs unable to move after being thrown by a xeno. + Drathek: + - code_imp: Cleaned up some oversights in attachment Detatch logic + SabreML: + - rscadd: Added a 'balloon alert' when toggling Crest Defense as a Defender. + - code_imp: Made balloon alerts centre themselves on xeno sprites. + Vicacrov: + - bugfix: Fixes an issue where player-controlled facehuggers would ghost out when + smashing against anti-hugging headgear like the B18 helmet. +2024-01-19: + BadAtThisGame302: + - rscadd: Added the Wey-Yu lighter to the CLs briefcase instead of a normal one + BeagleGaming1: + - bugfix: Floor floodlights use correct sprites + Birdtalon: + - bugfix: Bedrolls no longer give metal when wrenched. + - code_imp: INTERRUPT_ALL define now includes resting. + DelineFortune: + - code_imp: Changed value of metal you are getting for recycling attachments via + autolathe. + Huffie56: + - rscdel: deleting machinery called centrifuge in distillery/main.dm and deleted + the distellery/main.dm file and folder. + - refactor: move all the machinery of distillery/main.dm into machinery.dm and remove + all their added functionality. + - rscdel: Remove all the manuals that were nothing to do with CM lore. (cloning, + particle_accelerator, singularity_safety, robotics_cyborgs) + - code_imp: Updated research manual. + - refactor: refactor to reduce the number variable using colour in them instead + of color. + - rscdel: deleting a var called "max_temperature" that created in Walls.dm and didn't + do anything code wise. + InsaneRed: + - bugfix: Fixes praetorian acid ball eating up plasma if its on cooldown + SabreML: + - qol: Made open TGUI windows transfer over when a xeno player evolves. + - rscadd: Made xeno tunnel lists sort by distance to the player. + TheGamerdk: + - rscadd: Groundside Operations console now shows ASL status + - bugfix: FTL is sorted correctly in Groundside Operations console + Vicacrov: + - bugfix: Special xeno structures no longer layer below the Alamo and Normandy's + equipment attach points. + blackdragonTOW: + - soundadd: added unique sound for minimap updates + - soundadd: added unique fax sound for fax announcements. + cuberound: + - bugfix: lowers volume of neurohalucination from 100 (no outher sounds are so laud) + to 65 (just about under queen screech level). + fira: + - rscdel: Removed AIs. + - rscdel: Removed Cyborgs. + - rscdel: Removed Maintenance Drones. + - rscdel: Removed Camera chunking for AIs, and all associated dynamic updates. + - rscdel: Removed Robotic equipment items. + - rscdel: Removed Robotic and AI transformation tools. + - rscdel: Removed Robotic Transformation Disease. + - rscdel: Removed Nanites. Roburgers are now all safe to eat. + - rscdel: Removed functionality from AI machinery and AI card. They're props now. + iloveloopers: + - balance: Being immune to bonebreaks now makes you immune to delimbs. + mullenpaul: + - refactor: upgraded root tgui files to typescript to closer align with tg + - refactor: upgraded typescript to 4.9.4 + - refactor: upgraded yarn to 3.3.1 + - refactor: upgraded a bunch of tgui tooling + realforest2001: + - bugfix: Mutated facehuggers are no longer invisible. + - bugfix: Fancy closet now works as desired and runtime free. + - rscadd: Added an area for the closet to use instead of APC interior. + - code_imp: Repathed /area/vehicle to /area/interior/vehicle. +2024-01-20: + Drathek: + - bugfix: The M56D and the M2C now retain their labels when disassembled + - bugfix: The M56D can now be charger crushed when not fully assembled + - bugfix: The M56D being run over by a vehicle now undeploys the gun correctly (so + it retains the gun if it had a gun) + - bugfix: Fix an edge case that could duplicate the M56D when charger crushed + - balance: The M56D now retains the health of the gun through all of its different + disassembled states + - bugfix: Fixed mobs merged with weeds remaining ignited + SabreML: + - bugfix: Fixed the 'busy' circle icon being drawn above darkness and screen effects. +2024-01-21: + ClairionCM: + - qol: made whistles less spammy + Huffie56: + - rscadd: 'Add some boards to the board vendor in engi on almayer(Air Alarm Electronics, + Security Camera Monitor, + + Station Alerts, Arcade, Atmospheric Monitor).' + Releasethesea: + - rscadd: adds prescription variants of the orange, black, and M1A1 goggles + SabreML: + - rscadd: Made larvae and facehuggers able to use custom emotes. + Vicacrov: + - bugfix: Fixes engine/weapon attach points layering below the dropship walls. +2024-01-22: + cuberound: + - balance: AP rocket applies 3 weaken and 3 paralyze no matter if you hit the mob + directly(from 2), at max range (from 2) or tile under it (from 4) + - balance: indirect AP rocket does the same damage to walls and mobs +2024-01-23: + realforest2001: + - rscadd: Added Whitelist Panel for whitelist senators to manage their own whitelists. + - refactor: Whitelist.txt is no longer functional, owing to the new system. + - rscdel: Removed "Alien Whitelist" checks regarding base SS13 races. +2024-01-24: + BeagleGaming1: + - balance: Repairing bones with bone glue costs a portion of the bone glue's resources + - balance: Repairing bones with a screwdriver costs metal + - rscdel: Removed bone glue from the medilathe + - spellcheck: New description for bone glue + Ben10083: + - maptweak: Workin Joey has returned to the Maintenance Bar + Birdtalon: + - rscadd: Xenomorph basic tutorial. + SabreML: + - bugfix: Fixed being gibbed with the Ctrl or Alt key held sometimes breaking movement + as an observer. + SpartanBobby: + - maptweak: A bunch of edits to big red and big red nightmares for the following + areas, Northcaves, Medical Morgue, maint between cargo and general store, LZ2, + North Libary, EVA, dorms bathroom + VileBeggar: + - balance: M39 burst scatter multiplier reduced from 7 to 4. + fira: + - bugfix: Fixed an exploit involving playing cards. + mullenpaul: + - refactor: switched from infernojs to react + private-tristan: + - rscadd: Added a new xeno tip about where to target. + - spellcheck: changed a few tips' wording. + - rscdel: Removed an outdated xeno tip about slashing NVGs + realforest2001: + - rscadd: Psychic Whisper now broadcasts to deadchat too. + - bugfix: Psychic Whisper can now be used while lying down. +2024-01-25: + Drathek: + - bugfix: Fixed more item exploits + - bugfix: Fixed lingering overlays in inventories for metal stacks and cards + Huffie56: + - refactor: creating it's own file for souto mobile code instead of it being in + vehicle.dm. + TheGamerdk: + - rscadd: A hive collapse (No new Queen) while at 3 xenos or below is now a marine + major, instead of a minor. +2024-01-26: + Huffie56: + - bugfix: corrected the name of an area from "Lower Deck Starboard Hull" to "Lower + Deck Starboard-Aft Hull". + - bugfix: added apc's to area that where missing one. + - maptweak: added some areas to almayers (constr site, Starboard-Bow Maintenance, + Bow Hull(port and starboard),cryo maintenance. + Johannes2262: + - rscadd: Added three more magazines to each of the MP's handgun cases + LTNTS: + - rscadd: bolted version of blood and medical vendors + - rscadd: pill bottle crate + - balance: cheaper medical crates from req + - balance: less items in med vendors, mainly pill bottles + cuberound: + - rscadd: added messages when the CAS sonic boom is played + - soundadd: reduced volume falloff of CAS sonic boom + - bugfix: allows custom flamethrower tanks to be filled directly from oxygentank + realforest2001: + - rscadd: Adds paygrade defines for PMCs, VAI, Mercenaries and TWE. + - code_imp: Adds code to populate reference lists for certain paygrades. + - bugfix: Fixes PMC synth not using the correct grade. + - rscadd: Syndicate ID card repathed and works with paygrades. + - spellcheck: The latejoin menu marine category title is now Marines instead of + Squad Riflemen, as this was an inaccuracy. +2024-01-27: + Contrabang: + - bugfix: Dchat is no longer notified of hugs from tutorials + SabreML: + - bugfix: Fixed the xeno 'queen locator' giving the wrong location when a tunnel + was selected. +2024-01-29: + BadAtThisGame302: + - rscadd: Added a Researcher on Trijent. + - rscadd: Added a CMB Deputy on Trijent. + - rscadd: Added a second RD uniform. + - code_imp: changed the Trijent Security Guard to not use a USCM MP Hat and trenchcoat. + - code_imp: changed a not used "synthetic service uniform" to it's before shamelessly + taken RD Variant. + Contrabang: + - spellcheck: Fixed a few uncommon typos across the entire codebase + Doubleumc: + - refactor: projectile paths are the same in both directions, A->B and B->A + Drathek: + - rscadd: The game will now change game mode to default and initiate a map vote + if a game mode fails to start twice and there are no admins online. + - bugfix: Fixed a runtime during game mode voting + - admin: Admins can now use the Start Round verb to bypass a gamemode's checks + SabreML: + - spellcheck: Made observers see the marine version of CAS warnings, rather than + the xeno one. + private-tristan: + - bugfix: Civilian survs will now spawn with snow gear on snow maps. + realforest2001: + - rscadd: Added biometric checks to command announcements. + - code_imp: Security camera autoname is now determined by a variable rather than + hardcode. +2024-01-30: + Huffie56: + - bugfix: fix upper deck having disposal pipes west of CIC going on a loop. + - bugfix: fix south of alpha briefing having disconnected pipes and disposal from + the main loops. + - bugfix: fix south shooting range having is disposal outside and disposal pipe + east going over vents. + - bugfix: fix pipes in req rest room going in the walls or windows. + - bugfix: fix pipes in control tower in hangar going bellow the windows instead + of the doors. + - refactor: added a few maintenance areas(mess, Port and starboard Midship) ,a few + other hull areas( lower and upper stair hull, Port and starboard stern and bow + hull) + - maptweak: corrected a colored tile west of CIC being the wrong sprite. + InsaneRed: + - balance: You now only need 1 burrowed larva to trade it for evolution as Queen + instead of 3 burrowed larva. + SabreML: + - bugfix: Fixed ponchos not having icon states on specific maps. + mullenpaul: + - code_imp: fixes sticky messages in STUI + - refactor: STUI is now a TSX component +2024-01-31: + Birdtalon: + - code_imp: Added procs for applying a root (immobilise) + Contrabang: + - bugfix: Chestbursting larva no longer get hive orders when there are no hive orders + CyberSpyXD: + - rscadd: Added a new backstory blurb for friendly UPP and some variance to the + backstory of UPP synthetics. + Drathek: + - balance: Increased double throw delay from .4s to 1.5s + Huffie56: + - refactor: turn some "# and use the proper define from colour.dm for 21 files. + LC4492: + - rscadd: Adds a variation of the chef's apron, "Medical's apron", to be used by + medical personnel, mainly nurses. + - bugfix: Fixed the code in the prep vendors to make things of different groups + not act like they are of the same group, like how you couldn't take a labcoat + and a snowcoat, only one of both, which does not make sense. + - code_imp: Update of the medical's vendor preps. Exclusion of most part of medical's + equipment when waking up from cryo. Addition of latejoin landmarks to the same + place where they usually wake up as firstjoiners. + - maptweak: Added the landmarks to the map and changed the CMO's vendor to an unused + space in his room to improve on item grabbing, because the items were being + covered by the bed's sheet, and making player's life to take things from it + more difficult. Also re-added a bedsheet in the medical's area that some old + PR somehow removed. + LTNTS: + - bugfix: removed the tiny square in the MP beret to stop it looking like a french + mime's beret + - refactor: reorganized cm_hats and cm_suits for easier spriter usage + - spellcheck: fixed area typo Marshall to Marshal + Oyu07: + - bugfix: Widens Dropship fabricator UI. Points for ammo are no longer cut off + - bugfix: character pref Green Beret is no longer invisible + SabreML: + - bugfix: Fixed facehuggers being able to flip tables. + - bugfix: Fixed a stray pixel in the warrior 'walking' sprite. + - bugfix: Made the Queen able to automatically climb ledges. + blackdragonTOW: + - soundadd: brought dropship_crash down from 0db to -6db + private-tristan: + - balance: Xenos do greatly increased damage to metal foam (0.8x to 1.75x) + - balance: Iron metal foam hp decreased from 85 to 75, meaning that all T3s other + than boiler can instantly break it. + - balance: Metal foam grenades now create iron foam. + - balance: Aluminum foam reactions are now cap'd at 300u + - balance: amount of metal foam grenades in req doubled. + - balance: Surplus explosive pack now contains 2 metal foam grenades + - rscdel: metal foam is no longer able to be created in chemistry diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml new file mode 100644 index 000000000000..da89432474a7 --- /dev/null +++ b/html/changelogs/archive/2024-02.yml @@ -0,0 +1,87 @@ +2024-02-01: + BadAtThisGame302: + - bugfix: fixed the CMB Trijent Survivor + BadAtThisGame302, AmoryBlaine: + - rscadd: Added new brown laceups, adds new ties and tweaks current ones, as well + as new suit, bomber, vest, and corporate clothes to the game. Sprites by AmoryBlaine. + - imageadd: added six new Corporate clothes sprites (Casual/Ivy/Formal/Black/Brown/Blue), + three suit vest sprites (Brown/Tan/Grey), three bomber jacket sprites (Khaki/Red/Grey), + and five suit jacket sprites (Khaki/Formal/Black/Brown/Blue). + Huffie56: + - rscdel: Removed "security robot module" from robot_module.dm + - refactor: change the name of Ripley in game to P-1000, gygax to MAX, Durand to + MOX, Odysseus to Alice to be more in line with the lore. +2024-02-02: + BadAtThisGame302: + - rscadd: Replaced the Political Survivor surv name with State Contractor + - rscadd: Added a USCMC Recruiter to the Solaris surv pool. + - rscadd: Added a USCM Survivor template anycase anyone wants to add USCM Survivors + to other maps. + - bugfix: Every other surv has no 'Ridge' next to Solaris in their assignments, + only the CL. Fixes this. + - spellcheck: Embellished the Solaris Ridge announce text, to make it so the Company + and more fluff about it's actual role like the wiki states. + Diegoflores31: + - rscadd: Disabler bolts now deal a little oxygen damage on each hit. + - rscadd: Replaces Skill lock system on stunbatons with a high chance of hiting + yourself + - qol: adds jittery and sway to Stunbaton and Disabler beams + Drathek: + - balance: Compared to originally, corpsmen now have access to medbay vendors, and + chemistry only requires chemistry access. + - bugfix: 'Fixed unintended change to medbay vendors access:' + Huffie56: + - maptweak: added warning stripe bellow doors that didn't have them. + - maptweak: Removed a bed sheet in medical to restore the lore of the unknown alpha + that stole it. + - maptweak: Reconnect the CIC armory to one of the brig door armory allowing them + to open it at a distance. + InsaneRed: + - balance: Oppressor tailstab no longer ignores armor, and it now roots instead + of stunning. + NervanCatos: + - qol: added M3-L Pattern Light Armor to IO Prep + SabreML: + - bugfix: Fixed lesser drones not being able to flip tables. + VileBeggar: + - rscadd: Added the XM51 breaching scattergun, available in small quantities as + a restricted weapon within Requisitions. + blackdragonTOW: + - imageadd: altered the turret flag to the UA flag, from generic orange + - bugfix: Flag turrets now correct reference the destroyed state + harryob: + - bugfix: medals should save more reliably + hislittlecuzingames: + - balance: Nightmare inserts of crashed ships on Solaris (big red) and Desert dam + can do surgury in them INSTANCE EDIT + mullenpaul: + - refactor: camera consoles now use camera manager component + private-tristan: + - balance: Burrower can no longer spawn as part of the feral xeno ERT +2024-02-03: + Drathek: + - ui: Refactored backend for Weapon Stats panel to use spritesheets instead. +2024-02-04: + BadAtThisGame302: + - bugfix: fixed the CL jackets/vests/bomber jackets sprites. + Drathek: + - imageadd: Changed green fire sprites to work better with lights + - balance: Reduced how many fire stacks a flaregun shot provides + - balance: Reduced starshell's damage, but fixed the application of the incend bullet + trait. + - balance: Reverted damage changes to tazers and batons. + Huffie56: + - bugfix: 'revert PR #5553 as it is causing issues with color on atmo pipe.' + LTNTS: + - imageadd: stamp sprites for TWE, UPP and CLF + - code_imp: added TWE, UPP and CLF channels + MistChristmas: + - maptweak: Add Brig Photocopier + Segrain: + - bugfix: Some cases of calculations for "time remaining until something" no longer + display incorrect results. + Stakeyng: + - qol: Removes the need to cycle through helmet visors that contain HUD effects + that are already active on your character. + cuberound: + - balance: increases flare pouch storage slots from 8 to 16 diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi index 673f1c48de1f..a36e22b9c871 100644 Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ diff --git a/icons/misc/tutorial.dmi b/icons/misc/tutorial.dmi index d4a4e65963ba..31c9f72d3853 100644 Binary files a/icons/misc/tutorial.dmi and b/icons/misc/tutorial.dmi differ diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index 4758f430a498..9fc39fb5acd2 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/humans/onmob/belt.dmi b/icons/mob/humans/onmob/belt.dmi index 8a10910930dd..4cff5838fbbb 100644 Binary files a/icons/mob/humans/onmob/belt.dmi and b/icons/mob/humans/onmob/belt.dmi differ diff --git a/icons/mob/humans/onmob/feet.dmi b/icons/mob/humans/onmob/feet.dmi index 17b4073c748c..e8a6e49477c1 100644 Binary files a/icons/mob/humans/onmob/feet.dmi and b/icons/mob/humans/onmob/feet.dmi differ diff --git a/icons/mob/humans/onmob/head_0.dmi b/icons/mob/humans/onmob/head_0.dmi index f1d6a2c6e665..cfe8b33da4ee 100644 Binary files a/icons/mob/humans/onmob/head_0.dmi and b/icons/mob/humans/onmob/head_0.dmi differ diff --git a/icons/mob/humans/onmob/head_1.dmi b/icons/mob/humans/onmob/head_1.dmi index df30d657122b..e69c0191042f 100644 Binary files a/icons/mob/humans/onmob/head_1.dmi and b/icons/mob/humans/onmob/head_1.dmi differ diff --git a/icons/mob/humans/onmob/suit_0.dmi b/icons/mob/humans/onmob/suit_0.dmi index d0f816e2b7fa..3fc9e8e0770b 100644 Binary files a/icons/mob/humans/onmob/suit_0.dmi and b/icons/mob/humans/onmob/suit_0.dmi differ diff --git a/icons/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi index a230aa7e4300..61297e9f98cb 100644 Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ diff --git a/icons/mob/humans/onmob/suit_slot.dmi b/icons/mob/humans/onmob/suit_slot.dmi index e83ce1301fa7..a9142060ab75 100644 Binary files a/icons/mob/humans/onmob/suit_slot.dmi and b/icons/mob/humans/onmob/suit_slot.dmi differ diff --git a/icons/mob/humans/onmob/ties.dmi b/icons/mob/humans/onmob/ties.dmi index c8fb98c0c5c1..7ea2037463bf 100644 Binary files a/icons/mob/humans/onmob/ties.dmi and b/icons/mob/humans/onmob/ties.dmi differ diff --git a/icons/mob/humans/onmob/uniform_0.dmi b/icons/mob/humans/onmob/uniform_0.dmi index a140c4db6d8b..79f54b2afebe 100644 Binary files a/icons/mob/humans/onmob/uniform_0.dmi and b/icons/mob/humans/onmob/uniform_0.dmi differ diff --git a/icons/mob/humans/onmob/uniform_1.dmi b/icons/mob/humans/onmob/uniform_1.dmi index ae84c1a1b9eb..12f4d104c2f0 100644 Binary files a/icons/mob/humans/onmob/uniform_1.dmi and b/icons/mob/humans/onmob/uniform_1.dmi differ diff --git a/icons/mob/xenonids/facehugger.dmi b/icons/mob/xenonids/facehugger.dmi index 97c4af179626..cd688d441d64 100644 Binary files a/icons/mob/xenonids/facehugger.dmi and b/icons/mob/xenonids/facehugger.dmi differ diff --git a/icons/mob/xenos/warrior.dmi b/icons/mob/xenos/warrior.dmi index e871f7749145..d766959d1070 100644 Binary files a/icons/mob/xenos/warrior.dmi and b/icons/mob/xenos/warrior.dmi differ diff --git a/icons/obj/items/assemblies.dmi b/icons/obj/items/assemblies.dmi index 522e0fb5e55d..eb36d5696741 100644 Binary files a/icons/obj/items/assemblies.dmi and b/icons/obj/items/assemblies.dmi differ diff --git a/icons/obj/items/clothing/belts.dmi b/icons/obj/items/clothing/belts.dmi index 38ff421cfda5..946fbfd23cda 100644 Binary files a/icons/obj/items/clothing/belts.dmi and b/icons/obj/items/clothing/belts.dmi differ diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index ae446e174575..ae311984e2c3 100644 Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index 7db2158ee5bf..7f4de16bb174 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ diff --git a/icons/obj/items/clothing/donor/HEAD.dmi b/icons/obj/items/clothing/donor/HEAD.dmi index d7345e41d94b..3116bdef26b6 100644 Binary files a/icons/obj/items/clothing/donor/HEAD.dmi and b/icons/obj/items/clothing/donor/HEAD.dmi differ diff --git a/icons/obj/items/clothing/donor/SUITS.dmi b/icons/obj/items/clothing/donor/SUITS.dmi index 51c41b837c9a..fc0c9987b9d4 100644 Binary files a/icons/obj/items/clothing/donor/SUITS.dmi and b/icons/obj/items/clothing/donor/SUITS.dmi differ diff --git a/icons/obj/items/clothing/hats.dmi b/icons/obj/items/clothing/hats.dmi index de6673d07b51..e9da08f07477 100644 Binary files a/icons/obj/items/clothing/hats.dmi and b/icons/obj/items/clothing/hats.dmi differ diff --git a/icons/obj/items/clothing/shoes.dmi b/icons/obj/items/clothing/shoes.dmi index 4d99b2ea4b2c..a83cb1574307 100644 Binary files a/icons/obj/items/clothing/shoes.dmi and b/icons/obj/items/clothing/shoes.dmi differ diff --git a/icons/obj/items/clothing/suits.dmi b/icons/obj/items/clothing/suits.dmi index 10fbfff30d7c..7d67de8e5a2e 100644 Binary files a/icons/obj/items/clothing/suits.dmi and b/icons/obj/items/clothing/suits.dmi differ diff --git a/icons/obj/items/clothing/ties.dmi b/icons/obj/items/clothing/ties.dmi index f236480c7b9d..25f3737dfe90 100644 Binary files a/icons/obj/items/clothing/ties.dmi and b/icons/obj/items/clothing/ties.dmi differ diff --git a/icons/obj/items/clothing/uniforms.dmi b/icons/obj/items/clothing/uniforms.dmi index 8eb3d03d68c7..f5d782e9dc0f 100644 Binary files a/icons/obj/items/clothing/uniforms.dmi and b/icons/obj/items/clothing/uniforms.dmi differ diff --git a/icons/obj/items/food.dmi b/icons/obj/items/food.dmi index 9e746bb62656..12093cd2c45b 100644 Binary files a/icons/obj/items/food.dmi and b/icons/obj/items/food.dmi differ diff --git a/icons/obj/items/paper.dmi b/icons/obj/items/paper.dmi index c39fede23679..b15d4be6076d 100644 Binary files a/icons/obj/items/paper.dmi and b/icons/obj/items/paper.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi index 42e7c54bbd2b..8655a8bfcf2c 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi index eeef3f91412d..b1b181c182eb 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi index 911b727ba5f6..d9a8d5da3fbc 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index f6bddae9b090..e60e9463b8a2 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/stock.dmi b/icons/obj/items/weapons/guns/attachments/stock.dmi index d3a95284a23f..0867f60d6430 100644 Binary files a/icons/obj/items/weapons/guns/attachments/stock.dmi and b/icons/obj/items/weapons/guns/attachments/stock.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi index a7586a656965..4ecb121a7feb 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi index 63b197dd36c4..fb21be90f8a7 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi index 22eae6bd0ba4..df823405fac3 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi index b9aa8907a806..4a31d29042d4 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi index dd432a1fa2c1..21d7b04f6f05 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi index 1306cbb7d8f6..0d3b1f715571 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/classic/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi index 63771f7ff133..9e5e8d4c9c59 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi index 6530e1d6967d..02021756a805 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi index cae152f237ef..a91d071754ad 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi index 9df4a0d86ccc..e408fff750da 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi index 2f5324fdb46b..764a51e8b390 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/desert/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi index 04718caddcd1..5cc73c3e9ec5 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi index 717a1182824e..25f8b823289c 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi index 9ce7e553ba45..c5b3b3f3fe73 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi index 9f69b4ac6815..9c2562d5a921 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi index b51ed6044347..0aa7f686a749 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/jungle/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi index b72963ff7917..8ad5352cc440 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi index 2c8dedb6cf35..a837e7061417 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi index fbc98874a4f6..171d0d0eca03 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi index 6e7b9cb8c9b5..1de053b6f969 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/snow/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi index e849b8134004..5996089a64d6 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/back.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi index c844b637ab7e..ea84f3e69e21 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_lefthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi index 09029fb61f2b..78e322e3db8b 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_obj.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi index 78bebfdd4bd9..1b2c96fb9518 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/guns_righthand.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi b/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi index 3fee1087811a..738add8e1df4 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi and b/icons/obj/items/weapons/guns/guns_by_map/urban/suit_slot.dmi differ diff --git a/icons/obj/items/weapons/guns/handful.dmi b/icons/obj/items/weapons/guns/handful.dmi index bbea110531ea..e3fe380c9dfe 100644 Binary files a/icons/obj/items/weapons/guns/handful.dmi and b/icons/obj/items/weapons/guns/handful.dmi differ diff --git a/icons/obj/items/weapons/guns/lineart.dmi b/icons/obj/items/weapons/guns/lineart.dmi index 5d52fd658290..212b3988fc02 100644 Binary files a/icons/obj/items/weapons/guns/lineart.dmi and b/icons/obj/items/weapons/guns/lineart.dmi differ diff --git a/icons/obj/items/weapons/guns/lineart_modes.dmi b/icons/obj/items/weapons/guns/lineart_modes.dmi new file mode 100644 index 000000000000..787fdd34f241 Binary files /dev/null and b/icons/obj/items/weapons/guns/lineart_modes.dmi differ diff --git a/icons/obj/structures/machinery/defenses/planted_flag.dmi b/icons/obj/structures/machinery/defenses/planted_flag.dmi index 40616eb0caca..5b9fbb6e6f22 100644 Binary files a/icons/obj/structures/machinery/defenses/planted_flag.dmi and b/icons/obj/structures/machinery/defenses/planted_flag.dmi differ diff --git a/icons/obj/structures/machinery/floodlight.dmi b/icons/obj/structures/machinery/floodlight.dmi index 7330d1749ab7..1f6b3b3d6d4c 100644 Binary files a/icons/obj/structures/machinery/floodlight.dmi and b/icons/obj/structures/machinery/floodlight.dmi differ diff --git a/icons/obj/structures/props/stationobjs.dmi b/icons/obj/structures/props/stationobjs.dmi index 66c396f41d12..09868e92fd88 100644 Binary files a/icons/obj/structures/props/stationobjs.dmi and b/icons/obj/structures/props/stationobjs.dmi differ diff --git a/icons/turf/areas_interiors.dmi b/icons/turf/areas_interiors.dmi index 4da1109803a8..47a95da322ea 100644 Binary files a/icons/turf/areas_interiors.dmi and b/icons/turf/areas_interiors.dmi differ diff --git a/maps/bigredv2.json b/maps/bigredv2.json index ac519f37fa84..996d0d44422d 100644 --- a/maps/bigredv2.json +++ b/maps/bigredv2.json @@ -11,6 +11,7 @@ "/datum/equipment_preset/survivor/engineer/solaris", "/datum/equipment_preset/survivor/trucker/solaris", "/datum/equipment_preset/survivor/security/solaris", + "/datum/equipment_preset/survivor/uscm/solaris", "/datum/equipment_preset/survivor/colonial_marshal/solaris", "/datum/equipment_preset/survivor/corporate/solaris", "/datum/equipment_preset/survivor/flight_control_operator", @@ -25,7 +26,7 @@ 0.0 ], "map_item_type": "/obj/item/map/big_red_map", - "announce_text": "We've lost contact with Weyland-Yutani's research facility, Solaris Ridge. The ###SHIPNAME### has been dispatched to assist.", + "announce_text": "Weyland-Yutani has lost contact with one of its Biological Storage Facilities, Solaris Ridge, on the planet of LV-1413. The ###SHIPNAME### has been requested to look into the blackout by Weyland-Yutani.", "monkey_types": [ "neaera" ], diff --git a/maps/desert_dam.json b/maps/desert_dam.json index 6df419583cd3..b5717af450cc 100644 --- a/maps/desert_dam.json +++ b/maps/desert_dam.json @@ -5,10 +5,11 @@ "webmap_url": "Trijent", "survivor_types": [ "/datum/equipment_preset/survivor/doctor/trijent", + "/datum/equipment_preset/survivor/scientist/trijent", "/datum/equipment_preset/survivor/roughneck", "/datum/equipment_preset/survivor/chaplain/trijent", "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison", - "/datum/equipment_preset/survivor/colonial_marshal", + "/datum/equipment_preset/survivor/colonial_marshal/trijent", "/datum/equipment_preset/survivor/engineer/trijent", "/datum/equipment_preset/survivor/engineer/trijent/hydro", "/datum/equipment_preset/survivor/trucker/trijent", diff --git a/maps/fiorina_sciannex.json b/maps/fiorina_sciannex.json index 89997cc9d668..61212c433be0 100644 --- a/maps/fiorina_sciannex.json +++ b/maps/fiorina_sciannex.json @@ -4,15 +4,15 @@ "map_file": "Fiorina_SciAnnex.dmm", "webmap_url": "Fiorina", "survivor_types": [ - "/datum/equipment_preset/survivor/scientist/florina", - "/datum/equipment_preset/survivor/doctor/florina", + "/datum/equipment_preset/survivor/scientist/fiorina", + "/datum/equipment_preset/survivor/doctor/fiorina", "/datum/equipment_preset/survivor/interstellar_human_rights_observer", - "/datum/equipment_preset/survivor/security/florina", - "/datum/equipment_preset/survivor/colonial_marshal/florina", + "/datum/equipment_preset/survivor/security/fiorina", + "/datum/equipment_preset/survivor/colonial_marshal/fiorina", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/gangleader", - "/datum/equipment_preset/survivor/engineer/florina", + "/datum/equipment_preset/survivor/engineer/fiorina", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" ], diff --git a/maps/interiors/apc.dmm b/maps/interiors/apc.dmm index 82ca4649acd6..2684ad8f0f75 100644 --- a/maps/interiors/apc.dmm +++ b/maps/interiors/apc.dmm @@ -17,7 +17,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "c" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -35,7 +35,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "d" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -48,7 +48,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "e" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -65,7 +65,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "g" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_R" @@ -86,7 +86,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_0_1_15" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "j" = ( /turf/open/void/vehicle, /area/space) @@ -112,7 +112,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "n" = ( /obj/structure/interior_wall/apc{ icon_state = "front_2" @@ -155,7 +155,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "t" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_3" @@ -167,7 +167,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "v" = ( /obj/structure/bed/chair/vehicle{ pixel_x = 8 @@ -183,7 +183,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "w" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -201,7 +201,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "y" = ( /obj/structure/interior_wall/apc{ icon_state = "front_6" @@ -212,12 +212,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "A" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "B" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_inverse_R"; @@ -236,7 +236,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "D" = ( /obj/structure/interior_wall/apc{ icon_state = "wall"; @@ -274,7 +274,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "H" = ( /obj/structure/bed/chair/vehicle{ pixel_x = -8 @@ -294,7 +294,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "I" = ( /obj/effect/landmark/interior/spawn/vehicle_support_gunner_seat{ dir = 1 @@ -307,7 +307,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "J" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_L"; @@ -324,7 +324,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "L" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_L" @@ -364,7 +364,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_1_3" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "S" = ( /obj/structure/interior_wall/apc{ alpha = 100; @@ -402,7 +402,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "V" = ( /obj/structure/interior_wall/apc{ icon_state = "wall" @@ -420,7 +420,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "X" = ( /obj/structure/interior_wall/apc{ icon_state = "front_wheel_R" @@ -442,7 +442,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "Z" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_4" diff --git a/maps/interiors/apc_command.dmm b/maps/interiors/apc_command.dmm index 0da5353a6d6a..d6f7485339fc 100644 --- a/maps/interiors/apc_command.dmm +++ b/maps/interiors/apc_command.dmm @@ -10,7 +10,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_10_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "c" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -23,7 +23,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "d" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -36,7 +36,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "e" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -56,7 +56,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "h" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_wheel_R"; @@ -79,7 +79,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "k" = ( /turf/open/void/vehicle, /area/space) @@ -123,7 +123,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_7_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "p" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_6" @@ -140,12 +140,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "r" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "s" = ( /obj/structure/machinery/prop/almayer/CICmap{ indestructible = 1; @@ -155,7 +155,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "t" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_back_top_1"; @@ -168,7 +168,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_5" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "v" = ( /obj/structure/interior_wall/apc{ icon_state = "front_3" @@ -194,7 +194,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "x" = ( /obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor{ dir = 4 @@ -202,12 +202,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "y" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "z" = ( /obj/structure/interior_wall/apc{ alpha = 100; @@ -234,7 +234,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "C" = ( /obj/structure/interior_wall/apc{ icon_state = "front_1" @@ -252,7 +252,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_0_1_15" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "F" = ( /obj/structure/bed/chair/vehicle{ dir = 4 @@ -260,7 +260,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "G" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -276,17 +276,17 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "H" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_13" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "I" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "J" = ( /obj/structure/interior_wall/apc{ icon_state = "wall" @@ -314,7 +314,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) "M" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_R"; @@ -415,7 +415,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc/command) +/area/interior/vehicle/apc/command) (1,1,1) = {" p diff --git a/maps/interiors/apc_med.dmm b/maps/interiors/apc_med.dmm index f4da99a6fe50..0f47b029c20f 100644 --- a/maps/interiors/apc_med.dmm +++ b/maps/interiors/apc_med.dmm @@ -14,7 +14,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_11" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "c" = ( /obj/effect/decal/medical_decals/permanent{ icon_state = "docdecal2"; @@ -27,7 +27,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_5" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "d" = ( /obj/effect/decal/medical_decals/permanent{ icon_state = "triagedecalbottom" @@ -38,7 +38,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_14" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "e" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -70,7 +70,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "j" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_6" @@ -105,7 +105,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_7" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "n" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_back_top_1"; @@ -179,7 +179,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_8" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "x" = ( /obj/structure/interior_wall/apc{ icon_state = "wall"; @@ -204,7 +204,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "z" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_front_top_1"; @@ -223,7 +223,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "B" = ( /obj/structure/machinery/iv_drip{ anchored = 1 @@ -236,7 +236,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_12" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "C" = ( /obj/structure/interior_wall/apc{ icon_state = "front_wheel_L"; @@ -253,7 +253,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "E" = ( /obj/structure/vehicle_locker{ pixel_y = 28 @@ -264,7 +264,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "F" = ( /obj/structure/interior_wall/apc{ icon_state = "front_2" @@ -293,7 +293,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "J" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -301,7 +301,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_6" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "K" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -317,12 +317,12 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "L" = ( /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "M" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_inverse_L"; @@ -355,7 +355,7 @@ /turf/open/shuttle/vehicle{ icon_state = "dark_sterile_green_13" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "P" = ( /obj/structure/interior_wall/apc{ icon_state = "door_back" @@ -366,13 +366,13 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "R" = ( /obj/effect/landmark/interior/spawn/weapons_loader, /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "S" = ( /obj/structure/interior_wall/apc{ icon_state = "front_4" @@ -383,7 +383,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_3_3" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "U" = ( /obj/structure/interior_wall/apc{ icon_state = "front_1" @@ -402,7 +402,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "W" = ( /obj/structure/bed/chair/vehicle{ pixel_x = -8 @@ -422,7 +422,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc/med) +/area/interior/vehicle/apc/med) "Y" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_4" diff --git a/maps/interiors/apc_no_fpw.dmm b/maps/interiors/apc_no_fpw.dmm index 6a08e69959ec..e463b7a5ff1e 100644 --- a/maps/interiors/apc_no_fpw.dmm +++ b/maps/interiors/apc_no_fpw.dmm @@ -6,7 +6,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "c" = ( /obj/structure/bed/chair/vehicle{ dir = 4 @@ -14,7 +14,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "d" = ( /obj/effect/landmark/interior/spawn/entrance{ alpha = 50; @@ -29,7 +29,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "e" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -47,7 +47,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "f" = ( /obj/structure/interior_wall/apc{ icon_state = "front_2" @@ -70,7 +70,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_1_3" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "j" = ( /obj/effect/landmark/interior/spawn/entrance{ dir = 8; @@ -89,7 +89,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "k" = ( /obj/structure/interior_wall/apc{ icon_state = "wall"; @@ -108,7 +108,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "m" = ( /obj/structure/interior_wall/apc{ icon_state = "front_1" @@ -139,7 +139,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "r" = ( /obj/effect/landmark/interior/spawn/interior_viewport{ dir = 8; @@ -157,7 +157,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "s" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_2" @@ -179,7 +179,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "u" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_front_top_1"; @@ -208,7 +208,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_6" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "z" = ( /obj/effect/landmark/interior/spawn/entrance{ dir = 8; @@ -219,7 +219,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "A" = ( /obj/structure/interior_wall/apc{ icon_state = "wheel_back_top_1"; @@ -240,7 +240,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "C" = ( /obj/structure/bed/chair/vehicle{ dir = 4 @@ -248,7 +248,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "D" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_wheel_L" @@ -259,7 +259,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_5" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "F" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_R"; @@ -298,7 +298,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "J" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_inverse_R"; @@ -322,7 +322,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_0_1_15" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "M" = ( /obj/structure/interior_wall/apc{ icon_state = "front_wheel_L"; @@ -343,7 +343,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9_1" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "P" = ( /obj/structure/interior_wall/apc{ icon_state = "corner_small_L" @@ -385,7 +385,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_14" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "V" = ( /obj/structure/interior_wall/apc{ icon_state = "rear_1" @@ -411,7 +411,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) "X" = ( /obj/structure/interior_wall/apc{ icon_state = "wall_2"; @@ -446,7 +446,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/apc) +/area/interior/vehicle/apc) (1,1,1) = {" G diff --git a/maps/interiors/fancylocker.dmm b/maps/interiors/fancylocker.dmm index a6ecb6155e72..1b97bc73be62 100644 --- a/maps/interiors/fancylocker.dmm +++ b/maps/interiors/fancylocker.dmm @@ -1,96 +1,97 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/closed/wall/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "b" = ( /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "c" = ( /obj/effect/landmark/interior/spawn/entrance/step_toward{ dir = 8; - exit_type = /obj/structure/interior_exit/fancy + exit_type = /obj/structure/interior_exit/fancy; + tag = "fancy" }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "d" = ( /turf/open/floor/carpet/edge{ dir = 9 }, -/area/vehicle/apc) +/area/interior/fancylocker) "e" = ( /turf/open/floor/carpet/edge{ dir = 1 }, -/area/vehicle/apc) +/area/interior/fancylocker) "f" = ( /turf/open/floor/carpet/edge{ dir = 5 }, -/area/vehicle/apc) +/area/interior/fancylocker) "g" = ( /turf/open/floor/carpet/edge{ dir = 8 }, -/area/vehicle/apc) +/area/interior/fancylocker) "h" = ( /obj/structure/bed/sofa/south/white/left, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "i" = ( /obj/structure/bed/sofa/south/white, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "j" = ( /obj/structure/bed/sofa/south/white/right, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "k" = ( /turf/open/floor/carpet/edge{ dir = 4 }, -/area/vehicle/apc) +/area/interior/fancylocker) "l" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp/green, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "m" = ( /turf/open/floor/carpet/edge{ dir = 10 }, -/area/vehicle/apc) +/area/interior/fancylocker) "n" = ( /turf/open/floor/carpet/edge, -/area/vehicle/apc) +/area/interior/fancylocker) "o" = ( /turf/open/floor/carpet/edge{ dir = 6 }, -/area/vehicle/apc) +/area/interior/fancylocker) "p" = ( /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "q" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "r" = ( /obj/structure/coatrack, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "s" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/chem_dispenser/soda, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "t" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/chem_dispenser/soda/beer, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "u" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/snacks/milosoup{ @@ -103,12 +104,12 @@ dir = 1 }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "v" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/snacks/appletart, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "w" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/reagent_container/food/snacks/popcorn{ @@ -124,33 +125,33 @@ pixel_x = 5 }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "x" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/ashtray/bronze, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "y" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/clothing/mask/cigarette/cigar/cohiba, /obj/item/tool/lighter/zippo, /turf/open/floor/carpet, -/area/vehicle/apc) +/area/interior/fancylocker) "z" = ( /obj/structure/bed/chair/wood/wings{ icon_state = "wooden_chair_wings"; dir = 4 }, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "A" = ( /obj/structure/machinery/disposal, /turf/open/floor/wood, -/area/vehicle/apc) +/area/interior/fancylocker) "B" = ( /obj/structure/machinery/light, /turf/open/floor/carpet/edge, -/area/vehicle/apc) +/area/interior/fancylocker) (1,1,1) = {" a diff --git a/maps/interiors/tank.dmm b/maps/interiors/tank.dmm index 75da1e24f72d..f2714401a03d 100644 --- a/maps/interiors/tank.dmm +++ b/maps/interiors/tank.dmm @@ -18,7 +18,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_12" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "c" = ( /obj/structure/prop/tank{ icon_state = "prop2"; @@ -39,7 +39,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_3" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "e" = ( /obj/effect/landmark/interior/spawn/vehicle_gunner_seat/armor{ dir = 4 @@ -47,7 +47,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_13" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "f" = ( /obj/structure/prop/tank{ pixel_x = 0 @@ -55,7 +55,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_1_1" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "g" = ( /obj/structure/interior_wall/tank{ alpha = 50; @@ -102,7 +102,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_8" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "v" = ( /obj/structure/interior_wall/tank{ layer = 2 @@ -158,7 +158,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_7" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "H" = ( /obj/structure/interior_wall/tank{ icon_state = "exterior_3"; @@ -175,7 +175,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_4" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "T" = ( /obj/structure/prop/tank{ icon_state = "prop1"; @@ -184,7 +184,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_9" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) "Z" = ( /obj/structure/vehicle_locker/tank{ pixel_y = 11 @@ -201,7 +201,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_11" }, -/area/vehicle/tank) +/area/interior/vehicle/tank) (1,1,1) = {" j diff --git a/maps/interiors/van.dmm b/maps/interiors/van.dmm index 27a42dd93fd7..309160f38c1d 100644 --- a/maps/interiors/van.dmm +++ b/maps/interiors/van.dmm @@ -13,7 +13,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_10" }, -/area/vehicle/van) +/area/interior/vehicle/van) "e" = ( /obj/structure/interior_wall/van{ icon_state = "background_1" @@ -38,7 +38,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_1" }, -/area/vehicle/van) +/area/interior/vehicle/van) "i" = ( /obj/structure/interior_wall/van{ icon_state = "front_1" @@ -71,7 +71,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_8" }, -/area/vehicle/van) +/area/interior/vehicle/van) "r" = ( /obj/structure/interior_wall/van{ icon_state = "background_3" @@ -94,7 +94,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_7" }, -/area/vehicle/van) +/area/interior/vehicle/van) "t" = ( /obj/effect/landmark/interior/spawn/entrance{ dir = 1; @@ -115,7 +115,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_11" }, -/area/vehicle/van) +/area/interior/vehicle/van) "v" = ( /obj/structure/interior_wall/van{ icon_state = "interior_door" @@ -152,7 +152,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_3_12" }, -/area/vehicle/van) +/area/interior/vehicle/van) "z" = ( /obj/structure/interior_wall/van{ icon_state = "back_1" @@ -181,7 +181,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_9" }, -/area/vehicle/van) +/area/interior/vehicle/van) "J" = ( /obj/structure/interior_wall/van{ alpha = 50; @@ -202,7 +202,7 @@ /turf/open/shuttle/vehicle{ icon_state = "floor_1_2" }, -/area/vehicle/van) +/area/interior/vehicle/van) "O" = ( /turf/open/void/vehicle, /area/space) diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 48f7f9089399..30ef6b33d69a 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -9,13 +9,10 @@ }, /area/space) "aac" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, /turf/open/mars_cave{ - icon_state = "mars_cave_7" + icon_state = "mars_cave_19" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/n) "aad" = ( /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -579,7 +576,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_19" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abM" = ( /turf/open/mars_cave{ icon_state = "mars_cave_5" @@ -590,7 +587,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_2" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abO" = ( /turf/open/mars_cave, /area/bigredv2/caves_north) @@ -636,7 +633,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_6" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abV" = ( /turf/open/mars_cave{ icon_state = "mars_cave_11" @@ -647,23 +644,18 @@ /turf/open/mars_cave{ icon_state = "mars_cave_2" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abX" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abY" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, /turf/open/mars_cave{ icon_state = "mars_cave_7" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "abZ" = ( /obj/structure/machinery/light{ dir = 1 @@ -679,26 +671,11 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/space_port) -"acb" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, -/turf/open/mars_cave{ - icon_state = "mars_cave_2" - }, -/area/bigredv2/caves_north) "acc" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, /turf/open/mars_cave{ icon_state = "mars_cave_15" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "acd" = ( /obj/effect/landmark/good_item, /turf/open/floor/plating, @@ -736,9 +713,9 @@ /area/bigredv2/outside/space_port) "ack" = ( /turf/open/mars_cave{ - icon_state = "mars_cave_23" + icon_state = "mars_dirt_6" }, -/area/bigredv2/caves_north) +/area/bigredv2/caves_lambda) "acl" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -842,7 +819,6 @@ }, /area/bigredv2/outside/marshal_office) "acE" = ( -/obj/structure/window/reinforced, /obj/structure/machinery/botany, /turf/open/floor{ icon_state = "white" @@ -856,12 +832,10 @@ }, /area/bigredv2/outside/marshal_office) "acG" = ( -/obj/structure/window/reinforced, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "white" +/turf/open/mars_cave{ + icon_state = "mars_cave_18" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "acH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -1317,9 +1291,6 @@ /area/bigredv2/outside/marshal_office) "adX" = ( /obj/structure/bookcase/manuals/engineering, -/obj/structure/machinery/light{ - dir = 1 - }, /turf/open/floor{ icon_state = "wood" }, @@ -1327,6 +1298,9 @@ "adY" = ( /obj/structure/closet/secure_closet/detective, /obj/item/weapon/gun/smg/fp9000, +/obj/structure/machinery/light{ + dir = 1 + }, /turf/open/floor{ icon_state = "wood" }, @@ -3036,8 +3010,7 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "aiN" = ( -/obj/structure/surface/table, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/structure/machinery/computer/prisoner, /turf/open/floor, /area/bigredv2/outside/marshal_office) "aiO" = ( @@ -3336,15 +3309,10 @@ }, /area/bigredv2/outside/marshal_office) "ajD" = ( -/obj/structure/machinery/power/apc{ - dir = 1; - start_charge = 0 - }, -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_cave_16" }, -/area/bigredv2/outside/telecomm/n_cave) +/area/bigredv2/outside/n) "ajE" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -3538,6 +3506,10 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ dir = 8; icon_state = "red" @@ -3545,14 +3517,10 @@ /area/bigredv2/outside/marshal_office) "akg" = ( /obj/effect/landmark/static_comms/net_one, -/turf/open/floor, -/area/bigredv2/outside/marshal_office) -"akh" = ( /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "bcircuit" }, -/area/bigredv2/outside/telecomm/n_cave) +/area/bigredv2/outside/marshal_office) "aki" = ( /obj/structure/surface/table, /obj/item/clothing/mask/gas, @@ -3609,7 +3577,8 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "akr" = ( -/obj/structure/machinery/computer/prisoner, +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor, /area/bigredv2/outside/marshal_office) "aks" = ( @@ -3757,22 +3726,25 @@ }, /area/bigredv2/outside/marshal_office) "akN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ icon_state = "red" }, /area/bigredv2/outside/marshal_office) "akO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor{ dir = 6; icon_state = "red" }, /area/bigredv2/outside/marshal_office) -"akP" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/telecomm/n_cave) "akQ" = ( /obj/structure/surface/table/reinforced, /obj/structure/machinery/door/window/brigdoor/southright, @@ -3848,14 +3820,6 @@ icon_state = "whitepurplefull" }, /area/bigredv2/caves/lambda/xenobiology) -"ald" = ( -/obj/structure/surface/table/reinforced, -/obj/item/book/manual/research_and_development, -/turf/open/floor{ - dir = 4; - icon_state = "whitepurple" - }, -/area/bigredv2/caves/lambda/xenobiology) "ale" = ( /obj/effect/landmark/xeno_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -3925,21 +3889,11 @@ }, /area/bigredv2/outside/nw) "alp" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - dir = 1; - name = "\improper Marshal Office Evidence Room" - }, +/obj/structure/machinery/light, /turf/open/floor{ - icon_state = "delivery" + icon_state = "bcircuit" }, /area/bigredv2/outside/marshal_office) -"alq" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/bigredv2/outside/telecomm/n_cave) "alr" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor, @@ -3991,13 +3945,12 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "aly" = ( -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, /obj/structure/bed/chair{ dir = 4 }, +/obj/structure/barricade/handrail{ + dir = 4 + }, /turf/open/floor, /area/bigredv2/outside/marshal_office) "alz" = ( @@ -4307,16 +4260,15 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "amv" = ( -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, /obj/structure/bed/chair{ dir = 4 }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/structure/barricade/handrail{ + dir = 4 + }, /turf/open/floor, /area/bigredv2/outside/marshal_office) "amw" = ( @@ -4621,9 +4573,10 @@ /turf/open/floor/plating, /area/bigredv2/caves/lambda/xenobiology) "ann" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall/solaris, -/area/bigredv2/outside/general_offices) +/turf/open/mars_cave{ + icon_state = "mars_dirt_5" + }, +/area/bigredv2/outside/n) "ano" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ name = "\improper Lambda Lab Maintenance Storage" @@ -4652,14 +4605,11 @@ }, /area/bigredv2/outside/medical) "ant" = ( -/obj/structure/window/framed/solaris, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "Dormitories"; - name = "\improper Dormitories Shutters" +/turf/open/floor{ + dir = 6; + icon_state = "asteroidwarning" }, -/turf/open/floor/plating, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "anu" = ( /obj/structure/machinery/light{ dir = 4 @@ -4824,13 +4774,10 @@ /turf/closed/wall/solaris, /area/bigredv2/outside/hydroponics) "anU" = ( -/obj/structure/window/framed/solaris, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Greenhouse"; - name = "\improper Greenhouse Shutters" +/turf/open/mars_cave{ + icon_state = "mars_cave_20" }, -/turf/open/floor/plating, -/area/bigredv2/outside/hydroponics) +/area/bigredv2/caves_lambda) "anV" = ( /obj/item/reagent_container/spray/pepper, /turf/open/floor{ @@ -4863,8 +4810,8 @@ /turf/open/floor/plating, /area/bigredv2/outside/medical) "aoa" = ( -/turf/closed/wall/solaris/reinforced/hull, -/area/bigredv2/outside/virology) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/caves_north) "aob" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/lambda/virology) @@ -4970,14 +4917,14 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "aor" = ( -/obj/structure/machinery/washing_machine, /obj/item/clothing/under/darkred, +/obj/structure/surface/rack, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/general_offices) "aos" = ( -/obj/structure/machinery/washing_machine, +/obj/structure/surface/rack, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -4985,6 +4932,9 @@ "aot" = ( /obj/structure/machinery/washing_machine, /obj/item/clothing/under/brown, +/obj/structure/machinery/washing_machine{ + pixel_y = 13 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -5224,7 +5174,6 @@ }, /area/bigredv2/outside/general_offices) "apf" = ( -/obj/item/clothing/under/darkred, /obj/structure/pipes/vents/pump/on, /turf/open/floor{ icon_state = "freezerfloor" @@ -5723,7 +5672,7 @@ }, /area/bigredv2/outside/medical) "aqv" = ( -/obj/structure/bed, +/obj/structure/machinery/cm_vending/sorted/medical/no_access, /turf/open/floor{ icon_state = "white" }, @@ -5742,7 +5691,6 @@ /turf/open/floor/plating, /area/bigredv2/outside/library) "aqy" = ( -/obj/structure/bed/roller, /obj/structure/machinery/light{ dir = 1 }, @@ -5751,6 +5699,7 @@ name = "Storm Shutters"; pixel_y = 32 }, +/obj/structure/bed, /turf/open/floor{ icon_state = "white" }, @@ -5764,7 +5713,10 @@ /turf/open/floor/plating, /area/bigredv2/outside/bar) "aqB" = ( -/obj/structure/machinery/computer/crew, +/obj/structure/machinery/computer/crew{ + density = 0; + pixel_y = 16 + }, /turf/open/floor{ icon_state = "whitegreenfull" }, @@ -5776,23 +5728,23 @@ icon_state = "whitebluefull" }, /area/bigredv2/outside/medical) -"aqD" = ( -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "aqE" = ( -/obj/structure/morgue{ - dir = 8 +/obj/structure/machinery/camera/autoname{ + dir = 1 }, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "aqF" = ( -/obj/structure/morgue, +/obj/structure/surface/table, +/obj/item/bodybag, +/obj/item/bodybag, +/obj/item/bodybag, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "whitegreen" }, /area/bigredv2/outside/medical) "aqG" = ( @@ -5800,8 +5752,7 @@ dir = 5 }, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "asteroidwarning" }, /area/bigredv2/outside/n) "aqH" = ( @@ -5928,14 +5879,14 @@ /area/bigredv2/caves/lambda/breakroom) "aqZ" = ( /obj/structure/noticeboard{ - dir = 1; - pixel_y = 30; desc = "A board for pinning important items upon."; - name = "trophy board" + dir = 1; + name = "trophy board"; + pixel_y = 30 }, /obj/item/XenoBio/Chitin{ - pixel_y = 27; - anchored = 1 + anchored = 1; + pixel_y = 27 }, /turf/open/floor{ dir = 1; @@ -6019,7 +5970,7 @@ }, /area/bigredv2/outside/medical) "ark" = ( -/obj/structure/bed/roller, +/obj/structure/bed, /turf/open/floor{ icon_state = "white" }, @@ -6036,16 +5987,12 @@ }, /area/bigredv2/outside/medical) "arn" = ( -/obj/structure/machinery/computer/med_data, -/turf/open/floor{ - icon_state = "whitegreenfull" +/obj/structure/machinery/computer/med_data{ + density = 0; + pixel_y = 16 }, -/area/bigredv2/outside/medical) -"aro" = ( -/obj/structure/machinery/optable, -/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - icon_state = "dark" + icon_state = "white" }, /area/bigredv2/outside/medical) "arp" = ( @@ -6061,7 +6008,7 @@ /area/bigredv2/outside/n) "arr" = ( /turf/open/mars{ - icon_state = "mars_dirt_14" + icon_state = "mars_dirt_12" }, /area/bigredv2/outside/n) "ars" = ( @@ -6071,26 +6018,24 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "art" = ( -/obj/structure/machinery/washing_machine, +/obj/structure/surface/table, /obj/item/clothing/under/lightbrown, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/general_offices) "aru" = ( -/obj/structure/machinery/washing_machine, +/obj/structure/surface/table, /obj/structure/machinery/light, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/general_offices) "arv" = ( -/obj/structure/machinery/washing_machine, -/obj/item/clothing/under/lightred, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_10" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/n) "arw" = ( /obj/structure/machinery/power/apc, /turf/open/floor/plating, @@ -6114,14 +6059,13 @@ }, /area/bigredv2/outside/general_offices) "arz" = ( -/obj/structure/toilet{ - pixel_y = 8 +/obj/structure/prop/vehicles/crawler{ + icon_state = "crawler_covered_bed" }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/caves_lambda) "arA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, @@ -6272,7 +6216,6 @@ /obj/structure/pipes/vents/pump{ dir = 8 }, -/obj/structure/bed/roller, /turf/open/floor{ icon_state = "white" }, @@ -6298,12 +6241,6 @@ icon_state = "whitegreencorner" }, /area/bigredv2/outside/medical) -"arY" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "arZ" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/down, /turf/open/mars{ @@ -6404,7 +6341,9 @@ /area/bigredv2/outside/virology) "asm" = ( /obj/item/device/flashlight/lantern, -/turf/open/mars, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, /area/bigredv2/outside/ne) "asn" = ( /obj/structure/surface/rack, @@ -6552,15 +6491,11 @@ /area/bigredv2/outside/medical) "asG" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/surface/table, -/obj/item/bodybag, -/obj/item/bodybag, -/obj/item/bodybag, -/obj/item/bodybag, /turf/open/floor{ - icon_state = "dark" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "asH" = ( /obj/structure/window/framed/solaris, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -6670,14 +6605,6 @@ icon_state = "dark" }, /area/bigredv2/outside/general_offices) -"asZ" = ( -/obj/structure/surface/rack, -/obj/item/stack/sheet/mineral/diamond, -/obj/item/clothing/under/redcoat, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/general_offices) "ata" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -6798,16 +6725,16 @@ }, /area/bigredv2/outside/medical) "atp" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/bed/roller, /turf/open/floor{ icon_state = "white" }, /area/bigredv2/outside/medical) "atq" = ( -/obj/structure/machinery/cm_vending/sorted/medical/no_access, +/obj/structure/bed/roller, /turf/open/floor{ icon_state = "white" }, @@ -6823,33 +6750,35 @@ dir = 5 }, /obj/structure/surface/table, -/obj/item/bodybag, -/obj/item/bodybag, -/obj/item/bodybag, +/obj/structure/machinery/light, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "att" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "atu" = ( /obj/structure/machinery/light, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "atv" = ( -/obj/structure/machinery/camera/autoname{ - dir = 1 +/obj/structure/morgue{ + dir = 2 }, /turf/open/floor{ - icon_state = "dark" + dir = 9; + icon_state = "whiteblue" }, /area/bigredv2/outside/medical) "atw" = ( @@ -7050,11 +6979,13 @@ }, /area/bigredv2/outside/medical) "atW" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/medical{ - dir = 1; - name = "\improper Medical Clinic Morgue" +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/colony{ + name = "\improper Medical Clinic" }, +/obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ icon_state = "delivery" }, @@ -7210,12 +7141,6 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/breakroom) -"aus" = ( -/turf/open/floor{ - dir = 10; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/telecomm/n_cave) "aut" = ( /turf/open/floor{ dir = 4; @@ -7344,6 +7269,7 @@ }, /area/bigredv2/outside/medical) "auJ" = ( +/obj/structure/bed/roller, /turf/open/floor{ dir = 9; icon_state = "whitegreen" @@ -7379,6 +7305,10 @@ }, /area/bigredv2/outside/medical) "auO" = ( +/obj/structure/surface/table, +/obj/item/bodybag, +/obj/item/bodybag, +/obj/item/bodybag, /turf/open/floor{ dir = 5; icon_state = "whitegreen" @@ -7390,15 +7320,10 @@ icon_state = "whiteblue" }, /area/bigredv2/outside/medical) -"auQ" = ( -/obj/structure/machinery/medical_pod/sleeper, -/turf/open/floor{ - dir = 1; - icon_state = "whiteblue" - }, -/area/bigredv2/outside/medical) "auR" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/morgue{ + dir = 2 + }, /turf/open/floor{ dir = 1; icon_state = "whiteblue" @@ -7408,13 +7333,17 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/morgue{ + dir = 2 + }, /turf/open/floor{ dir = 1; icon_state = "whiteblue" }, /area/bigredv2/outside/medical) "auT" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/surface/table, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 5; icon_state = "whiteblue" @@ -7441,8 +7370,10 @@ /turf/closed/wall/solaris/reinforced/hull, /area/bigredv2/outside/c) "auX" = ( -/obj/structure/window/framed/solaris/reinforced, -/turf/open/floor/plating, +/obj/structure/barricade/handrail, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, /area/bigredv2/outside/c) "auY" = ( /turf/open/floor/carpet, @@ -7677,13 +7608,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/dorms) -"avE" = ( -/obj/structure/machinery/camera/autoname{ - dir = 4; - pixel_y = 21 - }, -/turf/open/floor, -/area/bigredv2/outside/dorms) "avF" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -7724,12 +7648,10 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "avK" = ( -/obj/structure/machinery/light{ - dir = 1 +/turf/open/mars_cave{ + icon_state = "mars_cave_20" }, -/obj/structure/machinery/vending/cola, -/turf/open/floor, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/n) "avM" = ( /obj/structure/machinery/light{ dir = 8 @@ -7870,9 +7792,10 @@ }, /area/bigredv2/caves/lambda/research) "awf" = ( -/obj/structure/window/framed/solaris, -/turf/open/floor/plating, -/area/bigredv2/outside/office_complex) +/turf/open/mars_cave{ + icon_state = "mars_cave_17" + }, +/area/bigredv2/caves_lambda) "awg" = ( /obj/effect/decal/cleanable/blood, /obj/structure/pipes/standard/simple/hidden/green{ @@ -7901,8 +7824,8 @@ }, /area/bigredv2/outside/medical) "awj" = ( -/obj/structure/machinery/door/airlock/almayer/medical/glass/colony{ - name = "\improper Medical Clinic Scanner Room" +/obj/structure/machinery/door/airlock/almayer/medical{ + name = "\improper Medical Clinic Morgue" }, /turf/open/floor{ icon_state = "delivery" @@ -7921,7 +7844,7 @@ }, /area/bigredv2/outside/medical) "awm" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/machinery/optable, /turf/open/floor{ dir = 4; icon_state = "whiteblue" @@ -7992,12 +7915,17 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "awx" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, -/area/bigredv2/outside/general_offices) +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/outside/n) "awy" = ( /obj/effect/landmark/crap_item, -/turf/open/mars, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, /area/bigredv2/outside/ne) "awz" = ( /obj/item/ashtray/bronze{ @@ -8219,7 +8147,6 @@ /area/bigredv2/outside/dorms) "axf" = ( /obj/structure/pipes/vents/pump, -/obj/effect/decal/cleanable/blood/gibs/limb, /turf/open/floor{ icon_state = "grimy" }, @@ -8262,9 +8189,11 @@ /turf/open/floor, /area/bigredv2/outside/general_offices) "axm" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor, -/area/bigredv2/outside/general_offices) +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_14" + }, +/area/bigredv2/outside/n) "axn" = ( /obj/structure/window/reinforced/toughened{ dir = 1; @@ -8385,20 +8314,15 @@ icon_state = "whitegreen" }, /area/bigredv2/outside/medical) -"axC" = ( -/obj/structure/machinery/medical_pod/sleeper, -/turf/open/floor{ - icon_state = "whiteblue" - }, -/area/bigredv2/outside/medical) "axD" = ( -/obj/structure/machinery/sleep_console, +/obj/structure/morgue{ + dir = 1 + }, /turf/open/floor{ icon_state = "whiteblue" }, /area/bigredv2/outside/medical) "axE" = ( -/obj/structure/machinery/sleep_console, /turf/open/floor{ dir = 6; icon_state = "whiteblue" @@ -8719,19 +8643,11 @@ icon_state = "wood" }, /area/bigredv2/outside/general_offices) -"ayy" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, -/area/bigredv2/outside/general_offices) "ayz" = ( -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_15" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "ayA" = ( /obj/structure/machinery/vending/snack, /obj/structure/machinery/light, @@ -8897,9 +8813,6 @@ /obj/structure/machinery/light{ dir = 4 }, -/obj/structure/machinery/power/apc{ - dir = 1 - }, /turf/open/floor/plating, /area/bigredv2/outside/medical) "ayX" = ( @@ -8951,7 +8864,7 @@ dir = 1; icon_state = "asteroidfloor" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "azf" = ( /obj/effect/landmark/crap_item, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -9152,13 +9065,11 @@ /turf/open/floor/plating, /area/bigredv2/outside/engineering) "azF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ - icon_state = "mars_cave_2" + icon_state = "mars_dirt_4" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/n) "azG" = ( /obj/structure/window/framed/solaris, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -9209,8 +9120,8 @@ /turf/open/floor, /area/bigredv2/outside/dorms) "azR" = ( -/turf/closed/wall/solaris/reinforced/hull, -/area/bigredv2/caves) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/w) "azS" = ( /obj/structure/machinery/vending/snack{ icon_state = "snack-broken"; @@ -9251,18 +9162,7 @@ /turf/open/floor, /area/bigredv2/outside/dorms) "azX" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door_control{ - id = "Dormitories"; - name = "Storm Shutters"; - pixel_y = -32 - }, -/obj/structure/machinery/camera/autoname{ - dir = 4; - pixel_y = -16 - }, +/obj/structure/machinery/camera/autoname, /turf/open/floor, /area/bigredv2/outside/dorms) "azY" = ( @@ -9302,19 +9202,22 @@ /turf/open/floor{ icon_state = "delivery" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "aAd" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ + dir = 1; + name = "\improper Marshal Office Evidence Room" }, -/turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/marshal_office) "aAe" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, /turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "aAf" = ( /obj/structure/machinery/light{ dir = 1 @@ -9325,12 +9228,10 @@ /turf/open/floor/plating, /area/bigredv2/outside/bar) "aAh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_9" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "aAi" = ( /turf/open/floor{ dir = 8; @@ -9469,10 +9370,6 @@ /area/bigredv2/outside/dorms) "aAD" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Dormitories Restroom" - }, /turf/open/floor{ icon_state = "delivery" }, @@ -9487,14 +9384,15 @@ }, /area/bigredv2/outside/dorms) "aAF" = ( +/obj/structure/window_frame/solaris, /turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/marshal_office) "aAG" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, /turf/open/floor/plating, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "aAH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -9785,10 +9683,6 @@ icon_state = "wood" }, /area/bigredv2/outside/dorms) -"aBt" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor/plating, -/area/bigredv2/outside/dorms) "aBu" = ( /turf/open/floor{ icon_state = "asteroidwarning" @@ -9803,14 +9697,11 @@ /area/bigredv2/caves/eta/research) "aBx" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/almayer/medical/glass/colony{ - dir = 1; - name = "\improper Greenhouse" - }, /turf/open/floor{ - icon_state = "delivery" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/hydroponics) +/area/bigredv2/outside/ne) "aBy" = ( /obj/structure/window/framed/solaris/reinforced, /turf/open/floor/plating, @@ -9968,6 +9859,9 @@ pixel_x = -12; pixel_y = 2 }, +/obj/structure/mirror{ + pixel_x = -28 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -9988,13 +9882,11 @@ }, /area/bigredv2/outside/dorms) "aBY" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/turf/open/floor{ - icon_state = "freezerfloor" +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aBZ" = ( /obj/structure/bed/stool, /turf/open/floor{ @@ -10017,23 +9909,28 @@ }, /area/bigredv2/outside/ne) "aCd" = ( -/turf/open/mars{ - icon_state = "mars_dirt_3" +/turf/open/mars_cave{ + icon_state = "mars_cave_16" }, /area/bigredv2/outside/ne) "aCe" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/eta/xenobiology) "aCf" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor{ - icon_state = "whitegreenfull" +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" }, -/area/bigredv2/outside/hydroponics) +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_lambda) "aCg" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Greenhouse Storage" + }, /turf/open/floor{ - icon_state = "whitegreenfull" + icon_state = "delivery" }, /area/bigredv2/outside/hydroponics) "aCh" = ( @@ -10284,11 +10181,9 @@ }, /area/bigredv2/outside/bar) "aCQ" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Dormitories Restroom" - }, +/obj/effect/decal/cleanable/blood/gibs/limb, /turf/open/floor{ - icon_state = "delivery" + icon_state = "grimy" }, /area/bigredv2/outside/dorms) "aCR" = ( @@ -10324,18 +10219,19 @@ /area/bigredv2/outside/bar) "aCV" = ( /obj/effect/landmark/hunter_primary, -/turf/open/mars, -/area/bigredv2/outside/ne) -"aCW" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/ne) "aCX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, /area/bigredv2/outside/hydroponics) "aCY" = ( /obj/effect/decal/cleanable/dirt, @@ -10458,6 +10354,11 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"aDo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/barrel, +/turf/open/floor, +/area/bigredv2/outside/cargo) "aDp" = ( /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, @@ -10687,21 +10588,15 @@ /turf/open/floor, /area/bigredv2/outside/dorms) "aDR" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_19" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aDT" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_17" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aDU" = ( /obj/structure/closet/athletic_mixed, /obj/structure/machinery/light{ @@ -10773,19 +10668,17 @@ /turf/open/floor, /area/bigredv2/outside/hydroponics) "aEe" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "whitegreenfull" +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" }, -/area/bigredv2/outside/hydroponics) +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_north) "aEf" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, -/turf/open/floor{ - icon_state = "whitegreenfull" - }, +/turf/open/floor, /area/bigredv2/outside/hydroponics) "aEg" = ( /obj/effect/decal/cleanable/dirt, @@ -10919,13 +10812,12 @@ }, /area/bigredv2/outside/medical) "aEB" = ( -/obj/structure/surface/table, /obj/structure/pipes/vents/pump, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "aEC" = ( /obj/effect/decal/cleanable/blood/gibs/body, /turf/open/floor{ @@ -10990,8 +10882,7 @@ /area/bigredv2/outside/dorms) "aEL" = ( /obj/structure/machinery/camera/autoname{ - dir = 1; - pixel_x = -14 + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor, @@ -11042,7 +10933,10 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, /area/bigredv2/outside/hydroponics) "aET" = ( /obj/effect/decal/cleanable/dirt, @@ -11060,8 +10954,12 @@ /turf/open/floor, /area/bigredv2/outside/hydroponics) "aEV" = ( -/turf/closed/wall/solaris/rock, -/area/bigredv2/outside/virology) +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor, +/area/bigredv2/outside/cargo) "aEW" = ( /obj/item/tool/hatchet, /obj/effect/decal/cleanable/dirt, @@ -11383,23 +11281,25 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/machinery/recharge_station, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/dorms) "aFR" = ( -/obj/item/tool/hatchet, +/obj/structure/toilet{ + dir = 1 + }, +/obj/effect/landmark/lv624/xeno_tunnel, /turf/open/floor{ icon_state = "freezerfloor" }, /area/bigredv2/outside/dorms) "aFS" = ( -/obj/item/tool/surgery/hemostat, -/obj/effect/decal/cleanable/blood, -/turf/open/floor{ - icon_state = "freezerfloor" +/turf/open/mars_cave{ + icon_state = "mars_cave_20" }, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/ne) "aFT" = ( /obj/structure/surface/table/woodentable, /obj/item/device/radio, @@ -11454,13 +11354,15 @@ }, /area/bigredv2/outside/bar) "aFZ" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "lambda"; + name = "Lambda Lockdown" + }, /turf/open/floor{ - icon_state = "whitegreenfull" + icon_state = "delivery" }, -/area/bigredv2/outside/hydroponics) +/area/bigredv2/caves_north) "aGa" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -11756,7 +11658,10 @@ /area/bigredv2/outside/bar) "aGK" = ( /obj/structure/machinery/light, -/turf/open/floor, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, /area/bigredv2/outside/hydroponics) "aGL" = ( /obj/structure/machinery/biogenerator, @@ -13147,13 +13052,13 @@ }, /area/bigredv2/outside/bar) "aKA" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/turf/open/mars_cave{ + icon_state = "mars_cave_6" }, /area/bigredv2/outside/ne) "aKB" = ( /turf/open/mars{ - icon_state = "mars_dirt_14" + icon_state = "mars_dirt_11" }, /area/bigredv2/outside/ne) "aKC" = ( @@ -13430,8 +13335,10 @@ /obj/structure/surface/table, /obj/structure/machinery/light, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "aLo" = ( /obj/structure/surface/table, /obj/item/device/radio, @@ -17649,11 +17556,6 @@ icon_state = "whitebluefull" }, /area/bigredv2/outside/general_store) -"aWy" = ( -/turf/open/floor{ - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/telecomm/n_cave) "aWz" = ( /obj/structure/showcase{ icon_state = "bus" @@ -18050,7 +17952,9 @@ /obj/structure/machinery/door/airlock/almayer/maint/colony{ name = "\improper General Store Storage" }, -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "aXL" = ( /obj/effect/decal/cleanable/dirt, @@ -18154,14 +18058,17 @@ /turf/open/floor/plating, /area/bigredv2/outside/cargo) "aYe" = ( -/obj/structure/surface/rack, +/obj/structure/window/framed/solaris, +/obj/structure/curtain, /turf/open/floor/plating, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/medical) "aYf" = ( /obj/structure/machinery/light, -/obj/structure/surface/rack, -/turf/open/floor/plating, -/area/bigredv2/outside/cargo) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) "aYh" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -18530,12 +18437,21 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "aZp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, /turf/open/floor{ dir = 9; icon_state = "red" }, /area/bigredv2/outside/marshal_office) "aZq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, /turf/open/floor{ dir = 1; icon_state = "red" @@ -18670,6 +18586,11 @@ /area/bigredv2/outside/cargo) "aZP" = ( /obj/structure/machinery/camera/autoname, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1; + pixel_y = -1 + }, /turf/open/floor{ dir = 5; icon_state = "red" @@ -18887,10 +18808,9 @@ }, /area/bigredv2/outside/chapel) "bax" = ( -/turf/open/mars{ - icon_state = "mars_dirt_11" - }, -/area/bigredv2/outside/w) +/obj/structure/closet/emcloset, +/turf/open/floor, +/area/bigredv2/outside/cargo) "bay" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -19505,10 +19425,12 @@ }, /area/bigredv2/outside/virology) "bcp" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "bcq" = ( /obj/effect/landmark/crap_item, /turf/open/floor{ @@ -19518,18 +19440,19 @@ /area/bigredv2/outside/w) "bcr" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bcs" = ( -/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + dir = 8; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bct" = ( /obj/structure/barricade/wooden{ desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; @@ -19785,9 +19708,11 @@ }, /area/bigredv2/outside/chapel) "bdf" = ( +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "loadingarea" }, /area/bigredv2/outside/cargo) "bdg" = ( @@ -20042,7 +19967,7 @@ dir = 1; icon_state = "asteroidfloor" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/w) "bec" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor, @@ -20052,9 +19977,9 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bee" = ( -/obj/structure/closet/emcloset, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/kelland/left, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bef" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, @@ -20156,10 +20081,9 @@ }, /area/bigredv2/outside/w) "bew" = ( -/turf/open/floor{ - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/kelland/right, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bex" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -20167,7 +20091,6 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bey" = ( -/obj/structure/closet/emcloset, /obj/structure/pipes/vents/pump{ dir = 8 }, @@ -20284,20 +20207,18 @@ }, /area/bigredv2/outside/w) "beR" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/cargo) -"beS" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 8; icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/w) +"beS" = ( +/obj/structure/lz_sign/solaris_sign, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "beT" = ( /obj/structure/machinery/light{ dir = 8 @@ -20377,22 +20298,25 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/office_complex) "bfg" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper General Store Maintenance" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, -/area/bigredv2/outside/office_complex) +/area/bigredv2/outside/cargo) "bfh" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 }, /turf/open/floor{ icon_state = "dark" @@ -20525,7 +20449,6 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/closet/emcloset/legacy, /turf/open/floor{ dir = 1; icon_state = "bot" @@ -20598,8 +20521,8 @@ }, /area/bigredv2/outside/office_complex) "bfK" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 8 }, /turf/open/floor{ icon_state = "dark" @@ -20659,13 +20582,13 @@ /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "bfU" = ( /obj/effect/landmark/hunter_secondary, /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "bfV" = ( /obj/structure/largecrate/random, /obj/effect/decal/cleanable/dirt, @@ -20675,13 +20598,12 @@ }, /area/bigredv2/outside/cargo) "bfW" = ( -/obj/structure/largecrate, /obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 1; - icon_state = "bot" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bfX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/trashcart, @@ -20831,12 +20753,10 @@ }, /area/bigredv2/outside/office_complex) "bgq" = ( -/obj/structure/closet/emcloset, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/mars{ + icon_state = "mars_dirt_14" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bgr" = ( /obj/structure/closet/secure_closet/security, /obj/effect/landmark/objective_landmark/close, @@ -20919,9 +20839,12 @@ }, /area/bigredv2/outside/office_complex) "bgC" = ( -/obj/effect/landmark/hunter_secondary, -/turf/open/mars, -/area/bigredv2/outside/w) +/obj/structure/closet/emcloset, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/cargo) "bgD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, @@ -21092,31 +21015,31 @@ }, /area/bigredv2/caves/mining) "bhb" = ( +/obj/structure/machinery/light, /turf/open/floor{ - icon_state = "floor4" + dir = 1; + icon_state = "bot" }, /area/bigredv2/outside/cargo) "bhc" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/pipes/vents/pump/on, /turf/open/floor{ - icon_state = "floor4" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bhd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "floor4" - }, -/area/bigredv2/outside/cargo) -"bhe" = ( -/obj/structure/machinery/light, /turf/open/floor{ dir = 1; - icon_state = "bot" + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) +"bhe" = ( +/obj/effect/landmark/hunter_secondary, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bhf" = ( /obj/structure/machinery/power/apc{ dir = 1 @@ -21233,11 +21156,9 @@ }, /area/bigredv2/outside/space_port_lz2) "bhD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "floor4" - }, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/arious/leftmid, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bhE" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/light{ @@ -21246,6 +21167,10 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bhH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ dir = 8; icon_state = "red" @@ -21264,12 +21189,22 @@ }, /area/bigredv2/outside/c) "bhM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, /turf/open/floor{ dir = 4; icon_state = "red" }, /area/bigredv2/outside/marshal_office) "bhN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, /turf/open/floor{ dir = 10; icon_state = "red" @@ -21307,8 +21242,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/c) "bhT" = ( @@ -21382,18 +21318,14 @@ dir = 4 }, /turf/open/floor{ - icon_state = "floor4" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bio" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/arious/rightmid, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "biq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ @@ -21596,22 +21528,22 @@ /obj/structure/machinery/camera/autoname/lz_camera, /turf/open/floor/plating, /area/bigredv2/outside/space_port_lz2) -"bjg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-in" - }, -/turf/open/floor, -/area/bigredv2/outside/cargo) "bjh" = ( /obj/item/reagent_container/spray/cleaner, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "floor4" + }, /area/bigredv2/outside/cargo) "bji" = ( /obj/item/reagent_container/glass/bottle/tramadol, /turf/open/floor, /area/bigredv2/outside/cargo) "bjj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/plating{ dir = 8; icon_state = "warnplate" @@ -21657,14 +21589,19 @@ }, /area/bigredv2/outside/space_port_lz2) "bjt" = ( -/obj/effect/decal/warning_stripes, -/obj/structure/machinery/constructable_frame{ - density = 1; - icon_state = "box_1" +/obj/structure/surface/table, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bjv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, /turf/open/floor/plating{ dir = 4; icon_state = "warnplate" @@ -21747,14 +21684,11 @@ }, /area/bigredv2/outside/s) "bjJ" = ( -/obj/structure/machinery/light{ - dir = 1 - }, /turf/open/floor{ - dir = 4; - icon_state = "redcorner" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/office_complex) +/area/bigredv2/caves_north) "bjK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -21794,17 +21728,12 @@ }, /area/bigredv2/outside/space_port_lz2) "bjP" = ( -/obj/structure/surface/table, -/obj/item/clothing/ears/earmuffs, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/arious/right, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bjQ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/turf/closed/wall/solaris, +/area/bigredv2/outside/space_port_lz2) "bjR" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -21816,6 +21745,10 @@ }, /area/bigredv2/outside/cargo) "bjX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor/plating{ icon_state = "warnplate" }, @@ -21859,8 +21792,9 @@ "bke" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/c) "bkf" = ( @@ -21890,10 +21824,9 @@ }, /area/bigredv2/outside/se) "bkk" = ( -/obj/effect/decal/warning_stripes, -/obj/structure/machinery/constructable_frame, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/cargo_container/horizontal/blue/top, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "bkl" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/science, @@ -22124,16 +22057,18 @@ }, /area/bigredv2/caves/lambda/xenobiology) "blb" = ( -/obj/structure/machinery/blackbox_recorder, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "blc" = ( -/obj/effect/decal/warning_stripes, -/obj/structure/machinery/constructable_frame{ - icon_state = "box_1" +/obj/structure/surface/table, +/obj/item/clothing/ears/earmuffs, +/turf/open/floor{ + icon_state = "asteroidwarning" }, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/area/bigredv2/outside/space_port_lz2) "bld" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tech_supply, @@ -23196,14 +23131,13 @@ /turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "boD" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor{ dir = 1; - name = "\improper Engineering Complex" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/engineering) +/area/bigredv2/outside/space_port_lz2) "boG" = ( /obj/structure/closet/secure_closet/engineering_electrical, /turf/open/floor/almayer{ @@ -23455,11 +23389,12 @@ }, /area/bigredv2/outside/space_port_lz2) "bpv" = ( +/obj/structure/pipes/vents/pump/on, /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/space_port_lz2) "bpx" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_4" @@ -23696,10 +23631,9 @@ /area/bigredv2/outside/space_port_lz2) "bqe" = ( /turf/open/floor{ - dir = 5; - icon_state = "asteroidwarning" + icon_state = "floor4" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/cargo) "bqf" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -23710,6 +23644,11 @@ }, /area/bigredv2/outside/engineering) "bqg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor/plating{ dir = 6; icon_state = "warnplate" @@ -23877,18 +23816,16 @@ }, /area/bigredv2/outside/space_port_lz2) "brc" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ - icon_state = "mars_cave_15" + icon_state = "mars_cave_9" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "brd" = ( /turf/open/floor{ icon_state = "asteroidwarning" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/space_port_lz2) "bre" = ( /obj/structure/bed/chair, /turf/open/floor{ @@ -24036,11 +23973,9 @@ /turf/open/floor/greengrid, /area/bigredv2/outside/filtration_cave_cas) "brG" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/sw) +/obj/structure/cargo_container/horizontal/blue/middle, +/turf/open/mars, +/area/bigredv2/outside/space_port_lz2) "brI" = ( /obj/structure/sign/safety/galley{ pixel_x = -32 @@ -24454,6 +24389,12 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"btv" = ( +/turf/open/floor{ + dir = 10; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "btw" = ( /turf/open/floor/plating, /area/bigredv2/outside/lz2_south_cas) @@ -24562,6 +24503,13 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/s) +"bup" = ( +/obj/item/stack/sheet/wood, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_north) "buu" = ( /turf/open/mars_cave{ icon_state = "mars_cave_17" @@ -24593,13 +24541,10 @@ }, /area/bigredv2/outside/s) "buP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, /turf/open/mars_cave{ - icon_state = "mars_dirt_5" + icon_state = "mars_dirt_6" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "buQ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -27835,6 +27780,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"bSc" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_14" + }, +/area/bigredv2/outside/ne) "bSw" = ( /obj/structure/cable{ icon_state = "1-4" @@ -27887,9 +27837,13 @@ /area/bigredv2/outside/cargo) "bYp" = ( /obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ dir = 1; - icon_state = "asteroidwarning" + icon_state = "asteroidfloor" }, /area/bigredv2/outside/telecomm/lz2_cave) "bYW" = ( @@ -27941,6 +27895,15 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/filtration_plant) +"ccU" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony{ + dir = 1; + name = "\improper Medical Clinic Power Station" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/medical) "cdA" = ( /turf/open/mars_cave{ icon_state = "mars_cave_5" @@ -27967,6 +27930,13 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"cfS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 6; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "cgt" = ( /turf/open/floor{ icon_state = "delivery" @@ -27979,6 +27949,11 @@ icon_state = "mars_cave_18" }, /area/bigredv2/caves_lambda) +"chy" = ( +/turf/open/mars{ + icon_state = "mars_dirt_13" + }, +/area/bigredv2/outside/n) "ciY" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -28046,6 +28021,18 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) +"cnO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/recharge_station, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) +"coc" = ( +/turf/open/mars{ + icon_state = "mars_dirt_12" + }, +/area/bigredv2/outside/ne) "coT" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor{ @@ -28082,6 +28069,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"crO" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_7" + }, +/area/bigredv2/outside/sw) "crQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -28134,9 +28126,14 @@ }, /area/bigredv2/caves/eta/xenobiology) "cwk" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/space_port_lz2) "cxi" = ( /obj/structure/machinery/light{ dir = 4 @@ -28406,6 +28403,16 @@ icon_state = "mars_cave_11" }, /area/bigredv2/caves_se) +"cVT" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_north) "cVY" = ( /turf/open/mars, /area/bigredv2/outside/space_port_lz2) @@ -28493,6 +28500,13 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"dhT" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "dij" = ( /obj/structure/fence, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -28511,9 +28525,10 @@ }, /area/bigredv2/outside/admin_building) "dlr" = ( -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor, -/area/bigredv2/outside/general_store) +/turf/open/mars_cave{ + icon_state = "mars_cave_13" + }, +/area/bigredv2/outside/n) "dmB" = ( /obj/item/tool/pickaxe, /turf/open/mars, @@ -28597,15 +28612,10 @@ }, /area/bigredv2/caves/lambda/research) "dtX" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 - }, /turf/open/mars_cave{ icon_state = "mars_cave_14" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "duo" = ( /obj/effect/landmark/corpsespawner/colonist/burst, /turf/open/floor/plating, @@ -28616,6 +28626,14 @@ }, /turf/open/gm/river, /area/bigredv2/outside/engineering) +"duI" = ( +/obj/structure/machinery/door/airlock/almayer/command/colony{ + name = "\improper Operations" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/admin_building) "dvB" = ( /obj/item/ore/coal{ pixel_x = 9; @@ -28632,6 +28650,19 @@ icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) +"dwe" = ( +/obj/item/tool/warning_cone{ + pixel_x = 16; + pixel_y = 14 + }, +/turf/open/mars, +/area/bigredv2/outside/n) +"dwg" = ( +/obj/structure/cargo_container/arious/rightmid, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "dwL" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -28670,6 +28701,11 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"dzs" = ( +/turf/open/mars{ + icon_state = "mars_dirt_8" + }, +/area/bigredv2/outside/n) "dzY" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -28858,6 +28894,13 @@ icon_state = "mars_cave_5" }, /area/bigredv2/outside/lambda_cave_cas) +"dMT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/ne) "dNd" = ( /obj/item/stack/cable_coil/cut, /turf/open/mars_cave{ @@ -28882,6 +28925,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dNH" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_7" + }, +/area/bigredv2/outside/n) "dOu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -28945,6 +28993,12 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"dTa" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_9" + }, +/area/bigredv2/outside/ne) "dUj" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -8; @@ -28975,11 +29029,10 @@ }, /area/bigredv2/outside/engineering) "dWg" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/mars_cave{ + icon_state = "mars_cave_13" }, -/area/bigredv2/outside/c) +/area/bigredv2/outside/ne) "dWl" = ( /obj/structure/closet/toolcloset, /turf/open/floor{ @@ -29098,6 +29151,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"eiS" = ( +/obj/structure/closet/coffin/woodencrate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "eju" = ( /obj/item/ore{ pixel_x = 9; @@ -29189,8 +29250,14 @@ }, /area/bigredv2/caves/mining) "erf" = ( -/turf/closed/wall/solaris, -/area/bigredv2/outside/c) +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor, +/area/bigredv2/outside/dorms) "ers" = ( /obj/effect/landmark/nightmare{ insert_tag = "etatunnel" @@ -29280,6 +29347,13 @@ icon_state = "asteroidwarning" }, /area/bigred/ground/garage_workshop) +"eyA" = ( +/obj/structure/largecrate/random/barrel/true_random, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "ezQ" = ( /obj/structure/largecrate/supply/supplies/flares, /turf/open/floor/plating{ @@ -29287,6 +29361,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"eAG" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_cave_20" + }, +/area/bigredv2/caves_north) "eAU" = ( /turf/open/floor{ dir = 4; @@ -29371,6 +29451,15 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"eIB" = ( +/obj/item/tool/warning_cone{ + pixel_y = 20 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "eIN" = ( /obj/structure/machinery/power/port_gen/pacman, /obj/effect/decal/cleanable/dirt, @@ -29473,7 +29562,7 @@ insert_tag = "crashlanding-eva" }, /turf/closed/wall/solaris, -/area/bigredv2/outside/dorms) +/area/bigredv2/outside/bar) "eSm" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -29536,6 +29625,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"eVZ" = ( +/turf/open/mars{ + icon_state = "mars_dirt_10" + }, +/area/bigredv2/outside/n) "eWd" = ( /turf/open/floor{ dir = 1; @@ -29581,13 +29675,10 @@ /turf/open/floor/plating, /area/bigredv2/caves/mining) "fbF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, /turf/open/mars_cave{ - icon_state = "mars_dirt_4" + icon_state = "mars_cave_9" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "fcG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, @@ -29605,6 +29696,15 @@ "fdy" = ( /turf/open/floor, /area/bigredv2/caves/eta/living) +"fdC" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "feN" = ( /turf/open/floor{ dir = 9; @@ -29713,6 +29813,14 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"foj" = ( +/obj/structure/largecrate/random/barrel/true_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "foB" = ( /turf/open/mars_cave{ icon_state = "mars_cave_22" @@ -29735,6 +29843,10 @@ }, /turf/closed/wall/wood, /area/bigredv2/caves/mining) +"fpt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/river, +/area/bigredv2/outside/c) "fus" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" @@ -29842,6 +29954,12 @@ icon_state = "dark" }, /area/bigredv2/outside/filtration_plant) +"fBU" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_13" + }, +/area/bigredv2/caves_north) "fCb" = ( /turf/open/floor, /area/bigredv2/outside/filtration_cave_cas) @@ -29960,6 +30078,11 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/xenobiology) +"fNh" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_9" + }, +/area/bigredv2/caves_lambda) "fOc" = ( /turf/open/mars_cave{ icon_state = "mars_cave_3" @@ -30078,6 +30201,13 @@ icon_state = "delivery" }, /area/bigredv2/outside/engineering) +"fVm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "fWw" = ( /turf/open/jungle{ bushes_spawn = 0; @@ -30138,6 +30268,12 @@ icon_state = "bcircuitoff" }, /area/bigredv2/caves/lambda/research) +"gbt" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/outside/ne) "gcR" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -30245,6 +30381,14 @@ icon_state = "mars_cave_18" }, /area/bigredv2/caves_lambda) +"gnk" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/solid{ + name = "\improper Dormitories Restroom" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/dorms) "gnR" = ( /obj/structure/largecrate/random/barrel/red, /obj/effect/decal/cleanable/dirt, @@ -30310,6 +30454,17 @@ icon_state = "mars_dirt_4" }, /area/space) +"gtG" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_5" + }, +/area/bigredv2/caves_north) "gtX" = ( /turf/open/mars_cave, /area/bigredv2/caves_se) @@ -30346,6 +30501,11 @@ icon_state = "elevatorshaft" }, /area/bigredv2/caves/lambda/breakroom) +"gwb" = ( +/turf/open/mars{ + icon_state = "mars_dirt_3" + }, +/area/bigredv2/outside/ne) "gwg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -30392,11 +30552,10 @@ }, /area/bigredv2/caves/mining) "gAE" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -9 +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" }, -/turf/open/floor, /area/bigredv2/outside/hydroponics) "gCx" = ( /obj/structure/surface/table, @@ -30439,6 +30598,13 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"gGC" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "gGO" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ @@ -30469,6 +30635,11 @@ icon_state = "mars_cave_4" }, /area/bigredv2/caves_virology) +"gKG" = ( +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "gML" = ( /obj/structure/machinery/power/turbine, /turf/open/floor{ @@ -30514,6 +30685,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"gQP" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor, +/area/bigredv2/outside/cargo) "gSg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -30614,6 +30793,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"gYM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, +/area/bigredv2/outside/hydroponics) "gZc" = ( /obj/structure/machinery/light{ dir = 8 @@ -30658,6 +30844,12 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"hdJ" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_cave_9" + }, +/area/bigredv2/caves_north) "heG" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -30672,22 +30864,18 @@ }, /area/bigredv2/caves/mining) "heI" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/structure/machinery/door/poddoor/almayer/closed{ - dir = 4; - id = "lambda"; - name = "Lambda Lockdown" - }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/mars_cave{ + icon_state = "mars_cave_17" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/n) "heU" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, /turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" + icon_state = "floor4" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/cargo) "hfB" = ( /obj/item/ore{ pixel_x = -5; @@ -30817,6 +31005,13 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/filtration_plant) +"hul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/hatchet, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "hvQ" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -31107,6 +31302,11 @@ }, /turf/open/floor, /area/bigredv2/outside/cargo) +"iaq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "iaC" = ( /obj/structure/platform, /turf/open/gm/river, @@ -31143,6 +31343,12 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"idO" = ( +/turf/open/floor{ + dir = 5; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/virology) "iep" = ( /obj/structure/surface/rack, /obj/item/clothing/head/hardhat/dblue{ @@ -31189,6 +31395,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"igi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 9; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "igM" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -31229,6 +31442,9 @@ icon_state = "floor1" }, /area/bigredv2/oob) +"ilN" = ( +/turf/closed/wall/solaris, +/area/bigredv2/outside/n) "ilO" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 1 @@ -31306,14 +31522,18 @@ /obj/effect/spawner/random/technology_scanner, /turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) +"isk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/snack, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "isr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" - }, -/turf/open/mars_cave{ - icon_state = "mars_cave_19" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/telecomm/n_cave) "itL" = ( /obj/structure/closet/l3closet/virology, /obj/effect/landmark/objective_landmark/science, @@ -31347,7 +31567,10 @@ }, /area/bigredv2/outside/lambda_cave_cas) "iyd" = ( -/obj/structure/machinery/computer/general_air_control, +/obj/structure/machinery/computer/general_air_control{ + dir = 8; + pixel_y = 6 + }, /obj/structure/surface/table, /turf/open/floor{ dir = 4; @@ -31505,7 +31728,7 @@ /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "iPE" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 1 @@ -31531,10 +31754,9 @@ }, /area/bigredv2/caves_research) "iRf" = ( -/obj/structure/fence, /turf/open/floor{ dir = 1; - icon_state = "asteroidfloor" + icon_state = "asteroidwarning" }, /area/bigredv2/outside/telecomm/n_cave) "iRw" = ( @@ -31552,6 +31774,11 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"iSc" = ( +/turf/open/mars{ + icon_state = "mars_dirt_11" + }, +/area/bigredv2/outside/n) "iSz" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -31589,6 +31816,13 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"iXL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "iXN" = ( /obj/item/ore{ pixel_x = -7; @@ -31622,11 +31856,11 @@ }, /area/bigredv2/outside/admin_building) "iZh" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E-corner" +/turf/open/floor{ + dir = 5; + icon_state = "asteroidwarning" }, -/turf/open/mars_cave, -/area/bigredv2/caves_north) +/area/bigredv2/outside/telecomm/n_cave) "iZi" = ( /obj/structure/machinery/light, /turf/open/floor{ @@ -31681,6 +31915,17 @@ icon_state = "mars_dirt_3" }, /area/bigredv2/outside/s) +"jfn" = ( +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Engineering"; + name = "\improper Engineering Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "jfr" = ( /turf/open/floor{ dir = 5; @@ -31744,6 +31989,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"jku" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/surgery/hemostat, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "jkO" = ( /obj/item/explosive/grenade/high_explosive/frag, /turf/open/mars_cave, @@ -31755,6 +32008,11 @@ /obj/structure/reagent_dispensers/fueltank/gas, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jmY" = ( +/turf/open/mars{ + icon_state = "mars_dirt_8" + }, +/area/bigredv2/outside/sw) "jna" = ( /obj/item/prop/alien/hugger, /turf/open/floor{ @@ -31793,7 +32051,9 @@ /area/bigredv2/outside/dorms) "joi" = ( /obj/effect/landmark/static_comms/net_one, -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "bcircuit" + }, /area/bigredv2/outside/telecomm/warehouse) "jpT" = ( /obj/structure/surface/table, @@ -31834,6 +32094,11 @@ }, /area/bigredv2/caves/mining) "jtX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, /turf/open/floor/plating{ dir = 10; icon_state = "warnplate" @@ -31848,10 +32113,17 @@ icon_state = "podhatch" }, /area/bigredv2/caves/lambda/research) +"jvh" = ( +/obj/structure/largecrate/supply, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "jvt" = ( -/obj/structure/lz_sign/solaris_sign, +/obj/structure/cargo_container/horizontal/blue/bottom, /turf/open/mars, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "jwj" = ( /obj/structure/platform/shiva{ dir = 8 @@ -32064,6 +32336,11 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"jMB" = ( +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/caves_north) "jOc" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ dir = 4; @@ -32117,6 +32394,16 @@ /obj/item/storage/firstaid/fire, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jQe" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "jQS" = ( /obj/structure/prop/almayer/cannon_cable_connector{ name = "\improper Cable connector" @@ -32219,6 +32506,16 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"jWa" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "jWj" = ( /obj/effect/decal/cleanable/blood, /turf/open/mars_cave{ @@ -32334,6 +32631,12 @@ icon_state = "mars_cave_17" }, /area/bigredv2/outside/filtration_cave_cas) +"kdd" = ( +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "kdf" = ( /obj/item/tool/warning_cone{ pixel_y = 17 @@ -32527,6 +32830,11 @@ icon_state = "darkyellowcorners2" }, /area/bigredv2/outside/engineering) +"knF" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_6" + }, +/area/bigredv2/outside/ne) "knN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -32541,9 +32849,30 @@ icon_state = "mars_cave_7" }, /area/bigredv2/outside/filtration_cave_cas) +"kos" = ( +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"kpd" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "kpf" = ( -/turf/closed/wall/solaris/rock, -/area/bigredv2/caves_lambda) +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_16" + }, +/area/bigredv2/caves_north) "kqS" = ( /turf/open/floor{ icon_state = "wood" @@ -32669,6 +32998,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"kCm" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/outside/ne) "kDs" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cans/waterbottle{ @@ -32679,6 +33013,12 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"kED" = ( +/obj/structure/cargo_container/kelland/left, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "kFe" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor{ @@ -32733,6 +33073,13 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"kLW" = ( +/obj/effect/landmark/crap_item, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/ne) "kMs" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "Righty tighty, lefty loosey!"; @@ -32814,7 +33161,9 @@ /turf/open/mars_cave, /area/bigredv2/caves_east) "kRo" = ( -/turf/open/floor/plating, +/turf/open/floor{ + icon_state = "bcircuit" + }, /area/bigredv2/outside/telecomm/warehouse) "kRK" = ( /obj/structure/window/framed/solaris/reinforced, @@ -32857,6 +33206,13 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor, /area/bigredv2/outside/filtration_cave_cas) +"kTC" = ( +/obj/structure/surface/table, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/turf/open/floor, +/area/bigredv2/outside/cargo) "kVS" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -32899,6 +33255,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_lambda) +"laX" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 9; + pixel_y = -3 + }, +/turf/open/floor{ + icon_state = "white" + }, +/area/bigredv2/outside/medical) "lbZ" = ( /obj/item/frame/rack, /obj/effect/decal/cleanable/dirt, @@ -33120,8 +33486,7 @@ "lAK" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "bcircuit" }, /area/bigredv2/outside/telecomm/lz2_cave) "lBc" = ( @@ -33285,6 +33650,10 @@ }, /area/bigredv2/outside/virology) "lRu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor{ dir = 4; icon_state = "asteroidwarning" @@ -33312,6 +33681,10 @@ }, /area/bigredv2/caves/mining) "lSL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ dir = 8; icon_state = "asteroidwarning" @@ -33356,11 +33729,10 @@ }, /area/bigredv2/caves_se) "lVm" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/telecomm/n_cave) +/area/bigredv2/outside/n) "lVr" = ( /obj/effect/landmark/monkey_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -33431,11 +33803,20 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"mcc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/vending/cola, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "mdU" = ( /obj/structure/machinery/power/apc{ dir = 1; start_charge = 0 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor{ dir = 4; icon_state = "asteroidwarning" @@ -33452,6 +33833,17 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"mhx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/turf/open/floor, +/area/bigredv2/outside/cargo) "mhF" = ( /obj/structure/machinery/light{ dir = 4 @@ -33524,6 +33916,13 @@ icon_state = "mars_cave_9" }, /area/bigredv2/caves_research) +"mpn" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "mqf" = ( /obj/structure/bed/chair{ dir = 8; @@ -33691,7 +34090,7 @@ }, /area/bigredv2/outside/lz1_north_cas) "mGS" = ( -/obj/effect/landmark/static_comms/net_one, +/obj/effect/landmark/static_comms/net_two, /turf/open/floor{ icon_state = "podhatchfloor" }, @@ -33726,6 +34125,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"mJH" = ( +/obj/structure/cargo_container/arious/leftmid, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "mKM" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_y = 6 @@ -33834,6 +34239,14 @@ icon_state = "mars_dirt_5" }, /area/bigredv2/caves/mining) +"mWI" = ( +/turf/open/mars_cave, +/area/bigredv2/outside/n) +"mWJ" = ( +/turf/open/mars{ + icon_state = "mars_dirt_9" + }, +/area/bigredv2/outside/sw) "mXw" = ( /obj/item/storage/toolbox/mechanical, /turf/open/mars_cave{ @@ -34216,10 +34629,18 @@ }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/admin_building) +"nGU" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "nHb" = ( /turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "bcircuit" }, /area/bigredv2/outside/telecomm/lz2_cave) "nHQ" = ( @@ -34242,6 +34663,14 @@ icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) +"nIs" = ( +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Greenhouse"; + name = "\improper Greenhouse Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/hydroponics) "nKL" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "An exchange valve"; @@ -34348,6 +34777,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"nVa" = ( +/obj/structure/fence, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "nVq" = ( /turf/open/floor{ icon_state = "dark" @@ -34476,6 +34911,12 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/breakroom) +"oeT" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_north) "ofn" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/solaris, @@ -34535,7 +34976,7 @@ /turf/open/mars{ icon_state = "mars_dirt_6" }, -/area/bigredv2/outside/sw) +/area/bigredv2/outside/space_port_lz2) "ojD" = ( /obj/structure/platform_decoration{ dir = 4 @@ -34642,13 +35083,15 @@ }, /area/bigredv2/outside/filtration_cave_cas) "ooP" = ( -/obj/structure/toilet{ - pixel_y = 8 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, -/obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/floor{ - icon_state = "freezerfloor" +/obj/structure/machinery/door_control{ + id = "Dormitories"; + name = "Storm Shutters"; + pixel_y = -32 }, +/turf/open/floor, /area/bigredv2/outside/dorms) "opz" = ( /obj/effect/landmark/crap_item, @@ -34810,11 +35253,11 @@ }, /area/bigredv2/outside/admin_building) "oEJ" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/obj/structure/largecrate/random, +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/bigredv2/outside/space_port_lz2) "oFY" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/item/prop/alien/hugger, @@ -34913,6 +35356,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"oOt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) +"oOM" = ( +/obj/structure/surface/table, +/obj/item/clothing/under/brown, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "oQz" = ( /obj/structure/machinery/light/double{ dir = 1 @@ -34941,6 +35398,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"oSN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "oTf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/barricade/handrail{ @@ -35031,6 +35494,12 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"oWM" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_16" + }, +/area/bigredv2/outside/ne) "oXr" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -35253,6 +35722,16 @@ /obj/structure/sign/safety/hazard, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) +"pri" = ( +/obj/structure/barricade/handrail{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "psE" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ @@ -35265,6 +35744,16 @@ }, /turf/open/floor, /area/bigredv2/caves/eta/living) +"ptV" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_19" + }, +/area/bigredv2/caves_north) "puU" = ( /obj/item/paper/bigred/witness, /turf/open/mars_cave{ @@ -35341,6 +35830,12 @@ icon_state = "dark" }, /area/bigredv2/outside/admin_building) +"pBh" = ( +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "pBv" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -35378,6 +35873,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"pEp" = ( +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) +"pGN" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "pGP" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -35387,6 +35896,13 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"pGS" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "pHb" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -35663,6 +36179,11 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"qap" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_7" + }, +/area/bigredv2/outside/space_port_lz2) "qaK" = ( /obj/structure/largecrate, /turf/open/floor{ @@ -35675,11 +36196,13 @@ /turf/open/floor/plating, /area/bigredv2/outside/nw/ceiling) "qez" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_cave_2" +/obj/structure/fence, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/telecomm/n_cave) "qeK" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, @@ -35743,6 +36266,16 @@ icon_state = "mars_cave_6" }, /area/bigredv2/caves/mining) +"qhS" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_north) "qiA" = ( /obj/structure/surface/table/reinforced/prison, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -35791,6 +36324,14 @@ /obj/effect/spawner/random/toolbox, /turf/open/floor, /area/bigred/ground/garage_workshop) +"qlT" = ( +/obj/structure/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "qmm" = ( /obj/structure/cargo_container/hd/right/alt, /turf/open/floor/plating, @@ -35811,7 +36352,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_7" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "qoj" = ( /turf/open/mars_cave{ icon_state = "mars_cave_23" @@ -35857,8 +36398,11 @@ /turf/closed/wall/solaris/reinforced, /area/bigred/ground/garage_workshop) "qtx" = ( -/turf/closed/wall/solaris/reinforced/hull, -/area/bigredv2/outside/space_port_lz2) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/caves_north) "qux" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -35915,6 +36459,17 @@ icon_state = "darkredcorners2" }, /area/bigredv2/outside/admin_building) +"qyq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) "qzO" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/structure/machinery/door/poddoor/almayer/closed{ @@ -36019,6 +36574,13 @@ /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor, /area/bigredv2/outside/cargo) +"qJL" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "qJV" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -5; @@ -36034,7 +36596,7 @@ insert_tag = "prison" }, /turf/closed/wall/solaris/reinforced, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/marshal_office) "qLk" = ( /obj/item/device/flashlight/lantern, /turf/open/mars_cave{ @@ -36064,6 +36626,15 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"qNT" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "qOM" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -9; @@ -36277,6 +36848,11 @@ dir = 1; start_charge = 0 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, /turf/open/floor/plating{ dir = 4; icon_state = "warnplate" @@ -36324,6 +36900,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"rmk" = ( +/obj/effect/landmark/static_comms/net_one, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "rml" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor, @@ -36397,6 +36979,9 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"rsQ" = ( +/turf/closed/wall/r_wall/unmeltable, +/area/bigredv2/outside/c) "rtL" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -36432,6 +37017,14 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"ruF" = ( +/obj/structure/largecrate/supply, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "ruS" = ( /obj/structure/bed/chair{ dir = 8; @@ -36696,6 +37289,16 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/storage) +"rTr" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_14" + }, +/area/bigredv2/caves_north) "rTN" = ( /obj/structure/fence, /turf/open/floor{ @@ -36746,6 +37349,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"rVx" = ( +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "rWF" = ( /obj/item/stack/cable_coil/cut{ pixel_x = 6; @@ -36809,6 +37418,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"rZi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/roller, +/turf/open/floor{ + dir = 1; + icon_state = "whitegreen" + }, +/area/bigredv2/outside/medical) "rZQ" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/snacks/csandwich, @@ -36829,6 +37446,17 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"saH" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/effect/landmark/objective_landmark/close, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "saX" = ( /obj/structure/machinery/power/turbine, /turf/open/floor{ @@ -36908,6 +37536,24 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"shf" = ( +/obj/structure/barricade/handrail{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) +"shm" = ( +/obj/structure/window/reinforced/tinted, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/dorms) "shV" = ( /turf/open/floor{ icon_state = "asteroidwarning" @@ -37014,6 +37660,17 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"som" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_13" + }, +/area/bigredv2/caves_north) "sqc" = ( /obj/effect/decal/cleanable/blood{ base_icon = 'icons/obj/items/weapons/grenade.dmi'; @@ -37060,6 +37717,12 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"stJ" = ( +/turf/open/floor{ + dir = 10; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/telecomm/n_cave) "sus" = ( /turf/open/mars_cave{ icon_state = "mars_cave_23" @@ -37106,11 +37769,10 @@ }, /area/bigred/ground/garage_workshop) "svp" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/cargo) +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/bigredv2/outside/space_port_lz2) "swJ" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/science, @@ -37148,15 +37810,12 @@ }, /area/bigredv2/caves/mining) "szg" = ( -/obj/structure/machinery/door/poddoor/almayer/closed{ - dir = 4; - id = "lambda"; - name = "Lambda Lockdown" - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "delivery" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/caves_lambda) +/area/bigredv2/outside/telecomm/n_cave) "szi" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -37209,6 +37868,12 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_east) +"sBF" = ( +/obj/structure/cargo_container/kelland/right, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "sCj" = ( /obj/item/stack/cable_coil/cut, /turf/open/mars_cave{ @@ -37387,10 +38052,28 @@ icon_state = "mars_cave_19" }, /area/bigredv2/outside/lz2_south_cas) +"sTf" = ( +/obj/structure/surface/table, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz2{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/landing/console2) "sUQ" = ( /obj/structure/machinery/photocopier, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) +"sVY" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/clothing/under/darkred, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "sWa" = ( /obj/item/ore{ pixel_x = 12; @@ -37572,12 +38255,11 @@ /turf/open/floor/plating, /area/bigredv2/caves/mining) "tgk" = ( -/obj/structure/surface/table, -/obj/structure/machinery/computer/shuttle/dropship/flight/lz2{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "floor4" }, -/turf/open/floor, -/area/bigredv2/landing/console2) +/area/bigredv2/outside/cargo) "tgF" = ( /obj/effect/spawner/random/tool, /turf/open/shuttle/escapepod{ @@ -37620,11 +38302,10 @@ }, /area/bigredv2/caves/lambda/research) "tlj" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ - icon_state = "mars_cave_15" + icon_state = "mars_cave_5" }, -/area/bigredv2/outside/lz1_north_cas) +/area/bigredv2/outside/n) "tlP" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /obj/structure/machinery/light{ @@ -37650,6 +38331,11 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves_research) +"tng" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_lambda) "toA" = ( /obj/effect/decal/cleanable/dirt, /obj/item/prop/alien/hugger, @@ -37778,11 +38464,21 @@ }, /area/bigredv2/outside/engineering) "twS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor{ dir = 1; - icon_state = "asteroidwarning" + icon_state = "asteroidfloor" }, /area/bigredv2/outside/telecomm/lz2_cave) +"tyH" = ( +/obj/item/stack/sheet/wood, +/turf/open/mars_cave{ + icon_state = "mars_cave_6" + }, +/area/bigredv2/caves_north) "tzJ" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engine Reactor Control" @@ -37877,6 +38573,11 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"tCQ" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_16" + }, +/area/bigredv2/caves_lambda) "tDk" = ( /obj/structure/machinery/light/double{ dir = 1 @@ -37902,12 +38603,6 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves_research) -"tFM" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/caves_north) "tFO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -37916,6 +38611,11 @@ icon_state = "delivery" }, /area/bigredv2/caves/lambda/breakroom) +"tGJ" = ( +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "tHl" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/mars{ @@ -37964,6 +38664,12 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"tJH" = ( +/turf/open/floor{ + dir = 6; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/space_port_lz2) "tKr" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/chair{ @@ -37992,6 +38698,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"tKE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/ne) "tKR" = ( /turf/open/floor{ icon_state = "delivery" @@ -38019,8 +38731,9 @@ /area/bigredv2/caves/mining) "tPr" = ( /obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/outside/ne) "tQo" = ( @@ -38040,6 +38753,17 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_lambda) +"tQY" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_north) "tRd" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A pipe."; @@ -38098,6 +38822,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"tVm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/caves_lambda) "tVn" = ( /obj/item/tool/lighter/zippo, /turf/open/floor, @@ -38161,6 +38891,15 @@ icon_state = "mars_cave_4" }, /area/bigredv2/caves_se) +"uey" = ( +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Dormitories"; + name = "\improper Dormitories Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/general_offices) "ueL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/framed/solaris, @@ -38168,6 +38907,12 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/engineering) +"ueW" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/bigredv2/outside/space_port_lz2) "ufu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, @@ -38184,11 +38929,11 @@ }, /area/bigredv2/caves/eta/research) "ufD" = ( -/turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/sw) +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/turf/open/floor, +/area/bigredv2/outside/cargo) "ugW" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating{ @@ -38313,11 +39058,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"usF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "usG" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" }, /area/bigredv2/caves_east) +"utg" = ( +/turf/open/mars{ + icon_state = "mars_dirt_13" + }, +/area/bigredv2/outside/sw) "uuo" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -38472,6 +39232,13 @@ icon_state = "darkredcorners2" }, /area/bigredv2/caves/eta/xenobiology) +"uHx" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor{ + icon_state = "whitegreenfull" + }, +/area/bigredv2/outside/hydroponics) "uHE" = ( /obj/item/tool/warning_cone{ pixel_y = 19 @@ -38582,6 +39349,10 @@ icon_state = "bcircuitoff" }, /area/bigredv2/caves/lambda/research) +"uQY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/general_offices) "uRE" = ( /obj/effect/landmark/nightmare{ insert_tag = "medbay-passage" @@ -38593,6 +39364,17 @@ icon_state = "floor1" }, /area/bigredv2/oob) +"uSp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) "uSt" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -38636,6 +39418,13 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/living) +"uXO" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -9 + }, +/turf/open/floor, +/area/bigredv2/outside/hydroponics) "uXW" = ( /turf/open/mars_cave{ icon_state = "mars_cave_8" @@ -38755,14 +39544,10 @@ }, /area/bigredv2/outside/filtration_plant) "vis" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" +/turf/open/mars{ + icon_state = "mars_dirt_8" }, -/area/bigredv2/outside/c) +/area/bigredv2/outside/ne) "viN" = ( /obj/structure/machinery/door_control{ id = "workshop_br_g"; @@ -38958,11 +39743,12 @@ }, /area/bigredv2/caves/mining) "vwP" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_cave_7" +/obj/structure/fence, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/lz1_north_cas) +/area/bigredv2/outside/telecomm/n_cave) "vxQ" = ( /obj/item/tool/pickaxe/gold, /turf/open/floor/plating, @@ -38971,6 +39757,12 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating, /area/bigredv2/caves/lambda/xenobiology) +"vzk" = ( +/obj/structure/cargo_container/arious/right, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/space_port_lz2) "vzL" = ( /obj/item/weapon/gun/boltaction, /turf/open/floor/plating{ @@ -38983,11 +39775,16 @@ /turf/open/floor/plating, /area/bigredv2/caves/lambda/xenobiology) "vAy" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/mars_cave{ - icon_state = "mars_cave_9" +/obj/structure/platform_decoration, +/obj/structure/machinery/power/apc{ + dir = 1; + start_charge = 0 }, -/area/bigredv2/caves_north) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "vBy" = ( /obj/item/ammo_magazine/shotgun/beanbag/riot, /turf/open/mars_cave{ @@ -39064,6 +39861,16 @@ "vLd" = ( /turf/open/floor, /area/bigred/ground/garage_workshop) +"vMb" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 4; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_north) "vMj" = ( /turf/open/mars_cave{ icon_state = "mars_cave_6" @@ -39120,6 +39927,12 @@ icon_state = "white" }, /area/bigredv2/outside/marshal_office) +"vQe" = ( +/obj/structure/machinery/power/apc{ + dir = 1 + }, +/turf/open/floor/plating, +/area/bigredv2/outside/medical) "vQZ" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" @@ -39132,6 +39945,15 @@ /obj/structure/sign/safety/high_voltage, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/mining) +"vRJ" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "vRK" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -39177,6 +39999,11 @@ icon_state = "delivery" }, /area/bigredv2/outside/engineering) +"vVB" = ( +/turf/open/mars_cave{ + icon_state = "mars_cave_15" + }, +/area/bigredv2/caves_lambda) "vVF" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -5; @@ -39337,6 +40164,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"whv" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/ne) "whE" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/objective_landmark/close, @@ -39417,10 +40250,17 @@ icon_state = "delivery" }, /area/bigredv2/outside/engineering) +"wpP" = ( +/obj/structure/platform, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "wpT" = ( /obj/effect/landmark/lv624/xeno_tunnel, /turf/open/mars, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) "wry" = ( /obj/structure/surface/table, /obj/structure/transmitter/colony_net/rotary{ @@ -39534,6 +40374,13 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"wzc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor, +/area/bigredv2/outside/general_offices) "wBi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -39570,15 +40417,18 @@ }, /area/bigredv2/caves/mining) "wDK" = ( -/obj/structure/barricade/wooden{ - desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; - dir = 4; - health = 25000 +/obj/structure/platform_decoration{ + dir = 1 }, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 }, -/area/bigredv2/caves_north) +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "wFL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/safety/hazard{ @@ -39629,6 +40479,15 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/se) +"wGP" = ( +/obj/structure/morgue{ + dir = 1 + }, +/turf/open/floor{ + dir = 10; + icon_state = "whiteblue" + }, +/area/bigredv2/outside/medical) "wGV" = ( /obj/item/tool/wrench, /turf/open/floor{ @@ -39671,6 +40530,15 @@ icon_state = "mars_cave_17" }, /area/bigredv2/outside/lz1_north_cas) +"wLg" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic/solid{ + dir = 1; + name = "\improper Dormitories Restroom" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/dorms) "wLD" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/plating{ @@ -39753,11 +40621,28 @@ icon_state = "mars_cave_16" }, /area/bigredv2/caves/mining) +"wQu" = ( +/obj/structure/surface/table/reinforced, +/obj/item/book/manual/research_and_development, +/turf/open/floor{ + dir = 4; + icon_state = "whitepurple" + }, +/area/bigredv2/caves/lambda/xenobiology) "wQC" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" }, /area/bigredv2/caves_lambda) +"wQD" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "redcorner" + }, +/area/bigredv2/outside/office_complex) "wRH" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/flashlight, @@ -39858,6 +40743,14 @@ icon_state = "mars_dirt_11" }, /area/bigredv2/outside/eta) +"xah" = ( +/obj/structure/largecrate/supply/supplies, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) "xaH" = ( /turf/closed/wall/wood, /area/bigredv2/caves_sw) @@ -39902,6 +40795,11 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/outside/filtration_plant) +"xeV" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/bomb_supply, +/turf/open/floor, +/area/bigredv2/outside/cargo) "xfx" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -40057,6 +40955,15 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"xrN" = ( +/obj/structure/machinery/washing_machine, +/obj/structure/machinery/washing_machine{ + pixel_y = 13 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/general_offices) "xrO" = ( /obj/structure/barricade/wooden{ desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; @@ -40154,6 +41061,15 @@ icon_state = "vault" }, /area/bigredv2/outside/marshal_office) +"xyw" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/telecomm/n_cave) "xyz" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -40237,11 +41153,21 @@ /turf/open/mars_cave, /area/bigredv2/caves_lambda) "xGT" = ( +/obj/structure/closet/firecloset/full, /turf/open/floor{ - dir = 9; - icon_state = "asteroidwarning" + icon_state = "asteroidplating" }, -/area/bigredv2/outside/w) +/area/bigredv2/outside/space_port_lz2) +"xHQ" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_15" + }, +/area/bigredv2/caves_north) "xIo" = ( /obj/structure/window/framed/solaris/reinforced/hull, /turf/open/floor/plating{ @@ -40433,7 +41359,7 @@ /turf/open/mars_cave{ icon_state = "mars_cave_16" }, -/area/bigredv2/caves_north) +/area/bigredv2/outside/n) "xWV" = ( /obj/structure/machinery/power/apc{ dir = 1 @@ -44923,14 +45849,14 @@ aao aao aao aao -azR -azR -aao -aao -aao -aao -aao -qtx +ayf +ayf +ayf +ayf +ayf +ayf +ayf +ayf ayf ayf ayf @@ -45140,13 +46066,13 @@ aao aao aao aao -azR +ayf wpT -aYF -aYF -aYF cVY +ayf cVY +bhD +ayf cVY cVY cVY @@ -45357,15 +46283,15 @@ aao aao aao aao -azR -aYF -aYF -aYF -aYF +ayf cVY cVY cVY cVY +bio +bkk +brG +jvt cVY cVY bjN @@ -45574,14 +46500,14 @@ aao aao aao aao -azR -azR -aYF -aYF -bgC +ayf +ayf cVY cVY cVY +bjP +cVY +cVY cVY cVY cVY @@ -45589,7 +46515,7 @@ cVY cVY cVY ayf -aao +ayf aao aao aao @@ -45791,11 +46717,11 @@ aao aao aao aao -azR -aYF -aYF -aYF -aYF +ayf +bee +cVY +cVY +bhe cVY cVY cVY @@ -45805,6 +46731,7 @@ mMf cVY cVY cVY +cVY ayf ayf ayf @@ -45822,8 +46749,7 @@ ayf ayf ayf ayf -ayf -ayf +aao aao aao aao @@ -45982,7 +46908,7 @@ aIb aHj aJh aJh -aJh +aHj aoD aNe aNc @@ -46008,11 +46934,11 @@ aao aao aao aao -azR -aYF -aYF -aYF -bbc +ayf +bew +cVY +cVY +hpg bgW cVY hpg @@ -46022,13 +46948,13 @@ tVp mMf mMf mMf -tVp -tVp -tVp +mMf +ayf +ayf bsa -tVp -tVp -tVp +ayf +ayf +qap tVp fFO cVY @@ -46039,7 +46965,7 @@ fFO cVY cVY cVY -uSC +ayf ayf aao aao @@ -46199,7 +47125,7 @@ aIb lQU aFt aFt -aFt +aHh aoD aNf aNc @@ -46225,11 +47151,11 @@ aoD aoD aao aao -azR -azR -aYF -aYF -aSB +ayf +ayf +cVY +cVY +tVp feN vKv vKv @@ -46242,6 +47168,7 @@ vKv vKv vKv vKv +eWd vKv vKv vKv @@ -46254,11 +47181,10 @@ vKv vKv vKv vKv -vKv -vKv -vKv +btv +tVp +ayf ayf -aao aao aao aao @@ -46416,7 +47342,7 @@ aIb lQU aFt aFu -aFt +idO aoD aNg aNc @@ -46442,11 +47368,11 @@ aNc aoD aao aao -azR -aYF -aYF -bbc -aSB +ayf +cVY +cVY +hpg +tVp bgX eWd eWd @@ -46472,14 +47398,14 @@ eWd eWd eWd eWd -eWd -eWd +brd +tVp +tVp ayf aao aao aao aao -aao kvp wog wog @@ -46659,11 +47585,11 @@ aNc aoD aao aao -azR -aYF -aYF -bcp -aSB +ayf +cVY +cVY +uSC +tVp bgX bsa bid @@ -46689,14 +47615,14 @@ bjn bid bsa eWd -eWd -eWd +brd +kED +tVp ayf aao aao aao aao -aao gxJ iGK wog @@ -46876,11 +47802,11 @@ aNc aoD aao aao -azR -azR -aYF -bcp -aSB +ayf +ayf +cVY +uSC +tVp bgX bhu bie @@ -46906,8 +47832,9 @@ bje bie bsb eWd -eWd -eWd +brd +sBF +tVp ayf aao aao @@ -46915,7 +47842,6 @@ aao aao aao aao -aao gxJ iGK wog @@ -47093,11 +48019,11 @@ aXx aoD aao aao -azR -aYF -aYF -bcp -aSB +ayf +beS +cVY +uSC +tVp bgX bhv bie @@ -47123,8 +48049,9 @@ bie bie bsc eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -47134,7 +48061,6 @@ aao aao aao aao -aao kvp wog wog @@ -47310,11 +48236,11 @@ aNi aoD aao aao -azR -aYF -aYF -bcp -aSB +ayf +cVY +cVY +uSC +tVp bgX bhw bie @@ -47340,8 +48266,9 @@ bie bie bsd eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -47351,7 +48278,6 @@ aao aao aao aao -aao kvp wog sLy @@ -47527,11 +48453,11 @@ aXy aoD aao aao -azR -azR -aYF -bbJ -aSB +ayf +ayf +cVY +bgq +tVp bgX bhx bie @@ -47557,8 +48483,9 @@ bie bie bse eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -47568,7 +48495,6 @@ aao aao aao aao -aao kvp wog wog @@ -47744,11 +48670,11 @@ aXz aoD aao aao -azR -jvt -aYF -aYF -bcp +ayf +cVY +cVY +cVY +uSC bgX bhu bie @@ -47774,8 +48700,9 @@ bie bie bsb eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -47785,7 +48712,6 @@ aao aao aao aao -aao kvp wog feS @@ -47953,19 +48879,19 @@ aoD aoD aoD aoD -aoa aoD aoD aoD aoD -aoa -azR -azR -azR -aYF -aYF -bbc -aSB +aoD +aoD +ayf +ayf +ayf +cVY +cVY +hpg +tVp bgX bhy bie @@ -47991,8 +48917,9 @@ bie bie bsc eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -48002,7 +48929,6 @@ aao aao aao aao -aao kvp wog feS @@ -48150,7 +49076,7 @@ aoD grU aIg grU -aoa +aoD aln aoD aEu @@ -48167,10 +49093,10 @@ aEu aoD aEu aEu -aEV +aoD aEu aEu -aoa +aoD aSB aSB aoD @@ -48178,11 +49104,11 @@ aSB aSB azR aSB -aSB -bax -bax -aSB -aSB +tVp +mMf +mMf +tVp +tVp bgX bhw bie @@ -48208,8 +49134,9 @@ bie bie bsd eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -48219,7 +49146,6 @@ aao aao aao aao -aao kvp wog iAF @@ -48395,11 +49321,11 @@ aSB beP beP beP -aSB -aSB -aSB -aSB -aSB +tVp +tVp +tVp +tVp +tVp bgX bhz bie @@ -48425,8 +49351,9 @@ bie bie bse eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -48436,7 +49363,6 @@ aao aao aao aao -aao gxJ iAF aao @@ -48612,11 +49538,11 @@ aWk aVI aWk aWk -aVI -aVI -aWk -aWk -aWk +bcp +bcp +vKv +vKv +vKv eWd bhA bie @@ -48642,8 +49568,9 @@ bie bjo bsb eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -48659,7 +49586,6 @@ aao aao aao aao -aao kvp wog daf @@ -48829,11 +49755,11 @@ aUQ bdZ bdZ bdZ -aXA -aWV -aXA -aXA -aXA +bmN +bfW +bmN +bmN +bmN eWd bhv bie @@ -48859,8 +49785,9 @@ bie bie bsc eWd -eWd -eWd +brd +tVp +tVp ayf aao aao @@ -48876,7 +49803,6 @@ aao aao aao aao -aao kvp wog wog @@ -49046,11 +49972,11 @@ bdZ bdZ bdZ beu -beP -aSB -aSB -aSB -aSB +bcr +tVp +tVp +tVp +tVp bgX bhw bie @@ -49076,8 +50002,9 @@ bje bie bsd eWd -eWd -eWd +brd +tVp +mJH ayf aao aao @@ -49093,7 +50020,6 @@ aao aao aao aao -aao gxJ iGK iGK @@ -49263,11 +50189,11 @@ bdZ aUQ bdZ bev -beP -aSB +bcr +tVp bfT -aSB -aSB +tVp +tVp bgX bsa bpu @@ -49293,8 +50219,9 @@ brb bpu bsa eWd -eWd -eWd +brd +tVp +dwg ayf aao aao @@ -49313,7 +50240,6 @@ aao aao aao aao -aao kvp wog wog @@ -49470,7 +50396,7 @@ asj aoH aoH asK -asK +aXJ asK beQ aYF @@ -49480,11 +50406,11 @@ bdZ aUQ bdZ bev -beP -aSB -aSB -aSB -aSB +bcr +tVp +tVp +tVp +tVp bgX eWd eWd @@ -49510,8 +50436,9 @@ eWd eWd eWd eWd -eWd -eWd +brd +tVp +vzk ayf aao aao @@ -49530,7 +50457,6 @@ aao aao aao aao -aao kvp wog wog @@ -49697,24 +50623,24 @@ bdZ aUQ bdZ bev -aSB -aSB -aSB -xGT -aWk -eWd -eWd +tVp +aao +aao +tVp +tVp +bgX +boD kHK kHK -eWd -eWd -eWd -eWd +bmN +bmN +bmN eWd eWd eWd bmN bmN +eWd bmN bmN bmN @@ -49727,10 +50653,10 @@ eWd bmN bmN bmN -bmN -bmN +tJH +tVp +ayf ayf -aao aao aao aao @@ -49914,38 +50840,38 @@ bdZ bdZ bdZ bev -aSB -aSB -aSB -aVG -asK -asK -asK -bdg -bbg -asK -atw -atw -atw -atw -atw -asK +tVp +tVp +aao +aao +tVp +bgX +boD +eWd +brd +oEJ +xGT +svp +bgX +eWd +qlT +ayf ayf bsa ayf -axX -maD -boD -axX -bpx -ufD -bpv +ayf +qap +tVp +tVp +tVp +bgX +eWd brd -bpx -bpx -bpx -bpx -bpx +tVp +qap +tVp +tVp +tVp aao aao aao @@ -50131,39 +51057,39 @@ bdZ bdZ bdZ bev -aSB -aSB +tVp +tVp bfU -aVG -asK -svp -svp -aZu -aZu -bbM -aZu -bjP -tgk -qHZ -qHZ -asK +tVp +tVp +bgX +eWd +eWd +eWd +vKv +vKv +vKv +eWd +eWd +sTf ayf ayf ayf -azb -hhK -sCt -azb -bpx -ufD -bpv +ayf +ayf +tVp +tVp +qap +tVp +bgX +eWd brd -bpx -bpx -bpx -bpx -bpx -bpx +tVp +tVp +tVp +tVp +tVp +qap aao aao aao @@ -50348,39 +51274,39 @@ bdZ bdZ bdZ beQ -aSB -aSB -aSB -aVG -asK -bhb -bhb -bhb -bhD -bhb -bhb -bhb -bhb -bhb +tVp +tVp +tVp +tVp +tVp +bgX +eWd +eWd +kHK +bmN +bmN +bmN +eWd +eWd aLn -asK +ayf aFc aFc aFc -azb -hhK -sCt -azb -bpx -ufD -bpv +ayf +jfn +jfn +axX +tVp +bgX +eWd brd -bpx -bpx -bpx -bpx -bpx -bpx +tVp +tVp +tVp +tVp +tVp +tVp oip lzI aao @@ -50565,40 +51491,40 @@ bdZ bdZ bdZ beQ -aSB -aSB -aSB -aVG -asK +tVp +tVp +tVp +tVp +tVp bhc -bbe -bfz -aZu -aZu -aZu -aZu -aZu -bhb +bpv +cwk +brd +svp +ueW +oEJ +bgX +eWd blb -asK +bjQ aFc aFc -bme +bsI azb -hhK -sCt +rVx +kVT azb -bpx -ufD -bpv -bpv -brG -brG -brG -brG -brG -brG -brG +vKv +eWd +eWd +eWd +vKv +vKv +vKv +vKv +vKv +vKv +vKv qzO cHn cHn @@ -50774,48 +51700,48 @@ aoH aYH aXH asK -beQ -aSB +bdZ +aWk beR -bcr -bcs -bcs +aUQ +aUQ +aUQ +aUQ +bdZ bcs -bew -beR -aSB -aSB -aVG -asK +vKv +vKv +vKv +vKv bhd -bhD +kHK bik -bhD -bhb -bhb -bhb -bhb -bhb -aZu -asK +kHK +vKv +vKv +vKv +eWd +eWd +pGS +bjQ aFc aFc -bme +bsI azb hhK -sCt -azb -bpy -ufD -bpv -bpv -bpv -bpv -bpv -bpv -bpv -bpv -bpv +nVq +bqf +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd +eWd qzO bGL bGL @@ -50992,47 +51918,47 @@ aYI aXH asK bdZ -aWk -beS -bcs -bdf -bdf +bdZ +asK +aUQ +bdZ +bdZ beb -bdf -beS -aWk -aWk bdZ asK -oEJ -oEJ -baz -aZO -bjg +eWd +eWd +eWd +asK +eWd +eWd +bik +kHK +bjt bjt bjQ -bkk -bjQ +eWd +eWd blc -asK +bjQ aFc aFc -bme +bsI azb hhK sCt azb -bme -bqe -heU -heU -heU -heU -heU -heU -heU -heU -heU +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN +bmN qzO bGL bGL @@ -51233,8 +52159,8 @@ bkz asK lMt aFc -bme -bme +crO +mWJ azb hhK sCt @@ -51427,30 +52353,30 @@ aZm aZL bay aZu -bbM +asK bcu bdg bdg bcu bdg -beT -aZu -aZu -aZu +asK aZu aZu aZu +asK +kTC +beT baz aZu bbM -beT +gQP asK aZw aZu bld asK -bme -bme +crO +mWJ bme azb hhK @@ -51644,29 +52570,29 @@ aXH asK baz aZu -aZO +aEV aZu aZu aZu aZu aZu -beU +bdf bfy bfV -bfF -baF -baF -aZu -baz -aZu -aZu +bgC +atA +xeV +bqe +heU +bqe +bqe aZu asK aZu bkA hzy axL -bme +bsI bme bme azb @@ -51871,9 +52797,9 @@ bbe bfz aZO aZu -aZu -aZu -aZu +atA +bkn +bqe bfB bgD bjh @@ -51883,7 +52809,7 @@ bbe bbe aLo axL -bme +bsI bme bme azb @@ -51899,7 +52825,7 @@ rzb bsK axX bme -bme +utg aao glB xpb @@ -52086,21 +53012,21 @@ aZM aZu beU bfA -bfW -bgq -bfy +bgE baF +asK aZu -baz -aZu -aZO -aZO +bqe +heU +bqe +tgk +aDo atA bkl aZO blg axL -bme +bsI bme bme azb @@ -52115,7 +53041,7 @@ tTI rzb bsL azb -bme +utg bpx aao euF @@ -52305,19 +53231,19 @@ aZu bfB bbe bbe -bgD +bjR bbe bhE bbR biK -aZO -aZO +ufD +mhx atA bkl aZu aZu axL -bme +bsI bme bme azb @@ -52521,21 +53447,21 @@ aZu beU bfC bfX -baF -bgE -bhe +bhb +asK +asK +asK +wLU +bbg +asK asK -bio -cwk -aZu -aZu asK aLl aZu blh asK -bme -bme +crO +jmY bme axX azB @@ -53152,7 +54078,7 @@ aQM aQM aSI aOB -dlr +aNo aNo aNm aoH @@ -53166,7 +54092,7 @@ bbg auk asK asK -aZu +bax aZu bex bbe @@ -53383,7 +54309,7 @@ aZO baz bcy asK -aZu +bax aZu baz beU @@ -53592,7 +54518,7 @@ aWB aoH aXH aXH -asK +bfg aZu aZO aZO @@ -53601,7 +54527,7 @@ bbR bcz asK bdM -bee +aZu bey aZu aZu @@ -54177,7 +55103,7 @@ aao aao aao aao -rgp +asc acp adh adh @@ -54392,9 +55318,9 @@ aao aao aao aao -pXu -iyY -xbV +lVm +dlr +asc acp adi adz @@ -54608,10 +55534,10 @@ aao aao aao aao -iyY -xBS -wXg -uzv +dlr +dtX +aqL +asc acp adj adA @@ -54641,7 +55567,7 @@ arR arR atq amj -auK +rZi aqw awc awQ @@ -54824,11 +55750,11 @@ aao aao aao aao -mDN -wXg -pMv -wXg -pow +acc +aqL +ann +aqL +asc acp adk adk @@ -55040,12 +55966,12 @@ aao aao aao aao -pXu -mDN -wXg -wXg -wXg -wcs +lVm +acc +aqL +aqL +aqL +asc acp aaX adB @@ -55069,7 +55995,7 @@ ahP ahP ajy alD -aqv +aqw ari arS asD @@ -55108,9 +56034,9 @@ aQS aQS aQS aoH -aYe -aXH -aYe +aHF +aHF +aHF asK aZv aZR @@ -55256,13 +56182,13 @@ pXu aao aao aao -pXu -pXu -xBS -wXg -pow -pow -pow +lVm +lVm +dtX +aqL +agq +ahe +ahS acp acp acp @@ -55325,9 +56251,9 @@ apQ apQ apQ aoH -aYe -aXH -aYe +aHF +aHF +aHF asK aZu aZu @@ -55470,14 +56396,14 @@ cGZ pXu pXu pXu -pXu -pXu -iyY -pXu -tlj -pow -wcs -pow +rgp +lVm +dlr +lVm +agq +ahe +ahe +ahS acp acp acp @@ -55542,8 +56468,8 @@ aGV aVh aVP aoH -aYe -aXH +aHF +aHF aYf asK aZw @@ -55687,14 +56613,14 @@ wXg wKx pXu pXu -pXu -xBS -wXg -cGZ -vwP -acp +awx +dtX +aqL +avK +asc acp acp +agy acp acL acT @@ -55759,9 +56685,9 @@ aSO aVi aVO aoH -aYe -aXH -aYe +aHF +aHF +aHF asK aZx aZx @@ -55904,14 +56830,14 @@ wXg wKx pXu pXu -xBS -wXg -pMv -wXg -mGq +axm +aqL +ann +aqL +asc acp acy -acC +acE acE acC acU @@ -55930,13 +56856,13 @@ aiX afS afS afS -alp +acr ame aic aer afS cLZ -alX +acp amj amj amj @@ -55976,9 +56902,9 @@ aoH aoH aoH aoH -asK -asK -asK +aHF +aHF +aHF asK atw atw @@ -56119,17 +57045,17 @@ aao wXg wXg wKx -pXu -mDN -wXg -geC -wXg -wXg -mGq +lVm +acc +azF +buP +aqL +aqL +asc acq -acy +acz +acC acC -acE acM acM acM @@ -56146,14 +57072,14 @@ acp aiZ afS afS -akM -acr +afS +aAd ame ahj anx afS akM -alX +acp agY arl arl @@ -56193,9 +57119,9 @@ aMg aMg aNw aNw -aNw -aNw -aMg +bhU +bhU +aHF aMg aNw aNw @@ -56333,20 +57259,20 @@ aao aao aao aao -pRP +aao ajD -akP -akP -aus -akX -alH -akX -wpf -vwP +lVm +lVm +lVm +azF +ann +aqL +aac +asc acr -acy +acz +acC acC -acE acM acM acM @@ -56363,15 +57289,15 @@ acp aja ajC ake -aiX +alp acr ame ahj aer afS aoT -alX -aqw +acp +arn arm aip asE @@ -56410,9 +57336,9 @@ aBR aBR aBR aBR -aBR -aBR -aBR +aMc +aHF +aHD aYK aIp aBR @@ -56550,16 +57476,16 @@ aao aao aao aao -iRf -akh -akh -alq -aWy -wMp -akX -akX -hKM -vwP +aao +lVm +lVm +lVm +lVm +brc +aqL +aqL +heI +asc acs acz acC @@ -56587,9 +57513,9 @@ ahj acp acp acp -alX +acp aqB -arn +arl aiY asF arl @@ -56627,9 +57553,9 @@ aBR aBR aFL aBR -aBR -aBR -aBR +aMc +aHF +aHD aBR aBR aBR @@ -56767,17 +57693,17 @@ aao aao aao aao -iRf -akh -akh -akh +aao lVm -aad -akZ -akZ -aad -vwP -acp +lVm +lVm +lVm +awx +ajD +ajD +lVm +asc +acq acz acD acF @@ -56804,9 +57730,9 @@ ahj aer afS bNE -alX -alu -alu +acp +anZ +anZ alu alu alu @@ -56844,9 +57770,9 @@ aFM aFM aFM aFM -aFM -aFM -aFM +aHF +aHF +aHF aFM aFM aFM @@ -56984,20 +57910,20 @@ aao aao aao aao -iRf -akh -akh -akh -aWy -aad -aad -aad -aad -xbV +aao +aao +aao +lVm +lVm +awx +lVm +lVm +lVm +asc acq acz acD -acG +acD acM acM acM @@ -57012,7 +57938,7 @@ ahm aie acp aZq -adS +aiX akg akN afS @@ -57021,14 +57947,14 @@ ahj anx afS akM -alX +acp aEB -aro -arY +asG +asG asG ats alu -auL +auN aqw awh awU @@ -57062,7 +57988,7 @@ apC apC apC apJ -apJ +duI apJ apC apC @@ -57201,20 +58127,20 @@ aao aao aao aao -iRf -iRf -iRf -iRf -iRf aao -aad -aad -alJ -tFM +aao +aao +aao +aao +aao +lVm +lVm +acc +asc acp -acy +acz +acC acC -acE acM acV acV @@ -57229,8 +58155,8 @@ ahn ahj acp aZq -adS -adS +aiX +aiX akN afS amg @@ -57238,11 +58164,11 @@ ahj aer afS aoT -alX -aqD -aqD -aqD -aqD +acp +aqM +buP +buP +aqL att atW atr @@ -57424,14 +58350,14 @@ aao aao aao aao -aad +lVm abU -alJ -tFM +acc +asc acq -acy +acz +acC acC -acE acC vPZ acD @@ -57455,13 +58381,13 @@ aic acp acp acp -alX -aqD -aqD -aqD -aqD -aqD -alu +acp +aqM +buP +aqL +aqL +asc +ayN auL aqw azv @@ -57641,13 +58567,13 @@ aao aao aao aao -abr -aad -alJ -tFM +abY +lVm +acc +asc acp acy -acC +acE acE acC acC @@ -57672,14 +58598,14 @@ aic aer afS eLp -alX -aqD -aqD -aqD -aqD -atu -alu -auN +acp +aqM +aqL +aqL +aqL +asc +alD +auL arR awi awV @@ -57857,14 +58783,14 @@ aao aao aao aao -akY -cJG -aad -abO -vAy -acp +buP +avK +lVm +mWI +asc acp acp +agy acp acp acX @@ -57889,14 +58815,14 @@ aic anx afS akM -alX -aqE -aqE -aqE -aqE -atv -alu -auL +acp +aqM +aqL +aqL +aqL +asc +alD +aqF arR arR aqw @@ -58074,14 +59000,14 @@ aao aao aao aao -akX -akX -hKM -aad -qez -aao -aao -aao +aqL +aqL +heI +lVm +ags +alF +alF +alF aao acp acp @@ -58106,13 +59032,13 @@ anb aer afS aoT -alX -aqF -aqF -aqF -aqF -aqD -alu +acp +aqM +aqL +aqL +aqL +asc +alD auO avy aqw @@ -58291,14 +59217,14 @@ aao aao aao aao -akX -akX -hKM -aad -aad -aao -aao -aao +aqL +aqL +heI +lVm +acc +aqL +arp +acP aao aao aao @@ -58323,18 +59249,18 @@ anc acp acp acp -alX -aqD -aqD -aqD -aqD -aqD +acp +aqM +aqL +aqL +aqL +atu alu -amj -amj +alu +aYe awj -amj -amj +aYe +alu alu ayR azv @@ -58384,7 +59310,7 @@ bhi dbi lSL lSL -aMc +qyq aHD aIn bjD @@ -58507,16 +59433,16 @@ aao aao aao aao -akX -akX -akX -hKM -aad -aad -aao -aao -aao -aao +aqL +aqL +aqL +heI +lVm +tlj +aqL +arp +acP +acP aao aao aao @@ -58540,18 +59466,18 @@ aic aer afS bNE -alX -aqD -aqD -aqD -aqD -aqD +acp +aqM +aqL +aqL +aqL +aqE alu -auP +atv avz aqw auP -avz +wGP alu ayS azv @@ -58723,21 +59649,21 @@ aao aao aao aao -akX -alH -akX +aqL +ann +aqL abL -aad -aad -aad -aao -aao -aao -aao -aao -aao -aao -aao +lVm +dlr +dtX +aqL +arp +dwe +acP +acP +acP +acP +acP acP asc acp @@ -58757,18 +59683,18 @@ ahj anx afS akM -alX -aqE -aqE -aqE -aqE -aqD +acp +aqM +aqL +aqL +aqL +asc alu -auQ +auR avA -awk +aqw awW -axC +axD alu ayT awi @@ -58940,21 +59866,21 @@ aao aao aao aao -akX -akX -wpf -aad -aad -aad -aad -aao -aao -aao -aao -aao -aao -aao -aao +aqL +aqL +aac +lVm +igi +oOt +oOt +eIB +kos +oOt +oOt +stJ +acP +acP +acP acP asc acp @@ -58974,16 +59900,16 @@ ahj aer afS aoT -alX -aqF -aqF -aqF -aqF -aqD +acp +aqM +aqL +aqL +aqL +asc alu auR avA -awl +aqw awW axD alu @@ -59035,7 +59961,7 @@ bhi dbi mdU lRu -aMc +uSp aHF aMg bjF @@ -59157,22 +60083,22 @@ aao aao aao aao -wpf -akZ -aad -aad -aad -aad -aad -aao -aao -aao -aao -aao -aao -aao +aac +ajD +lVm +lVm +isr +pRP +vwP +pEp +iXL +qez +pRP +gKG +acP acP acP +chy asc acp afn @@ -59191,18 +60117,18 @@ ahj acp acp acp -alX -aqD -aqD -aqD -aqD -aqD +acp +aqM +aqL +aqL +aqL +asc alu auS avA aqw awW -avA +axD alu alu azH @@ -59374,23 +60300,23 @@ aao aao aao aao -abr -aad -aad -oRs -oRs -aad -aad -aao -aao -aao -aao -aao -aao +abY +lVm +lVm +dlr +iRf +pRP +vAy +qNT +qNT +saH +qez +gKG acP acP acP -asc +eVZ +aao acp afo afT @@ -59408,20 +60334,20 @@ ahj any aoh aoU -alX -aqD -aqD -aqD -aqD -aqD +acq +aqM +aqL +aqL +aqL +asc alu -auQ +auR avA -awk +laX awW -axC +axD alu -ayV +vQe ayV ayV alu @@ -59591,23 +60517,23 @@ aao aao aao aao -abs -aad -alJ -vRR -akX -hKM -aad -aao -aao -aao -aao -aao -acP -acP +acG +lVm +acc +dNH +iRf +qez +wpP +tGJ +rmk +jWa +vwP +gKG acP acP -asc +chy +aqL +aao acp afp afT @@ -59625,11 +60551,11 @@ ahj aer aoi aoV -alX -aqE -aqE -aqE -aqE +acq +aqM +aqL +aqL +asa atu alu auT @@ -59637,7 +60563,7 @@ avB awm awX axE -alu +ccU ayW ayV ayV @@ -59809,22 +60735,22 @@ aao aao aao aao -abr -alJ -akX -akX -cJG -aad -aao -aao -aao +abY +acc +aqL +isr +qez +wpP +tGJ +tGJ +xyw +vwP +gKG +acP +chy +aqL aao aao -acP -acP -acP -acP -asc acp afo afT @@ -59842,12 +60768,12 @@ ahj acp aer aer -alX -alu -alu -alu -alu -alu +acp +aqM +aqL +arp +acP +asc alu alu alu @@ -60026,22 +60952,22 @@ aao aao aao aao -abr -alJ -akX -akX -akY -hKM -aao -aao +abY +acc +aqL +isr +pRP +wDK +vRJ +vRJ +kpd +qez +oSN +acP +agq aao aao aao -acP -agq -ahe -ahe -ahS acp afq afS @@ -60061,10 +60987,10 @@ aoj aoj apH aqG -alF -alF -alF -alF +aqL +arp +acP +ags alF alF alF @@ -60228,32 +61154,32 @@ aaa (91,1,1) = {" aaa aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aao -abs -abs -wMp -alH -akX -hKM aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +acG +acG +fbF +iRf +pRP +qez +vwP +qez +qez +pRP +oSN acP asc acp @@ -60444,33 +61370,33 @@ aaa "} (92,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -alJ -akX -akX -hKM aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +acc +iZh +szg +szg +kdd +kdd +kdd +szg +cfS acP asc acp @@ -60661,32 +61587,32 @@ aaa "} (93,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -aad -akZ -akZ -aad aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +lVm +ajD +ajD +fbF +arp +acP +acP +acP acP acP asc @@ -60878,34 +61804,34 @@ aaa "} (94,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -aad -aad -aad -aad -aad aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +lVm +lVm +acc +arp acP acP +aao +aao +acP asc acp adS @@ -61095,34 +62021,34 @@ aaa "} (95,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -aad -aad -aad -oRs aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +lVm +lVm +lVm +dtX +arp acP acP +acP +aao +acP asc acp adT @@ -61312,33 +62238,33 @@ aaa "} (96,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -abN -aad -tLt -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +abN +lVm +dtX +aqL +aqL +dzs +acP +acP +acP acP asc acp @@ -61529,33 +62455,33 @@ aaa "} (97,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abs -aad -alJ -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +acG +lVm +acc +aqL +aqL +aqL +arp +acP +acP +acP acP asc acp @@ -61636,14 +62562,14 @@ aNw aNw aNw aNw -aMg -aMg -vis aHF aHF -aMg -aMg -aMg +bhR +aHF +aHF +aHF +aHF +aHF awp bkD blx @@ -61746,33 +62672,33 @@ aaa "} (98,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -alJ -akX -alH aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +acc +aqL +ann +aqL +arp +acP +acP +acP acP asc acq @@ -61853,13 +62779,13 @@ aIn aIn aIn aKt -aKt -aKt +aMc +aHF bhS -biY -dzY -dWg -dWg +aVp +aVp +aVp +aVp bke bku bmF @@ -61963,33 +62889,33 @@ aaa "} (99,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -qmY -wMp -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +qmY +fbF +aqL +aqL +aqL +dzs +acP +acP acP asc adG @@ -62008,7 +62934,7 @@ adS acr aly amv -aly +alx adS aly aly @@ -62070,14 +62996,14 @@ aIn aKt aIp aBR -aWI -aFM -aFM +aMc +aHF +aHF +aHF +aHF +aHF aHF aHF -aFM -aFM -aFM awp bkE bly @@ -62180,33 +63106,33 @@ aaa "} (100,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -abr -alJ -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +abY +acc +aqL +aqL +aqL +arp +acP +acP acP asc acq @@ -62288,12 +63214,12 @@ aBR aBR aBR aMc -erf -auX -auX -auX -auX -erf +aHF +aMg +shf +shf +aMg +aHF aHF awp bkG @@ -62397,33 +63323,33 @@ aaa "} (101,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao -abr -abr -tLt -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +abY +dtX +aqL +aqL +aao +aqL +dzs +acP acP asc acp @@ -62446,7 +63372,7 @@ adS anD alA alA -acr +aAF aqM aqL ase @@ -62505,12 +63431,12 @@ aKl aIm aBR aMc -auX -gpR -gpR +aHD +rsQ gpR gpR -auX +rsQ +jQe bkf awp bkH @@ -62614,33 +63540,33 @@ aaa "} (102,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abq -aad -tLt -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +arv +lVm +dtX +aqL +aqL +aqL +aao +aao +arp +acP acP asc acp @@ -62663,7 +63589,7 @@ adS adk adk adS -alZ +acr aqM arr asc @@ -62727,7 +63653,7 @@ gpR gpR gpR gpR -auX +pri aHF awM awM @@ -62831,33 +63757,33 @@ aaa "} (103,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -abr -alJ -akX -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +abY +acc +aqL +aqL +aqL +aqL +aqL +aao +arp +acP acP ags alF @@ -62880,7 +63806,7 @@ ang anE aok adk -acr +alZ aqM acP asc @@ -62898,8 +63824,8 @@ azS amn amn amn -aCQ -amn +cgt +wLg amn amn amn @@ -62944,7 +63870,7 @@ gpR gpR gpR gpR -auX +pri aHF awM bkI @@ -63048,33 +63974,33 @@ aaa "} (104,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -aad -aad -wMp -akX -akX aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +lVm +lVm +fbF +aqL +aqL +aqL +aqL +aqL +arp +acP acP acP acP @@ -63105,7 +64031,7 @@ amn atz atY amn -avE +azX asJ awY axH @@ -63116,7 +64042,7 @@ amn aBj aBV aBk -aDR +aBk aBj aFQ amn @@ -63156,12 +64082,12 @@ aMc aHD aIm aMc -auX -gpR -gpR -gpR +aHD +rsQ gpR -auX +fpt +rsQ +aMc aHF awM bkJ @@ -63265,39 +64191,39 @@ aaa "} (105,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -abq -aad -aad -aad -wMp -akX -akY aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +arv +lVm +lVm +lVm +fbF +aqL +buP +aqL +aqL +arp acP acP -acP -acP -acP +ilN +qJL +qJL +qJL +ilN acP asc acr @@ -63335,7 +64261,7 @@ aBW aCR aBW aEM -aBW +cnO amn aHD aBR @@ -63373,12 +64299,12 @@ vmm aHF aFM aHF -erf -auX -auX -auX -auX -erf +aHF +aCN +usF +fdC +aCN +aHF aHF awM awM @@ -63482,39 +64408,39 @@ aaa "} (106,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -cJG -aad -aad -abX -aad -akZ -wMp aao aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +avK +lVm +lVm +abX +lVm +ajD +fbF +aqL +aqL +arp acP acP -acP -acP +dhT +fVm +eiS +xah +nVa acP ags alF @@ -63549,11 +64475,11 @@ azV amn aBl aBX +aBk +aBk amn amn amn -aBk -amn aHD aBR aBR @@ -63699,29 +64625,8 @@ aaa "} (107,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -cJG -oRs -aad -aad -aad -aad aao aao aao @@ -63730,8 +64635,29 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aqL +avK +dlr +lVm +lVm +lVm +tlj +aqL +aqL +arp acP acP +dhT +fVm +ahS +xah +nVa acP acP acP @@ -63762,12 +64688,12 @@ dJc axK ayp asJ -aws +erf amn aBm -aBW -amn -ooP +hul +aBk +aBk aEN aFR amn @@ -63807,12 +64733,12 @@ aMc aHD aIn aMc -erf -auX -auX -auX -auX -erf +aHF +aMg +shf +shf +aMg +aHF aHF awp bkK @@ -63916,29 +64842,8 @@ aaa "} (108,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -akX -akX -hKM -aad -aad -abM aao aao aao @@ -63947,8 +64852,29 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aqL +aqL +aqL +heI +lVm +lVm +acc +aqL +aqL +arp acP acP +dhT +ahS +ahS +jvh +nVa acP acP acP @@ -63982,11 +64908,11 @@ asJ azW amn aBn -aBW -amn +jku +aBk +aBk amn amn -aFS amn aHD aBR @@ -64024,12 +64950,12 @@ aHF aHD aWJ aMc -auX -gpR -gpR +aHD +rsQ gpR gpR -auX +rsQ +jQe aHF awp bkL @@ -64133,29 +65059,8 @@ aaa "} (109,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -akY -akX -hKM -aad -aad -abV aao aao aao @@ -64165,8 +65070,29 @@ aao aao aao aao +aao +aao +aao +aao +aao +aqL +buP +aqL +heI +lVm +lVm +dtX +aqL +aqL +arp acP acP +ase +ahS +ahS +ahS +aqM +acP acP acP acP @@ -64196,14 +65122,14 @@ axc awZ ayp asJ -azX -amn +aws +gnk aBo aBW -amn -arz -aEN aBk +aBk +aEN +nGU amn aHD aBR @@ -64246,7 +65172,7 @@ gpR gpR gpR gpR -auX +pri aHF awp bkM @@ -64350,28 +65276,8 @@ aaa "} (110,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao -akX -akX -akX -hKM -aad -abM aao aao aao @@ -64382,7 +65288,27 @@ aao aao aao aao +aao +aao +aao +aao +aqL +aqL +aqL +heI +lVm +acc +aqL +aqL +aqL +arp +acP acP +dhT +ahS +ahS +fVm +nVa acP acP acP @@ -64417,11 +65343,11 @@ azY aAD aBp aBW +aBk +aBk amn amn amn -aBk -amn aHD aBR aBR @@ -64463,7 +65389,7 @@ gpR gpR gpR gpR -auX +pri aHF awp qeK @@ -64567,28 +65493,9 @@ aaa "} (111,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -alH -wpf -aad -aad -abM aao aao aao @@ -64599,7 +65506,26 @@ aao aao aao aao +aao +aao +aao +aao +ann +aac +lVm +lVm +acc +aqL +aqL +aqL +arp +acP acP +dhT +ahS +fVm +eiS +nVa acP acP acP @@ -64630,14 +65556,14 @@ aua aua awn aua -aws +ooP amn aBq -aBY -amn -aDT -aEN +aBq +shm aBk +aEN +pGN amn aHF aFM @@ -64675,12 +65601,12 @@ aBR aBR aBR aWW -auX -gpR -gpR -gpR +aHD +rsQ gpR -auX +fpt +rsQ +aMc aHF awp awp @@ -64784,29 +65710,9 @@ aaa "} (112,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao -akX -hKM -aad -aad -alJ -vRR aao aao aao @@ -64818,6 +65724,26 @@ aao aao aao aao +aao +aao +aao +aqL +heI +lVm +lVm +acc +dNH +aqL +aqL +aqL +dzs +acP +dhT +ruF +foj +eyA +nVa +acP acP acP acP @@ -64892,12 +65818,12 @@ aBR aBR aBR aMc -erf -auX -auX -auX -auX -erf +aHF +aCN +usF +fdC +aCN +aHF aHF awp bkO @@ -65001,29 +65927,11 @@ aaa "} (113,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao -abY -acb -dtX -wDK aao aao aao @@ -65036,6 +65944,24 @@ aao aao aao aao +aao +aao +abY +lVm +dtX +aqL +aqL +aqL +aqL +arp +acP +ilN +mpn +mpn +mpn +ilN +acP +acP acP acP ags @@ -65061,7 +65987,7 @@ amn avG awq awq -awq +aCQ awq axM aws @@ -65218,29 +66144,11 @@ aaa "} (114,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao -abs -alJ -akX -akX aao aao aao @@ -65253,6 +66161,24 @@ aao aao aao aao +aao +aao +acG +acc +aqL +aqL +aqL +aao +aqL +aqL +dzs +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -65330,9 +66256,9 @@ asv aHF aHF aHF -asv -awf -awf +aHF +aHF +aHF awp bkE blC @@ -65435,29 +66361,12 @@ aaa "} (115,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -alJ -alH -akX aao aao aao @@ -65471,6 +66380,23 @@ aao aao aao aao +aao +acc +ann +aqL +aao +aao +aao +aqL +arp +acP +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -65548,8 +66474,8 @@ aHF aHF aHF asv -bjJ -bgx +atJ +atJ awp bkP awp @@ -65652,29 +66578,12 @@ aaa "} (116,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -acc -wDK -wDK aao aao aao @@ -65689,6 +66598,23 @@ aao aao aao aao +acc +aqL +aqL +aqL +aqL +aqL +aqL +arp +acP +acP +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -65709,7 +66635,7 @@ amI aty atY amn -avE +azX awr axg axO @@ -65765,7 +66691,7 @@ aHF aHF aHF asv -beI +wQD bgx bkw blX @@ -65869,30 +66795,12 @@ aaa "} (117,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -aad -wMp -akX -akX aao aao aao @@ -65907,6 +66815,24 @@ aao aao aao aao +lVm +fbF +aqL +aqL +aqL +aqL +aqL +aqL +dzs +acP +acP +acP +acP +acP +acP +acP +acP +acP acP acP acP @@ -65964,7 +66890,7 @@ asH aYZ aZE bac -bbt +aYY bbt bac bac @@ -66086,32 +67012,12 @@ aaa "} (118,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -aad -abr -akZ -xWI -akZ -ack aao aao aao @@ -66125,13 +67031,33 @@ aao aao aao aao +aao +lVm +abY +ajD +xWI +ajD +fbF +aqL +aqL +aqL +iSc +iSc +dzs acP acP acP acP acP -acP -asc +agq +ahe +ahe +ahe +ahe +ahe +ahe +ahe +ahS aku aoo apc @@ -66148,11 +67074,11 @@ jZp axh amn amn -amn +anJ aAc -amn -amn -amn +anJ +anJ +anJ eRW amn amn @@ -66189,7 +67115,7 @@ aJI bac bem asv -bfg +bgd bfL bgc bgc @@ -66303,33 +67229,12 @@ aaa "} (119,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao -aad -aad -abO -aad -aad -aad -ack aao aao aao @@ -66344,11 +67249,32 @@ aao aao aao aao +lVm +lVm +mWI +lVm +lVm +lVm +fbF +aqL +aqL +aqL +aqL +aqL +dzs acP acP acP acP asc +ilN +gGC +gGC +gGC +gGC +ahS +ahS +ahS aku aop apc @@ -66365,10 +67291,10 @@ awt avJ axP ahf -amn -aAd -aAF -aAF +anJ +aAH +aAg +aAg aAg anJ aDV @@ -66520,20 +67446,6 @@ aaa "} (120,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66541,15 +67453,6 @@ aao aao aao aao -aad -aad -abs -aad -aad -oRs -abU -abU -ack aao aao aao @@ -66561,11 +67464,34 @@ aao aao aao aao -acP +aao +aao +aao +lVm +lVm +acG +lVm +lVm +dlr +abU +abU +fbF +aqL +aqL +aqL +dzs acP acP acP asc +gGC +ruF +ruF +fVm +ahS +ahS +ahS +ahS aku aop apc @@ -66582,10 +67508,10 @@ aop apc apc ars -amn +anJ aAe aAG -aBt +aCb aCb aCU aDW @@ -66737,20 +67663,6 @@ aaa "} (121,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66759,14 +67671,6 @@ aao aao aao aao -aad -aad -aad -tLt -akX -cJG -oRs -abM aao aao aao @@ -66778,11 +67682,33 @@ aao aao aao aao -acP +aao +aao +aao +lVm +lVm +lVm +dtX +aqL +avK +dlr +tlj +aqL +aqL +aqL +arp acP acP acP asc +gGC +eiS +fVm +ahS +ahS +fVm +ahS +ahS aku aoq apd @@ -66954,20 +67880,6 @@ aaa "} (122,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -66978,13 +67890,6 @@ aao aao aao aao -alJ -akX -akX -akX -akX -hKM -ack aao aao aao @@ -66996,10 +67901,31 @@ aao aao aao aao -acP +aao +aao +aao +acc +aqL +aqL +aqL +aqL +heI +fbF +aqL +aqL +aqL +dzs acP acP asc +gGC +foj +ahS +ahS +fVm +fVm +ahS +ahS ako ako ako @@ -67171,20 +68097,6 @@ aaa "} (123,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -67195,14 +68107,6 @@ aao aao aao aao -alJ -akX -akY -akX -akX -hKM -aad -ack aao aao aao @@ -67213,10 +68117,32 @@ aao aao aao aao -acP +aao +aao +aao +aao +acc +aqL +buP +aqL +aqL +heI +lVm +fbF +aqL +aqL +arp acP acP asc +gGC +ahS +ahS +ahS +fVm +ahS +ahS +fVm ako aor ape @@ -67282,10 +68208,10 @@ asv asv asv asv +atJ +atJ asv asv -awf -awf awp bkT bkU @@ -67388,20 +68314,6 @@ aaa "} (124,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -67412,14 +68324,6 @@ aao aao aao aao -aad -wMp -akX -vRR -akX -hKM -aad -abM aao aao aao @@ -67431,21 +68335,43 @@ aao aao aao aao -acP +aao +aao +aao +lVm +fbF +aqL +dNH +aqL +heI +lVm +tlj +aqL +aqL +aqL +dzs acP asc +ahS +ahS +ahS +ahS +ahS +ahS +ahS +fVm ako aos ape apN ape -aos +pBh ako asM atE apc ako -atE +isk aop apc axR @@ -67453,7 +68379,7 @@ ayw azc ako aAJ -aBu +apo tPr anJ aEa @@ -67605,20 +68531,6 @@ aaa "} (125,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -67629,14 +68541,6 @@ aao aao aao aao -aad -alJ -akX -akX -wpf -aad -abX -tLt aao aao aao @@ -67649,20 +68553,42 @@ aao aao aao aao +aao +aao +lVm +acc +aqL +aqL +aac +lVm +abX +dtX +aqL +aao +aqL +arp acP asc +ahS +fVm +fVm +ahS +ahS +ahS +fVm +eiS ako -aos ape -apN ape -aot +sVY +ape +oOM ako asN atE apc ako -atE +iaq aop apc ako @@ -67670,8 +68596,8 @@ ayx azd ako aAJ -aBu -aCc +apo +apo anJ aEb aEO @@ -67822,20 +68748,6 @@ aaa "} (126,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -67847,13 +68759,6 @@ aao aao aao aao -aad -akZ -akZ -aad -aad -alJ -vRR aao aao aao @@ -67866,10 +68771,31 @@ aao aao aao aao -acP +aao +aao +lVm +ajD +ajD +lVm +lVm +acc +dNH +aqL +aao +aao +aqL +dzs asc +gGC +ahS +fVm +ahS +ahS +fVm +foj +foj ako -aos +ape apf apO aqR @@ -67879,7 +68805,7 @@ asO atE apc ako -atE +mcc aop axi ako @@ -67887,8 +68813,8 @@ ako ako ako aAJ -aBu -aCc +apo +apo anJ aEc aEc @@ -68039,20 +68965,6 @@ aaa "} (127,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -68062,15 +68974,6 @@ aao aao aao aao -abq -abU -abU -aad -aad -aad -aad -tLt -akX aao aao aao @@ -68085,12 +68988,35 @@ aao aao aao aao +arv +abU +abU +lVm +lVm +lVm +lVm +dtX +aqL +aqL +aqL +aao +aqL +arp +asc +gGC +ahS +ahS +ahS +xah +aao +aao +aao ako -aos +xrN ape eJU aqS -aos +ape ako asP apc @@ -68104,8 +69030,8 @@ ayw azc ako aAJ -aBu -aCc +apo +apo anJ anJ anJ @@ -68256,20 +69182,6 @@ aaa "} (128,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -68278,16 +69190,6 @@ aao aao aao aao -oRs -oRs -abW -aad -aad -aad -aad -alJ -akX -akX aao aao aao @@ -68302,12 +69204,36 @@ aao aao aao aao +dlr +dlr +abW +lVm +lVm +lVm +lVm +acc +aqL +aqL +aqL +aqL +aqL +aqL +arp +asc +gGC +foj +ruF +aao +aao +aao +aao +aao ako aot apg apP ape -aos +ape ako asQ atE @@ -68321,19 +69247,19 @@ ayx azd ako aAK -aBu -aCd +apo +apo aCV -arD -arD -arD -arD -arD -arD -arD -aKA -aCc -aMk +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo apo apo anT @@ -68473,20 +69399,6 @@ aaa "} (129,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -68495,16 +69407,6 @@ aao aao aao aao -alH -akX -cJG -oRs -aad -aad -abW -alJ -akX -akY aao aao aao @@ -68519,12 +69421,36 @@ aao aao aao aao +ann +aqL +avK +dlr +lVm +lVm +abW +acc +aqL +buP +aqL +aqL +aqL +aqL +aqL +asc +gGC +aao +aao +aao +aao +aao +aao +aao ako -aos +xrN ape apN aqT -arv +ape ako asR atF @@ -68538,19 +69464,19 @@ ako ako ako aAK -aBu -aCc -aCW -arD -arD -arD -arD -arD +apo +apo +apo +apo +apo +apo +apo +apo awy -arD -aKB -aCc -aMk +apo +apo +apo +apo apo apo aOU @@ -68690,20 +69616,6 @@ aaa "} (130,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -68712,16 +69624,6 @@ aao aao aao aao -akX -akX -akX -akX -cJG -aad -aad -alJ -akX -akX aao aao aao @@ -68736,6 +69638,30 @@ aao aao aao aao +aqL +aqL +aqL +aqL +avK +lVm +lVm +acc +aqL +aqL +aao +aao +aao +aao +aqL +aao +aao +aao +aao +aao +aao +aao +aao +aao ako ako ako @@ -68755,19 +69681,19 @@ ayw azc ako aAJ -aBu -aCc -aCd -arD -arD -arD -arD -arD -arD -arD -arD -aKA -aMk +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo +apo apo apo anT @@ -68907,20 +69833,6 @@ aaa "} (131,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -68929,12 +69841,26 @@ aao aao aao aao -akX -akX -akX -akX -akX -hKM +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aqL +aqL +aqL +aqL +aqL +heI aad alJ akX @@ -68972,13 +69898,13 @@ ayx azd ako aAJ +apo anT anX anX anX anX anX -anX anT anT anT @@ -69124,20 +70050,6 @@ aaa "} (132,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69146,15 +70058,29 @@ aao aao aao aao -akY -akX +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +buP +aqL iOL -vRR -akX +dNH +aqL hKM aad aad -wMp +hdJ aao aao aao @@ -69189,12 +70115,12 @@ ako ako ako aAK -anU -aCf +apo +nIs aCX -aEd +uHx aES -aCZ +gAE aGK anT aIw @@ -69341,20 +70267,6 @@ aaa "} (133,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69363,6 +70275,20 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao akX akX akX @@ -69402,16 +70328,16 @@ avI apc axk axS -ayy +aBx aze -ayy +aBx aAL aBx aCg aCY -aCf +aCZ aET -aFZ +aMQ aCZ anT aIw @@ -69558,20 +70484,6 @@ aaa "} (134,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69582,11 +70494,25 @@ aao aao aao aao -akX -wpf -aad +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +oeT +ptV aad aad +qhS abM aao aao @@ -69619,17 +70545,17 @@ avJ apc axl ovq -ayz -ayz -aAh +apo aqa -anU -aCf +ata +apo +apo +tKR aCo -aCf -aEU -aFZ aCZ +aEU +aMQ +uXO anT aIw aJs @@ -69775,20 +70701,6 @@ aaa "} (135,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -69800,11 +70712,25 @@ aao aao aao aao -abr -aad -oRs -oRs -abM +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +bup +tQY +fBU +som +gtG aao aao aao @@ -69836,16 +70762,16 @@ apc avJ apc ako -ako -ako -ako +aBu arD -anU -aCf +arD +aMk +apo +nIs +aCZ aCZ -aCf aQa -aCf +aCZ aCZ anT aIx @@ -69992,36 +70918,36 @@ aaa "} (136,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aab -aab -aab aab aao aao aao aao aao -abr -tLt +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +vMb +rTr akX akX -cJG +eAG aao aao aao @@ -70052,18 +70978,18 @@ aml apc apc apc -axR -ayw -azc -ako +aku +aBu arD -anU -aCf +arD +aMk +apo +nIs +gYM aCo -aEe aEU -aCf aCZ +gAE anT aIy aIC @@ -70209,36 +71135,36 @@ aaa "} (137,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abq -abU -alJ -akX -akX +tyH +xHQ +cVT +cVT rYt -akX +cVT aao aao aao @@ -70269,18 +71195,18 @@ ask apc apc apc -ako -ayx -azd -ako +aku +aBu arD -anU -aCf +arD +aMk +apo +nIs +gYM aCo -aEe aEW -aCf aCZ +gAE anT aIz aIC @@ -70426,29 +71352,29 @@ aaa "} (138,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao oRs aad alJ @@ -70486,17 +71412,17 @@ aml atE aww apc -ako -ako -ako -ako +aku +aBu arD -anU -aCf -aCo +arD +aMk +apo +nIs +gYM aEf aEU -aCf +aCZ gAE anT bix @@ -70643,36 +71569,36 @@ aaa "} (139,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao akX hKM aad wMp akX akX -akX +oeT akX aao aao @@ -70682,9 +71608,9 @@ akX akX wpf aad -ack aad -abq +aad +aad akZ alI alH @@ -70703,14 +71629,14 @@ ako xqf apc apc -axR -ayw -azc -ako +aku +aBu arD -anU -aCf -aCZ +arD +aMk +apo +nIs +gAE aCZ aQa aCZ @@ -70860,29 +71786,29 @@ aaa "} (140,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao alH cJG aad @@ -70899,9 +71825,9 @@ akZ fhI aad aad -abM aad -abr +aad +aad aad alJ akY @@ -70921,12 +71847,12 @@ avJ avJ axi ako -ayx -azd -ako +aBu arD +arD +aMk +anT anT -anY anY anY cYI @@ -71077,29 +72003,29 @@ aaa "} (141,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao akY akX hKM @@ -71134,15 +72060,15 @@ akL akL akL akL -atE +wzc apc avJ ako -ako -ako -ako +aBu arD -anT +arD +aMk +nIs aCi aCZ aCZ @@ -71294,31 +72220,31 @@ aaa "} (142,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao hKM aad aad @@ -71350,16 +72276,16 @@ apU asX aoB auf -akL -atE -apc -apc +uQY +uey +uey +uey ako -aao -arD +aBu arD arD -anT +aMk +nIs aCj aCo aCo @@ -71511,25 +72437,6 @@ aaa "} (143,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71537,6 +72444,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abr aad aad @@ -71568,15 +72494,15 @@ aoB apU aoB akL -atE -apc -apc -ako -aao -arD -arD -arD -anT +dMT +aqa +aqa +aqa +ant +aKB +vis +aMk +nIs aOc aCo aCo @@ -71728,25 +72654,6 @@ aaa "} (144,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71754,6 +72661,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abs aad aad @@ -71785,14 +72711,14 @@ asY aoB aug akL -atE -apc -apc -ako -aao -aao -arD -arD +tKE +aCc +aCc +aCc +aCc +aCc +gwb +aMk anT aCl aDa @@ -71945,25 +72871,6 @@ aaa "} (145,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -71972,6 +72879,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abs abO aad @@ -71998,18 +72924,18 @@ apZ aoB arC aoB -asZ +auh aoB auh akL -apc -apc -apc -ako -aao -aao -arD -arD +aBu +aCc +knF +aDR +aKA +aAh +gwb +aMk anT aCm aCZ @@ -72162,25 +73088,6 @@ aaa "} (146,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -72190,6 +73097,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao abr alJ akX @@ -72219,15 +73145,15 @@ akL akL akL akL -avK -awx -axm -ako -aao +aBu +aCc +knF +aDT aao -arD -arD -anT +kCm +aAh +aMk +nIs aCn aCZ aCo @@ -72379,25 +73305,6 @@ aaa "} (147,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -72408,11 +73315,6 @@ aao aao aao aao -brc -buP -fbF -isr -iZh aao aao aao @@ -72427,6 +73329,30 @@ aao aao aao aao +aao +aao +aao +aao +aao +aEe +kpf +kpf +kpf +aEe +aEe +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tAW aqa aqa @@ -72435,16 +73361,16 @@ aqa ata ata ata -ann -ant -ant +aqa ant -ako +aCc +aCc +aDT aao aao -arD -arD -anT +ayz +aMk +nIs aCo aCZ aEg @@ -72596,25 +73522,6 @@ aaa "} (148,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -72624,11 +73531,6 @@ aao aao aao aao -arK -szg -szg -szg -arK aao aao aao @@ -72640,6 +73542,30 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aoa +aFZ +aFZ +aFZ +aFZ +aFZ +aoa +aao +aao +aao +aao +aao +aao +aao +aao +aao amG aao aao @@ -72647,21 +73573,21 @@ aao aao aao aao -arD +aCc asm -arD -arD -arD -arD -arD -arD -arD -arD -aao +aCc +aCc +aCc +knF +aCc +aCc +aCc +aFS +kCm aao -arD -arD -anT +ayz +aMk +nIs aCp aDb aEh @@ -72813,25 +73739,6 @@ aaa "} (149,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -72841,11 +73748,6 @@ aao aao aao aao -aTv -aTv -aTv -aTv -aTv aao aao aao @@ -72857,6 +73759,30 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aoa +bjJ +qtx +qtx +qtx +jMB +aoa +aao +aao +aao +aao +aao +aao +aao +aao +aao wQC gXp eMX @@ -72867,17 +73793,17 @@ aao aao aao aao -arD -arD -arD +oWM +oWM aao -arD -arD -arD aao -arD -arD -arD +knF +aCc +knF +aFS +dWg +bSc +aMk anW anW anW @@ -73030,25 +73956,6 @@ aaa "} (150,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -73057,14 +73964,33 @@ aao aao aao aao -gNH -szg -szg -szg -heI -szg -szg -gNH +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aoa +aFZ +aFZ +aFZ +aFZ +aFZ +aoa aao aao aao @@ -73083,19 +74009,19 @@ aao aao aao aao +anU +kCm +kCm +gbt aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -aMk +aao +aCc +aCc +aCc +aCc +knF +bMz +apo anW aDc aEi @@ -73247,25 +74173,6 @@ aaa "} (151,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -73274,15 +74181,34 @@ aao aao aao aao -aac -azF -azF -azF -azF -azF -azF aao -kpf +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aCf +aCf +aCf +aCf +aCf +aCf +aao +aao tQw tQw tQw @@ -73298,20 +74224,20 @@ tQw aao aao aao -aao -aao -aao -aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +ack +tng +arz +anU +kCm +ayz +knF +whv +aCc +aCc +aCc +aCc +aCc +aCc aMk anW aDc @@ -73464,25 +74390,6 @@ aaa "} (152,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -73491,6 +74398,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -73514,21 +74440,21 @@ tQw tQw aao aao -aao -aao -aao -aao -aao -aao -arD -arD -arD -arD -arD -arD -arD -arD -arD +tVm +tng +tng +tng +ack +awf +ayz +knF +whv +aCc +aCc +knF +aCc +aCc +knF aMk anW aDc @@ -73681,25 +74607,6 @@ aaa "} (153,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -73708,6 +74615,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw ahw tQw @@ -73729,23 +74655,23 @@ tQw tQw tQw tQw -tQw -aao -aao aao -aao -aao -aao -aao -arD -arD -awy -arD -arD -arD -arD -arD -arD +ack +tng +tng +tng +tng +arz +awf +kCm +aAh +kLW +aCc +knF +aCc +aCc +aCc +aCc aMk anW aDc @@ -73898,25 +74824,6 @@ aaa "} (154,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -73925,6 +74832,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -73947,22 +74873,22 @@ tQw ahw tQw tQw -tQw -aao -aao -aao +fNh +tng +tng +tng +tng +tng aao aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +kCm +dTa +aCc +aCc +aCc +aCc +aCc +aCc aMk anW aDd @@ -74115,25 +75041,6 @@ aaa "} (155,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -74141,6 +75048,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74164,22 +75090,22 @@ tQw ujC ujC tQw -tQw +vVB +ack +tng +tng aao aao aao aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +aao +aBY +aAh +knF +knF +aCc +aCc +aCc aMk anW aDe @@ -74332,25 +75258,6 @@ aaa "} (156,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -74358,6 +75265,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74382,21 +75308,21 @@ ujC ujC tQw tQw -tQw -tQw +tCQ +tCQ aao aao -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD -arD +aao +kCm +gbt +kCm +kCm +gbt +aCd +aAh +aCc +aCc +aCc aMk anW aDf @@ -74549,31 +75475,31 @@ aaa "} (157,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -74605,15 +75531,15 @@ aao aao aao aao -arD -arD -arD +kCm +kCm +kCm aao aao aao -arD -arD -arD +aCc +aCc +aCc aMk anW aDg @@ -74766,31 +75692,31 @@ aaa "} (158,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw ahw tQw @@ -74822,15 +75748,15 @@ tQw aao aao aao -arD -arD +kCm +gbt aao aao aao aao -arD -arD -arD +knF +knF +aCc aMk anW aDh @@ -74983,30 +75909,30 @@ aaa "} (159,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75047,7 +75973,7 @@ aao aao aao aao -arD +coc aMk anW anW @@ -75200,29 +76126,29 @@ aaa "} (160,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75417,29 +76343,29 @@ aaa "} (161,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75634,28 +76560,28 @@ aaa "} (162,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -75851,28 +76777,28 @@ aaa "} (163,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76068,28 +76994,28 @@ aaa "} (164,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw ahw @@ -76285,29 +77211,29 @@ aaa "} (165,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76502,29 +77428,29 @@ aaa "} (166,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76719,29 +77645,29 @@ aaa "} (167,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -76936,29 +77862,29 @@ aaa "} (168,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77153,29 +78079,29 @@ aaa "} (169,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77370,29 +78296,29 @@ aaa "} (170,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77587,29 +78513,29 @@ aaa "} (171,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -77804,29 +78730,29 @@ aaa "} (172,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78021,29 +78947,29 @@ aaa "} (173,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78238,29 +79164,29 @@ aaa "} (174,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78455,29 +79381,29 @@ aaa "} (175,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -78672,29 +79598,29 @@ aaa "} (176,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw ahw tQw @@ -78889,29 +79815,29 @@ aaa "} (177,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79106,29 +80032,29 @@ aaa "} (178,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79323,29 +80249,29 @@ aaa "} (179,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79494,73 +80420,73 @@ aao aao aao aao -izh -izh -izh -izh -izh -izh -izh -izh -izh -izh -aao -aao -aao -aao -aao -aao -aao -izh -izh -izh -izh -izh -izh -izh -izh -aao -aao -aao -aao -aao -aao -aao -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(180,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aao +izh +izh +izh +izh +izh +izh +izh +izh +izh +izh +aao +aao +aao +aao +aao +aao +aao +izh +izh +izh +izh +izh +izh +izh +izh +aao +aao +aao +aao +aao +aao +aao +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(180,1,1) = {" +aaa +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao aao aao tQw @@ -79757,29 +80683,29 @@ aaa "} (181,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -79974,29 +80900,29 @@ aaa "} (182,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80191,30 +81117,30 @@ aaa "} (183,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80408,30 +81334,30 @@ aaa "} (184,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80450,7 +81376,7 @@ adZ adZ adZ aeQ -ald +wQu daB amO afy @@ -80625,30 +81551,30 @@ aaa "} (185,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -80842,31 +81768,31 @@ aaa "} (186,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -81059,31 +81985,31 @@ aaa "} (187,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -81276,25 +82202,6 @@ aaa "} (188,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81302,6 +82209,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw ahw @@ -81493,25 +82419,6 @@ aaa "} (189,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81519,6 +82426,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -81710,25 +82636,6 @@ aaa "} (190,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81737,6 +82644,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -81927,25 +82853,6 @@ aaa "} (191,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -81954,6 +82861,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82144,25 +83070,6 @@ aaa "} (192,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -82171,6 +83078,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82361,25 +83287,6 @@ aaa "} (193,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -82388,6 +83295,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82578,25 +83504,6 @@ aaa "} (194,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -82605,6 +83512,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -82795,25 +83721,6 @@ aaa "} (195,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -82823,6 +83730,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83012,25 +83938,6 @@ aaa "} (196,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -83041,6 +83948,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -83229,25 +84155,6 @@ aaa "} (197,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -83258,6 +84165,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw wQC @@ -83446,25 +84372,6 @@ aaa "} (198,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -83475,6 +84382,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw wQC @@ -83663,25 +84589,6 @@ aaa "} (199,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -83692,6 +84599,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw wQC @@ -83880,25 +84806,6 @@ aaa "} (200,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -83909,6 +84816,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tIq @@ -84097,25 +85023,6 @@ aaa "} (201,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -84126,6 +85033,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw gmN @@ -84314,25 +85240,6 @@ aaa "} (202,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -84343,6 +85250,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -84531,25 +85457,6 @@ aaa "} (203,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -84560,6 +85467,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -84748,25 +85674,6 @@ aaa "} (204,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -84774,6 +85681,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -84965,30 +85891,30 @@ aaa "} (205,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85182,30 +86108,30 @@ aaa "} (206,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85399,30 +86325,30 @@ aaa "} (207,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85616,30 +86542,30 @@ aaa "} (208,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -85833,30 +86759,30 @@ aaa "} (209,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -86050,30 +86976,30 @@ aaa "} (210,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -86267,30 +87193,30 @@ aaa "} (211,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -86441,73 +87367,73 @@ aao aao aao aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(212,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aao -aao -aao -aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,1) = {" +aaa +aab +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -86701,30 +87627,30 @@ aaa "} (213,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -86918,30 +87844,30 @@ aaa "} (214,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -87135,30 +88061,30 @@ aaa "} (215,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw ahw @@ -87352,30 +88278,30 @@ aaa "} (216,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -87569,30 +88495,30 @@ aaa "} (217,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -87783,27 +88709,8 @@ aaa aaa aaa aaa -"} -(218,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +"} +(218,1,1) = {" aaa aab aao @@ -87811,6 +88718,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -88003,31 +88929,31 @@ aaa "} (219,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -88220,25 +89146,6 @@ aaa "} (220,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -88288,6 +89195,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -88437,25 +89363,6 @@ aaa "} (221,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -88508,6 +89415,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao tQw tQw tQw @@ -88654,25 +89580,6 @@ aaa "} (222,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -88751,6 +89658,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao gCE gCE gCE @@ -88871,25 +89797,6 @@ aaa "} (223,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aab aao aao @@ -88976,6 +89883,25 @@ aao aao aao aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao +aao aab aaa aaa @@ -89088,25 +90014,25 @@ aaa "} (224,1,1) = {" aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab +aab aab aab aab diff --git a/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm b/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm index 931fb53a0b2a..027d2630f392 100644 --- a/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm +++ b/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm @@ -561,9 +561,13 @@ }, /area/bigredv2/outside/marshal_office) "bD" = ( -/obj/structure/bed/chair, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, /turf/open/floor{ - icon_state = "darkish" + dir = 1; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "bE" = ( @@ -631,12 +635,10 @@ }, /area/bigredv2/outside/marshal_office) "bO" = ( -/obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - icon_state = "darkish" +/turf/open/mars{ + icon_state = "mars_dirt_13" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "bP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -715,30 +717,38 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor{ - icon_state = "darkish" + dir = 8; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "bZ" = ( -/obj/structure/surface/table, -/obj/item/device/taperecorder, +/obj/effect/landmark/static_comms/net_one, /turf/open/floor{ - icon_state = "darkish" + icon_state = "bcircuit" }, /area/bigredv2/outside/marshal_office) "ca" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, /turf/open/floor{ - icon_state = "darkish" + dir = 9; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "cb" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - name = "\improper Marshal Office Interrogation" - }, /turf/open/floor{ - icon_state = "darkish" + dir = 9; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "cc" = ( /obj/structure/surface/table, /obj/item/clothing/mask/gas, @@ -781,27 +791,26 @@ }, /area/bigredv2/outside/marshal_office) "cj" = ( -/obj/structure/bed/chair{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor{ - icon_state = "darkish" + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "ck" = ( -/obj/structure/machinery/camera/autoname{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 }, /turf/open/floor{ - icon_state = "darkish" + dir = 6; + icon_state = "red" }, /area/bigredv2/outside/marshal_office) "cl" = ( -/obj/structure/machinery/door_control{ - id = "Marshal Offices"; - name = "Storm Shutters"; - pixel_x = -32 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/corpsespawner/prison_security, /obj/effect/decal/cleanable/blood, @@ -838,18 +847,12 @@ /turf/open/floor/plating, /area/bigredv2/outside/marshal_office) "cq" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ - dir = 1; - name = "\improper Marshal Office Evidence Room" - }, /turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/marshal_office) +/area/bigredv2/outside/n) "cr" = ( -/obj/structure/machinery/light{ - dir = 8 - }, /obj/item/ammo_casing/shell, /turf/open/floor{ dir = 8; @@ -1153,6 +1156,20 @@ }, /turf/open/floor, /area/bigredv2/outside/marshal_office) +"do" = ( +/turf/open/mars{ + icon_state = "mars_dirt_10" + }, +/area/bigredv2/outside/n) +"fh" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ + dir = 1; + name = "\improper Marshal Office Evidence Room" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/marshal_office) "fD" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1162,6 +1179,11 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/floor, /area/bigredv2/outside/marshal_office) +"gu" = ( +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/n) "gJ" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/landmark/objective_landmark/close, @@ -1169,6 +1191,12 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"if" = ( +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "ix" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/landmark/objective_landmark/far, @@ -1176,6 +1204,18 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"jq" = ( +/obj/structure/machinery/camera/autoname, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 5; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) "qm" = ( /obj/structure/bed, /obj/effect/landmark/objective_landmark/medium, @@ -1183,6 +1223,34 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"rC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) +"rL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 10; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) +"wL" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "bcircuit" + }, +/area/bigredv2/outside/marshal_office) "zX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/objective_landmark/medium, @@ -1190,6 +1258,45 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"MM" = ( +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Marshal Offices"; + name = "\improper Marshal Offices Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/medical) +"No" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "red" + }, +/area/bigredv2/outside/marshal_office) +"NW" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door_control{ + id = "Marshal Offices"; + name = "Storm Shutters"; + pixel_y = 24 + }, +/turf/open/floor{ + dir = 4; + icon_state = "redcorner" + }, +/area/bigredv2/outside/marshal_office) +"RJ" = ( +/obj/effect/landmark/lv624/xeno_tunnel, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/n) (1,1,1) = {" aa @@ -1231,7 +1338,7 @@ by cZ cZ cZ -cq +at cA bi bG @@ -1254,8 +1361,8 @@ ah bA cZ cZ -ci -at +cZ +fh cA cO cU @@ -1278,7 +1385,7 @@ ah bB bN bX -by +wL at cA cP @@ -1304,7 +1411,7 @@ at at at at -cA +NW bk ah ah @@ -1324,10 +1431,10 @@ bb bk ah ca -ca +No bY -ca -at +rL +cZ cA bk bG @@ -1348,10 +1455,10 @@ bb bl ah bD -bO +by bZ cj -at +cZ cB bk cV @@ -1371,11 +1478,11 @@ aR bc bk ah -ca -ca -ca -ca -at +bD +by +by +cj +cZ cC cQ bL @@ -1395,11 +1502,11 @@ aR bc bm ah -ca -ca -ca +jq +rC +rC ck -at +cZ cC bi ah @@ -1419,11 +1526,11 @@ aR bb bh ah -at -at -cb -at -at +cZ +cZ +cZ +cZ +cZ cC bi bG @@ -1506,8 +1613,8 @@ dj (14,1,1) = {" ai ai -aj -aj +if +RJ ah aB aL @@ -1528,10 +1635,10 @@ de dj "} (15,1,1) = {" -ai -ai aj aj +aj +cq ah aC cZ @@ -1552,10 +1659,10 @@ ci dj "} (16,1,1) = {" -ai -ai aj aj +aj +cq ah aD cZ @@ -1576,10 +1683,10 @@ df dj "} (17,1,1) = {" -ai -aj aj aj +bO +cq ah aD aN @@ -1602,8 +1709,8 @@ dj (18,1,1) = {" aj aj -aj -aj +do +ai ah aE zX @@ -1621,13 +1728,13 @@ bk cW db dg -dj +MM "} (19,1,1) = {" aj -aj -aj -aj +bO +gu +ai ah aF aN @@ -1645,13 +1752,13 @@ bk bG dc dh -dj +MM "} (20,1,1) = {" -aj -aj -aj -aj +bO +gu +ai +ai ah aG aN @@ -1672,10 +1779,10 @@ bG dj "} (21,1,1) = {" -aj -aj -aj -aj +cb +ai +ai +ai ah aH cZ @@ -1696,7 +1803,7 @@ dd dk "} (22,1,1) = {" -aj +cq ah ah ah diff --git a/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm b/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm index 3774e4222fae..d148955c0c93 100644 --- a/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm +++ b/maps/map_files/BigRed/sprinkles/20.lz1entrance_v2.dmm @@ -428,15 +428,17 @@ }, /area/bigredv2/outside/nw) "bo" = ( -/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/stack/rods, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "asteroidwarning" }, /area/bigredv2/outside/nw) "bp" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/rods, /obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 6; icon_state = "asteroidwarning" }, /area/bigredv2/outside/nw) @@ -447,8 +449,10 @@ }, /area/bigredv2/outside/nw) "br" = ( +/obj/item/stack/rods, +/obj/item/stack/rods, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 6; icon_state = "asteroidwarning" }, /area/bigredv2/outside/nw) @@ -835,7 +839,7 @@ aE ak aW aW -bm +bG bv bv bF @@ -856,7 +860,7 @@ aF aM aX aM -bo +bz bw bz bz @@ -877,7 +881,7 @@ aG ab ab ab -bp +bS bx bx bG @@ -919,7 +923,7 @@ aI aP aP ac -br +bn bl bu bE @@ -940,7 +944,7 @@ aJ aQ aY ac -bs +bn bs bl bE @@ -961,7 +965,7 @@ aA aR aZ ac -bi +bo bi bA bE @@ -982,7 +986,7 @@ aw aK ba ai -bi +bX bi bA bE @@ -1003,7 +1007,7 @@ aA aA bb ai -bi +bp bi bB bE @@ -1024,7 +1028,7 @@ cc aw bc ai -bi +bn bi bB bE @@ -1045,7 +1049,7 @@ aA aS bd ac -bi +br bi bB bE @@ -1066,7 +1070,7 @@ aL aT be ac -bi +bX bi bB bE diff --git a/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm b/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm index 32d85ba1078f..0413441989ea 100644 --- a/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm +++ b/maps/map_files/BigRed/sprinkles/25.lz1cave_flank.dmm @@ -10,6 +10,13 @@ "d" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/space_port) +"e" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/lz1_north_cas) "f" = ( /obj/item/tool/warning_cone, /turf/open/floor/plating, @@ -218,7 +225,7 @@ c c c c -j +e "} (12,1,1) = {" c @@ -235,7 +242,7 @@ c c c c -j +e "} (13,1,1) = {" c @@ -252,7 +259,7 @@ c c c c -j +e "} (14,1,1) = {" c @@ -269,7 +276,7 @@ c c c c -j +e "} (15,1,1) = {" c @@ -286,5 +293,5 @@ c i c c -j +e "} diff --git a/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm b/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm index 30531e6b085e..5ff0d32f9e15 100644 --- a/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm +++ b/maps/map_files/BigRed/sprinkles/30.cargo_containers.dmm @@ -123,7 +123,6 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "ay" = ( -/obj/structure/closet/emcloset, /obj/structure/pipes/vents/pump{ dir = 8 }, @@ -141,6 +140,8 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, /turf/open/floor, /area/bigredv2/outside/cargo) "aC" = ( @@ -153,7 +154,9 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Cargo Offices" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "aE" = ( /obj/structure/window/framed/solaris, @@ -298,7 +301,9 @@ /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ name = "\improper Cargo Bay Security" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "aX" = ( /turf/open/floor{ @@ -307,25 +312,24 @@ }, /area/bigredv2/outside/cargo) "aY" = ( -/obj/structure/cargo_container/wy/left, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor{ - dir = 1; - icon_state = "bot" + icon_state = "loadingarea" }, /area/bigredv2/outside/cargo) "aZ" = ( -/obj/structure/cargo_container/wy/mid, -/turf/open/floor{ - dir = 1; - icon_state = "bot" - }, +/obj/structure/surface/table, +/obj/effect/spawner/random/bomb_supply, +/turf/open/floor, /area/bigredv2/outside/cargo) "ba" = ( -/obj/structure/cargo_container/wy/right, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/obj/structure/surface/table, +/obj/item/stack/sheet/glass{ + amount = 30 }, +/turf/open/floor, /area/bigredv2/outside/cargo) "bb" = ( /obj/effect/decal/cleanable/dirt, @@ -369,12 +373,8 @@ }, /area/bigredv2/outside/cargo) "bh" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 1; - icon_state = "bot" - }, +/obj/structure/largecrate/random/barrel, +/turf/open/floor, /area/bigredv2/outside/cargo) "bj" = ( /obj/structure/largecrate, @@ -402,8 +402,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "bs" = ( /obj/effect/decal/cleanable/dirt, @@ -430,17 +431,15 @@ dir = 1; name = "\improper Cargo Bay" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "bz" = ( -/obj/effect/landmark/corpsespawner/security, -/obj/structure/machinery/light{ - dir = 4 - }, +/obj/effect/landmark/corpsespawner/security/marshal, /turf/open/floor, /area/bigredv2/outside/cargo) "bA" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light{ dir = 8 }, @@ -475,14 +474,14 @@ "bI" = ( /obj/item/reagent_container/spray/cleaner, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "floor4" + }, /area/bigredv2/outside/cargo) "bJ" = ( -/obj/structure/largecrate, -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor{ + icon_state = "floor4" }, -/turf/open/floor, /area/bigredv2/outside/cargo) "bK" = ( /turf/open/floor{ @@ -514,12 +513,14 @@ /area/bigredv2/outside/cargo) "bP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate, +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor, /area/bigredv2/outside/cargo) "bQ" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor, /area/bigredv2/outside/cargo) "bR" = ( @@ -528,7 +529,9 @@ dir = 1; name = "\improper Cargo Bay Quartermaster" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "bS" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -612,7 +615,9 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Cargo Bay Quartermaster" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/cargo) "cf" = ( /obj/structure/bed/chair/office/dark, @@ -726,15 +731,44 @@ name = "\improper Engineering Complex" }, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/bigredv2/outside/engineering) "cx" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - icon_state = "dark" + icon_state = "delivery" }, /area/bigredv2/outside/engineering) +"zL" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "floor4" + }, +/area/bigredv2/outside/cargo) +"AS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "floor4" + }, +/area/bigredv2/outside/cargo) +"Gu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/spawner/random/toolbox, +/turf/open/floor, +/area/bigredv2/outside/cargo) +"KO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/turf/open/floor, +/area/bigredv2/outside/cargo) (1,1,1) = {" aa @@ -747,7 +781,7 @@ aE ai ai ai -ax +bq by ai ai @@ -761,13 +795,13 @@ ai ab al ab -aB -av -av -av +ai av av av +ai +aZ +bA ax av bH @@ -782,16 +816,16 @@ ai av av av -aC +aY aF aO av -aY -bf -av -ax -av -av +ak +ba +bJ +zL +bJ +bJ av ai av @@ -807,9 +841,9 @@ ad aG aP av -aZ -bg -am +ak +bh +bJ aI bb bI @@ -828,12 +862,12 @@ aC aH aQ av -ba -bh -av -ax +ai av -af +bJ +zL +bJ +AS bP ak cb @@ -849,13 +883,13 @@ am aI ad ad -bb -ad +bR ad +bQ bp bz -af -af +KO +Gu ak cb av @@ -870,13 +904,13 @@ aC aJ aR aX -aP -aX -av +ai +ai +ai bq +by +ai ai -bJ -bQ ai cc av @@ -895,8 +929,8 @@ af av av ax +af bA -av ae ai ak @@ -926,7 +960,7 @@ aA cv "} (10,1,1) = {" -av +ap av aw ad @@ -947,7 +981,7 @@ cl cw "} (11,1,1) = {" -av +ap av ax ao @@ -969,7 +1003,7 @@ cx "} (12,1,1) = {" ah -ap +av ay av av @@ -1076,11 +1110,11 @@ cv av at af -av +ab af ar av -av +ab av af bs diff --git a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm index 7a66b2422807..622e76848001 100644 --- a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm +++ b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm @@ -430,6 +430,15 @@ icon_state = "wood" }, /area/bigredv2/outside/admin_building) +"mq" = ( +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Operations"; + name = "\improper Operations Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "rv" = ( /obj/item/ammo_magazine/rifle{ current_rounds = 0 @@ -548,7 +557,7 @@ /area/bigredv2/outside/admin_building) (1,1,1) = {" -aj +mq ab ab ab diff --git a/maps/map_files/BigRed/standalone/crashlanding-eva.dmm b/maps/map_files/BigRed/standalone/crashlanding-eva.dmm index fb08fd251c0a..33eefe09518f 100644 --- a/maps/map_files/BigRed/standalone/crashlanding-eva.dmm +++ b/maps/map_files/BigRed/standalone/crashlanding-eva.dmm @@ -47,9 +47,7 @@ /area/bigredv2/outside/general_offices) "aE" = ( /obj/structure/computerframe, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "aF" = ( /turf/closed/shuttle/ert{ @@ -107,26 +105,18 @@ /turf/open/mars, /area/bigredv2/caves_north) "aR" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/bigredv2/outside/general_offices) "aS" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/general_offices) "aT" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/bigredv2/outside/general_offices) "aU" = ( /obj/structure/surface/rack, /obj/item/map/big_red_map, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "aV" = ( /turf/closed/shuttle/ert{ @@ -191,34 +181,24 @@ /area/bigredv2/outside/general_offices) "bg" = ( /obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery, /area/bigredv2/outside/general_offices) "bh" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bi" = ( /obj/item/paper/crumpled/bloody, /obj/effect/decal/cleanable/blood{ icon_state = "u_psycopath_l" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bj" = ( /obj/structure/bed/chair/dropship/passenger, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bk" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bl" = ( /obj/effect/decal/cleanable/dirt, @@ -249,9 +229,7 @@ /area/bigredv2/outside/general_offices) "bq" = ( /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "br" = ( /turf/closed/shuttle/ert{ @@ -262,22 +240,16 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bt" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bu" = ( /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bv" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -287,9 +259,7 @@ dir = 1; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "bw" = ( /turf/closed/shuttle/ert{ @@ -339,9 +309,7 @@ dir = 1; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/general_offices) "bG" = ( /turf/closed/shuttle/ert{ @@ -481,25 +449,17 @@ "cb" = ( /obj/structure/surface/rack, /obj/item/restraints, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "cc" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/bigredv2/outside/general_offices) "cd" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/bigredv2/outside/general_offices) "ce" = ( /obj/structure/surface/rack, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "cf" = ( /turf/closed/shuttle/ert{ @@ -531,12 +491,11 @@ }, /area/bigredv2/outside/general_offices) "cj" = ( -/obj/structure/surface/rack, -/obj/item/stack/sheet/mineral/diamond, -/obj/item/clothing/under/redcoat, -/turf/open/floor{ - icon_state = "dark" +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 }, +/turf/open/floor, /area/bigredv2/outside/general_offices) "cl" = ( /obj/structure/surface/rack, @@ -547,9 +506,7 @@ "cm" = ( /obj/effect/spawner/gibspawner/human, /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/general_offices) "cn" = ( /turf/closed/shuttle/ert{ @@ -587,9 +544,7 @@ "cu" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/remains, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) "cv" = ( /turf/closed/shuttle/ert{ @@ -699,22 +654,22 @@ /turf/open/floor/plating{ icon_state = "panelscorched" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "cO" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Dormitories"; + name = "\improper Dormitories Shutters" }, +/turf/open/floor/plating, /area/bigredv2/outside/general_offices) "cP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/general_offices) -"cQ" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 }, -/obj/structure/machinery/vending/cola, /turf/open/floor, /area/bigredv2/outside/general_offices) "cU" = ( @@ -757,10 +712,6 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/general_offices) -"da" = ( -/obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, -/area/bigredv2/outside/general_offices) "dc" = ( /obj/item/stack/rods, /turf/open/floor{ @@ -789,10 +740,6 @@ icon_state = "platingdmg1" }, /area/bigredv2/outside/general_offices) -"dg" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor, -/area/bigredv2/outside/general_offices) "di" = ( /obj/structure/bed/chair{ dir = 8 @@ -870,18 +817,12 @@ /turf/open/floor/plating{ icon_state = "platingdmg3" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "du" = ( /turf/open/floor/plating{ - icon_state = "wood-broken" - }, -/area/bigredv2/outside/general_offices) -"dv" = ( -/obj/structure/surface/table, -/turf/open/floor/plating{ - icon_state = "wood-broken5" + icon_state = "panelscorched" }, -/area/bigredv2/outside/general_offices) +/area/bigredv2/outside/ne) "dx" = ( /turf/closed/wall/solaris, /area/bigredv2/outside/bar) @@ -935,25 +876,6 @@ dir = 8; icon_state = "platingdmg3" }, -/area/bigredv2/outside/general_offices) -"dF" = ( -/obj/structure/bed, -/turf/open/floor/plating{ - icon_state = "wood-broken6" - }, -/area/bigredv2/outside/general_offices) -"dG" = ( -/turf/open/mars, -/area/bigredv2/outside/ne) -"dQ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" - }, /area/bigredv2/outside/ne) "dS" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -985,24 +907,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/ne) -"dW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood{ - dir = 1; - icon_state = "gib6" - }, -/turf/open/mars, -/area/bigredv2/outside/ne) -"dX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/mars, -/area/bigredv2/outside/ne) -"ea" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "asteroidwarning" - }, -/area/bigredv2/outside/ne) "eb" = ( /turf/open/floor{ icon_state = "wall_thermite" @@ -1036,23 +940,9 @@ "eg" = ( /obj/item/stack/sheet/wood, /turf/open/floor/plating{ - icon_state = "wood-broken2" + icon_state = "panelscorched" }, /area/bigredv2/outside/general_offices) -"eh" = ( -/turf/closed/wall/solaris, -/area/bigredv2/outside/hydroponics) -"ej" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/ne) -"el" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/ne) "em" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/plating{ @@ -1065,27 +955,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/hydroponics) -"eo" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/turf/open/floor{ - icon_state = "whitegreenfull" - }, -/area/bigredv2/outside/hydroponics) -"ep" = ( -/obj/structure/window/framed/solaris, -/turf/open/floor/plating, -/area/bigredv2/outside/hydroponics) -"ey" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" - }, -/area/bigredv2/outside/ne) -"ez" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/mars{ - icon_state = "mars_dirt_3" - }, -/area/bigredv2/outside/ne) "eA" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -1109,27 +978,9 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/hydroponics) -"eD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/hydroponics) -"eE" = ( -/turf/open/floor, -/area/bigredv2/outside/hydroponics) "eF" = ( /turf/template_noop, /area/template_noop) -"eG" = ( -/obj/item/shard, -/turf/open/floor{ - icon_state = "platingdmg1" - }, -/area/bigredv2/outside/hydroponics) -"eH" = ( -/obj/structure/window_frame/solaris, -/obj/item/shard, -/turf/open/floor/plating, -/area/bigredv2/outside/hydroponics) "eI" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating{ @@ -1154,9 +1005,7 @@ /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery, /area/bigredv2/outside/general_offices) "eM" = ( /obj/item/stack/rods, @@ -1177,12 +1026,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/hydroponics) -"eU" = ( -/obj/effect/spawner/gibspawner/human, -/turf/open/floor/plating{ - icon_state = "wood-broken6" - }, -/area/bigredv2/outside/general_offices) "oB" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor{ @@ -1215,9 +1058,7 @@ "Zt" = ( /obj/structure/bed/chair/dropship/passenger, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/general_offices) (1,1,1) = {" @@ -1587,10 +1428,10 @@ aB aB aB aB -dQ -ea -ej -ey +eF +eF +eF +eF "} (13,1,1) = {" eF @@ -1620,8 +1461,8 @@ dC bU dS eN -el -ez +eF +eF "} (14,1,1) = {" eF @@ -1739,8 +1580,8 @@ cJ aW aO aO -aW -aW +du +du cN dV ec @@ -1773,7 +1614,7 @@ dk dt dE dt -dW +eF ee en ec @@ -1801,10 +1642,10 @@ cK bl bl eg -du -dD -cY -dX +eF +eF +eF +eF eO ec eC @@ -1832,13 +1673,13 @@ cL aW aO eK -dr -eU -aW -dX +eF +eF +eF +eF ef ec -eD +eF "} (21,1,1) = {" eF @@ -1862,14 +1703,14 @@ bD bl bO aW -bU -dc -eJ -bU -dX -eG -eo -eD +aW +eF +eF +eF +eF +eF +eF +eF "} (22,1,1) = {" eF @@ -1893,14 +1734,14 @@ eJ bl aW aO -dj -dq -dr -aB -dG -eH -eo -eE +bU +eF +eF +eF +eF +eF +eF +eF "} (23,1,1) = {" eF @@ -1925,13 +1766,13 @@ cM cM df aB -dv -dF -aB -dG -eh -ep -ep +eF +eF +eF +eF +eF +eF +eF "} (24,1,1) = {" eF @@ -1952,17 +1793,17 @@ aI aI aI aI -cN -aW -cM -aB -aB -aB +cj +aK +cP aB eF eF eF eF +eF +eF +eF "} (25,1,1) = {" eF @@ -1985,7 +1826,7 @@ cw aI cO cO -cF +cO aB eF eF @@ -2014,10 +1855,10 @@ bb bI bb aI -cF -cF -aK -aB +eF +eF +eF +eF eF eF eF @@ -2045,10 +1886,10 @@ oB bb cx aI -cP -aK -aK -aB +eF +eF +eF +eF eF eF eF @@ -2072,14 +1913,14 @@ by bb bS bb -cj +cy bb cy aI -aK -aK -aK -aB +eF +eF +eF +eF eF eF eF @@ -2107,10 +1948,10 @@ aI aI aI aI -cQ -da -dg -aB +eF +eF +eF +eF eF eF eF diff --git a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm index e0c625805375..48bac15b3127 100644 --- a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm +++ b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm @@ -230,9 +230,7 @@ /area/bigredv2/outside/office_complex) "aP" = ( /obj/structure/computerframe, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "aQ" = ( /turf/closed/shuttle/ert{ @@ -257,22 +255,16 @@ "aU" = ( /obj/structure/surface/rack, /obj/item/restraints, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "aV" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "aW" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "aX" = ( /turf/closed/shuttle/ert{ @@ -311,9 +303,7 @@ }, /area/bigredv2/outside/office_complex) "bc" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "bd" = ( /obj/effect/decal/cleanable/dirt, @@ -356,32 +346,22 @@ }, /area/bigredv2/outside/office_complex) "bl" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/bigredv2/outside/office_complex) "bm" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "bn" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin13" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/bigredv2/outside/office_complex) "bo" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/bigredv2/outside/office_complex) "bp" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "bq" = ( /turf/closed/shuttle/ert{ @@ -418,13 +398,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/outside/office_complex) -"bv" = ( -/obj/structure/surface/rack, -/obj/effect/landmark/crap_item, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/bigredv2/outside/office_complex) "bw" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, @@ -754,13 +727,12 @@ dir = 4 }, /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "cv" = ( /turf/open/shuttle/dropship{ - icon_state = "rasputin10" + icon_state = "rasputin10"; + supports_surgery = 1 }, /area/bigredv2/outside/office_complex) "cw" = ( @@ -769,7 +741,8 @@ name = "smashed NSG 23 assault rifle" }, /turf/open/shuttle/dropship{ - icon_state = "rasputin12" + icon_state = "rasputin12"; + supports_surgery = 1 }, /area/bigredv2/outside/office_complex) "cx" = ( @@ -777,9 +750,7 @@ /obj/item/limb/arm/l_arm, /obj/item/limb/leg/l_leg, /obj/item/limb/hand/r_hand, -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/bigredv2/outside/office_complex) "cy" = ( /obj/structure/janitorialcart, @@ -1113,24 +1084,18 @@ /area/bigredv2/outside/se) "dz" = ( /obj/effect/spawner/gibspawner/human, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dA" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dB" = ( /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dC" = ( /obj/effect/spawner/gibspawner/human, @@ -1150,18 +1115,14 @@ dir = 1; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dF" = ( /obj/effect/decal/cleanable/blood{ dir = 4; icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/bigredv2/outside/office_complex) "dG" = ( /obj/effect/decal/cleanable/blood{ @@ -1169,31 +1130,26 @@ icon_state = "gib6" }, /turf/open/shuttle/dropship{ - icon_state = "rasputin10" + icon_state = "rasputin10"; + supports_surgery = 1 }, /area/bigredv2/outside/office_complex) "dH" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "dI" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/rifle/nsg23, /obj/item/ammo_magazine/rifle/nsg23/extended, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dJ" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "dK" = ( /obj/effect/spawner/gibspawner/human, @@ -1204,15 +1160,11 @@ "dL" = ( /obj/structure/surface/rack, /obj/item/device/binoculars, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dM" = ( /obj/structure/surface/rack, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dN" = ( /obj/structure/surface/rack, @@ -1220,9 +1172,7 @@ /obj/item/ammo_magazine/pistol/rubber, /obj/item/ammo_magazine/pistol/rubber, /obj/item/ammo_magazine/pistol/rubber, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dO" = ( /obj/effect/decal/cleanable/dirt, @@ -1234,9 +1184,7 @@ "dP" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tech_supply, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dQ" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -1244,30 +1192,22 @@ }, /obj/effect/decal/cleanable/blood, /obj/effect/spawner/gibspawner/human, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dR" = ( /obj/structure/surface/rack, /obj/item/map/big_red_map, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dS" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dT" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "dU" = ( /obj/effect/decal/cleanable/dirt, @@ -1412,36 +1352,28 @@ dir = 8 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "fG" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, /obj/item/device/radio/headset/distress/pmc/hvh, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "hN" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_medic, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "id" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "jx" = ( /obj/effect/decal/cleanable/blood{ @@ -1449,18 +1381,19 @@ icon_state = "gib6" }, /obj/item/limb/leg/l_leg, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/bigredv2/outside/office_complex) +"nE" = ( +/obj/structure/surface/rack, +/obj/effect/landmark/crap_item, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "oF" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, /obj/item/clothing/under/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "qX" = ( /obj/effect/decal/cleanable/blood, @@ -1479,9 +1412,7 @@ /obj/item/clothing/head/helmet/marine/veteran/pmc, /obj/item/clothing/under/marine/veteran/pmc, /obj/item/clothing/head/helmet/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "rK" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -1489,21 +1420,15 @@ }, /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "si" = ( /obj/item/clothing/head/helmet/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "sR" = ( /obj/item/storage/firstaid, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "uC" = ( /obj/effect/spawner/gibspawner/human, @@ -1511,29 +1436,21 @@ desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. The IFF electronics appear to be non-functional."; name = "battered M41A pulse rifle Mk2" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "uL" = ( /obj/item/weapon/gun/rifle/nsg23/no_lock, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "vw" = ( /obj/item/limb/arm/l_arm, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "yS" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "AB" = ( /obj/structure/bed/chair/dropship/passenger{ @@ -1545,9 +1462,7 @@ name = "dented M4A3 service pistol" }, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "Bu" = ( /obj/effect/decal/cleanable/blood, @@ -1555,27 +1470,21 @@ /obj/item/limb/arm/l_arm, /obj/item/limb/leg/l_leg, /obj/item/limb/hand/r_hand, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "EE" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, /obj/item/limb/hand/l_hand, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "GG" = ( /obj/item/weapon/gun/rifle/m41a/corporate/no_lock{ desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. The IFF electronics appear to be non-functional."; name = "battered M41A pulse rifle Mk2" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/bigredv2/outside/office_complex) "Ha" = ( /obj/effect/decal/cleanable/dirt, @@ -1589,18 +1498,14 @@ dir = 4 }, /obj/item/device/radio/headset/distress/pmc/hvh, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "NK" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/rubber, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "PR" = ( /turf/open/floor{ @@ -1613,24 +1518,18 @@ dir = 8 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_cl, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) "Vg" = ( /obj/effect/landmark/objective_landmark/medium, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/bigredv2/outside/office_complex) "XH" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_engineer, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/bigredv2/outside/office_complex) (1,1,1) = {" @@ -1915,7 +1814,7 @@ XH AB yS aV -bv +nE dN dP aV @@ -1964,7 +1863,7 @@ av ar aN aU -bv +nE bm dA fv @@ -2003,9 +1902,9 @@ yS yS yS dH -bv -bv -bv +nE +nE +nE dT cF do @@ -2071,7 +1970,7 @@ ap az bu aN -bv +nE dL bm yS @@ -2132,8 +2031,8 @@ rK bp aV dM -bv -bv +nE +nE aV fv dA diff --git a/maps/map_files/BigRed/standalone/medbay-v3.dmm b/maps/map_files/BigRed/standalone/medbay-v3.dmm index aded8e8bb7cb..80397d168ba7 100644 --- a/maps/map_files/BigRed/standalone/medbay-v3.dmm +++ b/maps/map_files/BigRed/standalone/medbay-v3.dmm @@ -108,32 +108,12 @@ }, /area/bigredv2/outside/medical) "as" = ( -/obj/structure/surface/table, /obj/structure/pipes/vents/pump, -/obj/item/device/autopsy_scanner, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) -"at" = ( /turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) -"au" = ( -/obj/structure/morgue{ - dir = 8 - }, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) -"av" = ( -/obj/structure/morgue, -/turf/open/floor{ - icon_state = "dark" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "aw" = ( /obj/structure/machinery/chem_dispenser, /turf/open/floor{ @@ -206,13 +186,6 @@ icon_state = "whitegreenfull" }, /area/bigredv2/outside/medical) -"aG" = ( -/obj/structure/machinery/optable, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "aH" = ( /obj/effect/spawner/gibspawner/human, /turf/open/floor{ @@ -388,11 +361,10 @@ }, /area/bigredv2/outside/medical) "bh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "dark" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bi" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -497,10 +469,10 @@ "bw" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - dir = 8; - icon_state = "damaged2" + dir = 4; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bx" = ( /obj/item/stack/rods, /turf/open/floor{ @@ -557,15 +529,6 @@ icon_state = "platingdmg1" }, /area/bigredv2/outside/medical) -"bF" = ( -/obj/structure/machinery/camera/autoname{ - network = list("interrogation") - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/medical) "bG" = ( /obj/item/ammo_casing/bullet, /turf/open/floor/plating{ @@ -632,10 +595,12 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, +/obj/structure/surface/table, /turf/open/floor{ - icon_state = "platingdmg1" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -645,12 +610,11 @@ }, /area/bigredv2/outside/medical) "bQ" = ( -/obj/structure/machinery/light, /turf/open/floor{ - dir = 8; - icon_state = "damaged5" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "bR" = ( /obj/effect/decal/cleanable/dirt, /obj/item/shard, @@ -740,10 +704,15 @@ }, /area/bigredv2/outside/medical) "cf" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/colony{ + name = "\improper Medical Clinic" + }, /obj/structure/pipes/standard/simple/hidden/green, -/obj/item/stack/sheet/metal, /turf/open/floor{ - icon_state = "platingdmg1" + icon_state = "delivery" }, /area/bigredv2/outside/medical) "cg" = ( @@ -797,14 +766,14 @@ }, /area/bigredv2/outside/medical) "cn" = ( -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 10 }, -/obj/item/stack/rods, /turf/open/floor{ - icon_state = "platingdmg1" + dir = 1; + icon_state = "asteroidwarning" }, -/area/bigredv2/outside/medical) +/area/bigredv2/outside/n) "co" = ( /obj/structure/window_frame/solaris, /obj/item/stack/sheet/metal, @@ -2050,6 +2019,13 @@ icon_state = "platingdmg1" }, /area/bigredv2/outside/medical) +"gS" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) "hn" = ( /turf/open/floor{ dir = 1; @@ -2057,9 +2033,13 @@ }, /area/bigredv2/outside/medical) "om" = ( -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ - icon_state = "dark" + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/n) +"CW" = ( +/turf/open/floor{ + icon_state = "delivery" }, /area/bigredv2/outside/medical) "DL" = ( @@ -2631,8 +2611,8 @@ hn (20,1,1) = {" af as -aG -bi +bw +bw bw bO ce @@ -2658,11 +2638,11 @@ hn "} (21,1,1) = {" af -at -ax -aU -ai -bP +om +bh +bh +bh +cn cf cm bi @@ -2686,12 +2666,12 @@ hn "} (22,1,1) = {" af -at -at -aM -bu -aT -ab +om +bh +bh +bh +bQ +CW aT bu cN @@ -2715,12 +2695,12 @@ aa (23,1,1) = {" af om -at +bh bh bh bQ -aa -cn +ac +bK an bP cZ @@ -2742,12 +2722,12 @@ aa "} (24,1,1) = {" af -au -au -au -au -bF -aa +om +bh +bh +bh +bQ +ac ax cx cQ @@ -2770,12 +2750,12 @@ eV "} (25,1,1) = {" af -av -av -av -av -at -aa +om +bh +bh +bh +bQ +ac bz cy cR @@ -2798,11 +2778,11 @@ am "} (26,1,1) = {" af -at -at -at -at -at +om +bh +bh +bh +gS aa ap ap diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm index 7029d71a6076..40573911281f 100644 --- a/maps/map_files/CORSAT/Corsat.dmm +++ b/maps/map_files/CORSAT/Corsat.dmm @@ -26595,9 +26595,9 @@ /area/corsat/sigma/south/robotics) "bwY" = ( /obj/structure/surface/rack, -/obj/item/circuitboard/mecha/gygax/main, -/obj/item/circuitboard/mecha/gygax/targeting, -/obj/item/circuitboard/mecha/gygax/peripherals, +/obj/item/circuitboard/exosuit/main/max, +/obj/item/circuitboard/exosuit/peripherals/max/targeting, +/obj/item/circuitboard/exosuit/peripherals/max, /turf/open/floor/corsat{ icon_state = "plate" }, @@ -26721,7 +26721,7 @@ }, /area/corsat/sigma/south/robotics) "bxr" = ( -/obj/structure/prop/mech/mech_parts/part/durand_head, +/obj/structure/prop/mech/parts/durand_head, /turf/open/floor/corsat{ icon_state = "arrow_north" }, @@ -26743,13 +26743,13 @@ }, /area/corsat/sigma/south/robotics) "bxu" = ( -/obj/structure/prop/mech/mech_parts/part/durand_right_arm, +/obj/structure/prop/mech/parts/durand_right_arm, /turf/open/floor/corsat{ icon_state = "arrow_west" }, /area/corsat/sigma/south/robotics) "bxv" = ( -/obj/structure/prop/mech/mech_parts/part/durand_torso, +/obj/structure/prop/mech/parts/durand_torso, /turf/open/floor/corsat{ icon_state = "cargo" }, @@ -26779,7 +26779,7 @@ }, /area/corsat/sigma/south/robotics) "bxA" = ( -/obj/structure/prop/mech/mech_parts/part/durand_left_leg, +/obj/structure/prop/mech/parts/durand_left_leg, /turf/open/floor/corsat{ icon_state = "arrow_east" }, @@ -27747,13 +27747,6 @@ icon_state = "purplewhitecorner" }, /area/corsat/omega/complex) -"bzU" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/robotics_cyborgs, -/turf/open/floor/corsat{ - icon_state = "yellow" - }, -/area/corsat/sigma/south/robotics) "bzV" = ( /obj/structure/surface/table/almayer, /obj/item/device/robotanalyzer, @@ -58837,8 +58830,8 @@ /area/corsat/gamma/freezer) "thp" = ( /obj/structure/surface/rack, -/obj/item/circuitboard/mecha/ripley/peripherals, -/obj/item/circuitboard/mecha/ripley/peripherals, +/obj/item/circuitboard/exosuit/peripherals/work_loader, +/obj/item/circuitboard/exosuit/peripherals/work_loader, /turf/open/floor/corsat{ icon_state = "yellow" }, @@ -59871,8 +59864,8 @@ /area/corsat/gamma/biodome) "tWD" = ( /obj/structure/surface/rack, -/obj/item/circuitboard/mecha/odysseus/peripherals, -/obj/item/circuitboard/mecha/odysseus/main, +/obj/item/circuitboard/exosuit/peripherals/alice, +/obj/item/circuitboard/exosuit/main/alice, /turf/open/floor/corsat{ dir = 1; icon_state = "yellow" @@ -110525,7 +110518,7 @@ auK bxJ byb aMi -bzU +ydU auR ylo ylo diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm index bf1d64fbc499..dd9f0c499d8c 100644 --- a/maps/map_files/DesertDam/Desert_Dam.dmm +++ b/maps/map_files/DesertDam/Desert_Dam.dmm @@ -15516,6 +15516,9 @@ pixel_y = 24; start_charge = 0 }, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/prison{ dir = 5; icon_state = "red" @@ -16765,17 +16768,11 @@ }, /area/desert_dam/building/security/lobby) "aZt" = ( -/obj/structure/bed/chair{ - dir = 8 - }, /obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 4; - icon_state = "red" + dir = 8 }, -/area/desert_dam/building/security/lobby) +/turf/open/floor/interior/wood, +/area/desert_dam/building/security/detective) "aZu" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -18109,9 +18106,6 @@ "bdL" = ( /obj/item/reagent_container/food/drinks/flask/detflask, /obj/item/clothing/head/det_hat, -/obj/structure/machinery/light{ - dir = 8 - }, /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/interior/wood, /area/desert_dam/building/security/detective) @@ -19729,23 +19723,17 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f9" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjb" = ( /obj/structure/computerframe, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjc" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f5" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjd" = ( /obj/structure/machinery/light{ @@ -19800,14 +19788,10 @@ /area/desert_dam/interior/dam_interior/hanger) "bjl" = ( /obj/structure/machinery/light, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjm" = ( -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjn" = ( /obj/structure/machinery/light, @@ -19889,9 +19873,7 @@ /area/desert_dam/interior/dam_interior/hanger) "bjA" = ( /obj/structure/machinery/door/unpowered/shuttle, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bjB" = ( /turf/closed/shuttle{ @@ -20049,9 +20031,7 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bke" = ( /obj/structure/machinery/light{ @@ -20060,9 +20040,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bkf" = ( /turf/open/desert/dirt{ @@ -20121,17 +20099,13 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bkp" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bkt" = ( /turf/open/desert/dirt{ @@ -20973,17 +20947,13 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f10" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bne" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f6" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/desert_dam/interior/dam_interior/hanger) "bnf" = ( /obj/structure/shuttle/diagonal{ @@ -74482,7 +74452,7 @@ ceA act aVz aXD -aZt +aXD aXD aXD blY @@ -74953,7 +74923,7 @@ aXE aZJ bdL bjI -aXM +aZt aVB boW bqy diff --git a/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm b/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm index b707028441cf..94258193f75b 100644 --- a/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm +++ b/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm @@ -5,9 +5,7 @@ pixel_y = -5 }, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, /area/desert_dam/exterior/valley/valley_civilian) "bz" = ( /turf/closed/shuttle/ert{ @@ -84,9 +82,7 @@ "fg" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, /area/desert_dam/exterior/valley/valley_civilian) "fp" = ( /obj/effect/decal/sand_overlay/sand1{ @@ -173,9 +169,7 @@ "jU" = ( /obj/effect/decal/cleanable/blood/splatter, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, /area/desert_dam/exterior/valley/valley_civilian) "jX" = ( /obj/effect/decal/sand_overlay/sand1, @@ -220,9 +214,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, /area/desert_dam/exterior/valley/valley_civilian) "mw" = ( /turf/open/desert/dirt{ @@ -297,21 +289,15 @@ "oj" = ( /obj/effect/decal/cleanable/blood/splatter, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/desert_dam/exterior/valley/valley_civilian) "os" = ( /obj/effect/decal/cleanable/blood/splatter, -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/exterior/valley/valley_civilian) "oL" = ( /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, /area/desert_dam/exterior/valley/valley_civilian) "oX" = ( /obj/structure/desertdam/decals/road_edge{ @@ -457,9 +443,7 @@ /turf/open/floor/plating, /area/desert_dam/exterior/valley/valley_civilian) "xE" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/desert_dam/exterior/valley/valley_civilian) "xK" = ( /obj/effect/decal/cleanable/dirt, @@ -475,9 +459,7 @@ /area/desert_dam/exterior/valley/valley_civilian) "xP" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/exterior/valley/valley_civilian) "yl" = ( /turf/closed/shuttle/ert{ @@ -872,9 +854,7 @@ /area/desert_dam/exterior/valley/valley_civilian) "OG" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_top_to_bottom, /area/desert_dam/exterior/valley/valley_civilian) "OJ" = ( /obj/effect/decal/sand_overlay/sand1{ @@ -923,15 +903,11 @@ /turf/open/desert/dirt, /area/desert_dam/exterior/valley/valley_civilian) "Rq" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/desert_dam/exterior/valley/valley_civilian) "Ry" = ( /obj/effect/decal/cleanable/blood/splatter, -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/desert_dam/exterior/valley/valley_civilian) "RG" = ( /obj/effect/decal/sand_overlay/sand1{ @@ -974,9 +950,7 @@ "SN" = ( /obj/effect/spawner/gibspawner/human, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/exterior/valley/valley_civilian) "SV" = ( /obj/structure/prop/invuln/fire{ @@ -1014,9 +988,7 @@ pixel_y = 21 }, /obj/effect/decal/cleanable/dirt, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/exterior/valley/valley_civilian) "UB" = ( /obj/structure/prop/invuln/fire{ @@ -1059,9 +1031,7 @@ }, /area/desert_dam/exterior/valley/valley_civilian) "Wy" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/exterior/valley/valley_civilian) "WU" = ( /obj/effect/decal/sand_overlay/sand1{ diff --git a/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm b/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm index 7928c7f06b71..9cca7b5c3558 100644 --- a/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm +++ b/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm @@ -79,9 +79,7 @@ dir = 5 }, /obj/effect/spawner/gibspawner/human, -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/desert_dam/building/bar/bar) "bC" = ( /obj/structure/barricade/sandbags/wired{ @@ -133,9 +131,7 @@ /turf/open/asphalt, /area/desert_dam/exterior/valley/bar_valley_dam) "cu" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "cH" = ( /obj/item/stack/sheet/metal, @@ -156,9 +152,7 @@ network = null; pixel_y = 21 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "cR" = ( /obj/effect/landmark/crap_item, @@ -211,9 +205,7 @@ /obj/item/ammo_box/rounds/type71{ bullet_amount = 129 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "ee" = ( /obj/effect/decal/warning_stripes{ @@ -285,9 +277,7 @@ icon_state = "paper_words"; item_state = "paper_words" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "fk" = ( /obj/effect/decal/sand_overlay/sand1{ @@ -328,9 +318,7 @@ "fP" = ( /obj/structure/bed/bedroll, /obj/item/bedsheet/brown, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "fR" = ( /obj/effect/decal/sand_overlay/sand1{ @@ -431,9 +419,7 @@ dir = 8 }, /obj/effect/landmark/survivor_spawner/upp_medic, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "hH" = ( /obj/structure/desertdam/decals/road_edge{ @@ -639,9 +625,7 @@ "kp" = ( /obj/effect/decal/cleanable/blood, /obj/item/prop/almayer/flight_recorder/colony, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "kB" = ( /obj/structure/barricade/sandbags/wired{ @@ -776,9 +760,7 @@ "ny" = ( /obj/effect/decal/cleanable/blood, /obj/item/prop/almayer/comp_closed, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "nz" = ( /obj/effect/decal/cleanable/dirt, @@ -790,9 +772,7 @@ /area/desert_dam/building/bar/bar) "nB" = ( /obj/effect/landmark/survivor_spawner/upp/soldier, -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/building/bar/bar) "nC" = ( /obj/effect/decal/cleanable/dirt, @@ -905,9 +885,7 @@ dir = 2; name = "\improper Fulcrum Airlock" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "pA" = ( /obj/effect/decal/cleanable/dirt, @@ -920,9 +898,7 @@ "pM" = ( /obj/structure/bed/chair/dropship/passenger, /obj/item/storage/belt/medical/lifesaver/upp, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "pO" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -1015,7 +991,7 @@ /area/desert_dam/building/bar/bar) "se" = ( /obj/item/trash/semki, -/turf/open/shuttle/dropship, +/turf/open/shuttle/dropship/can_surgery, /area/desert_dam/building/bar/bar) "sn" = ( /obj/structure/barricade/sandbags/wired{ @@ -1057,9 +1033,7 @@ dir = 4; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/desert_dam/building/bar/bar) "sH" = ( /obj/effect/decal/cleanable/dirt, @@ -1088,15 +1062,11 @@ /area/desert_dam/exterior/valley/bar_valley_dam) "tu" = ( /obj/effect/decal/cleanable/blood, -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/desert_dam/building/bar/bar) "tA" = ( /obj/item/tool/wrench, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "tE" = ( /obj/structure/flora/grass/desert/heavygrass_3, @@ -1151,9 +1121,7 @@ pixel_y = 7; icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "uF" = ( /turf/open/desert/dirt{ @@ -1163,9 +1131,7 @@ /area/desert_dam/exterior/valley/bar_valley_dam) "uZ" = ( /obj/item/roller, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "vk" = ( /obj/structure/flora/grass/desert/lightgrass_9, @@ -1301,9 +1267,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S-corner" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "xg" = ( /obj/structure/prop/dam/boulder/boulder1, @@ -1454,7 +1418,7 @@ /obj/item/ammo_magazine/rifle/type71/heap{ current_rounds = 0 }, -/turf/open/shuttle/dropship, +/turf/open/shuttle/dropship/can_surgery, /area/desert_dam/building/bar/bar) "yG" = ( /obj/structure/desertdam/decals/road_edge{ @@ -1598,9 +1562,7 @@ /obj/structure/machinery/light/double{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/desert_dam/building/bar/bar) "Bu" = ( /obj/effect/decal/sand_overlay/sand1, @@ -1626,9 +1588,7 @@ /obj/item/ammo_magazine/rifle/type71/heap{ current_rounds = 0 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "BB" = ( /turf/closed/shuttle/ert{ @@ -1716,9 +1676,7 @@ /area/desert_dam/building/bar/bar) "Cn" = ( /obj/effect/landmark/survivor_spawner/upp/soldier, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "Cx" = ( /obj/effect/decal/cleanable/dirt, @@ -1814,9 +1772,7 @@ "DB" = ( /obj/structure/bed/bedroll, /obj/item/trash/cheesie, -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/desert_dam/building/bar/bar) "DD" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ @@ -1935,9 +1891,7 @@ /area/desert_dam/building/bar/bar) "Fh" = ( /obj/item/storage/belt/utility, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "Fl" = ( /obj/structure/pipes/standard/manifold/hidden/green, @@ -2005,9 +1959,7 @@ current_rounds = 0 }, /obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "GP" = ( /obj/item/prop/colony/used_flare, @@ -2018,9 +1970,7 @@ "GY" = ( /obj/item/trash/used_stasis_bag, /obj/effect/landmark/survivor_spawner/squad_leader, -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/building/bar/bar) "GZ" = ( /obj/item/stack/barbed_wire/small_stack, @@ -2099,9 +2049,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "IU" = ( /obj/item/tool/shovel, @@ -2208,9 +2156,7 @@ "Lo" = ( /obj/effect/landmark/survivor_spawner/upp/soldier, /obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "Lu" = ( /obj/structure/desertdam/decals/road_edge{ @@ -2292,9 +2238,7 @@ }, /obj/effect/decal/cleanable/blood, /obj/effect/spawner/gibspawner/human, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "MW" = ( /obj/effect/decal/sand_overlay/sand1, @@ -2310,9 +2254,7 @@ icon_state = "S-corner" }, /obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "Nh" = ( /obj/structure/flora/grass/desert/lightgrass_4, @@ -2351,9 +2293,7 @@ pixel_y = -5 }, /obj/effect/landmark/survivor_spawner/upp_sapper, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "NK" = ( /obj/effect/decal/cleanable/dirt, @@ -2475,9 +2415,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "PS" = ( /obj/effect/decal/sand_overlay/sand1, @@ -2574,9 +2512,7 @@ bullet_amount = 0 }, /obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/desert_dam/building/bar/bar) "Rl" = ( /obj/structure/closet/crate/supply, @@ -2590,9 +2526,7 @@ /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, /obj/item/ammo_box/magazine/misc/flares, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/desert_dam/building/bar/bar) "Ro" = ( /obj/structure/flora/grass/desert/lightgrass_11, @@ -2617,9 +2551,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "S-corner" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/desert_dam/building/bar/bar) "Sb" = ( /obj/effect/decal/warning_stripes{ @@ -2861,9 +2793,7 @@ dir = 1 }, /obj/effect/landmark/survivor_spawner/upp_specialist, -/turf/open/shuttle/dropship{ - icon_state = "rasputin5" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/desert_dam/building/bar/bar) "VA" = ( /obj/item/shard{ diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm index ab98e02cb6e4..2920895292ba 100644 --- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm +++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm @@ -17641,9 +17641,6 @@ /area/fiorina/station/lowsec) "kIe" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_y = 6 - }, /obj/structure/prop/souto_land/pole{ dir = 1 }, @@ -24442,7 +24439,7 @@ /area/fiorina/tumor/ice_lab) "oIg" = ( /obj/structure/platform, -/obj/structure/reagent_dispensers/oxygentank{ +/obj/structure/reagent_dispensers/fueltank/oxygentank{ layer = 2.6 }, /turf/open/floor/prison, @@ -27301,7 +27298,7 @@ }, /area/fiorina/station/research_cells) "qBS" = ( -/obj/item/circuitboard/mecha/gygax/targeting, +/obj/item/circuitboard/exosuit/peripherals/max/targeting, /obj/structure/surface/rack, /turf/open/floor/prison{ icon_state = "floor_plate" diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm index 8fd994654199..d2ac75d644c7 100644 --- a/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/30.repairpanelslz.dmm @@ -170,7 +170,7 @@ }, /area/template_noop) "H" = ( -/obj/structure/reagent_dispensers/oxygentank, +/obj/structure/reagent_dispensers/fueltank/oxygentank, /turf/open/space, /area/template_noop) "I" = ( diff --git a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm index 485760ebc2af..6d99a9dc0f70 100644 --- a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm +++ b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm @@ -853,7 +853,6 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/secure/colony{ - locked = 0; name = "Colony Requesitions Storage Pod" }, /turf/open/floor/plating/icefloor, @@ -1333,7 +1332,6 @@ "aeC" = ( /obj/structure/machinery/door/airlock{ id_tag = "st_5"; - locked = 0; name = "Storage Unit"; req_one_access_txt = "100;101;102;103" }, @@ -11961,7 +11959,6 @@ "aHB" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ id = "st_17"; - locked = 0; name = "Power Storage Unit" }, /turf/open/floor{ @@ -12406,7 +12403,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "st_18"; - locked = 0; name = "Disposals Storage Unit" }, /turf/open/floor{ @@ -13697,7 +13693,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "st_19"; - locked = 0; name = "Research Storage Unit" }, /turf/open/floor{ @@ -14545,7 +14540,6 @@ "aQm" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ id = "research_entrance"; - locked = 0; name = "Omicron Research Dome" }, /obj/structure/pipes/standard/simple/hidden/green{ @@ -14611,23 +14605,17 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f9" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aQC" = ( /obj/structure/computerframe, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aQD" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f5" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aQE" = ( /obj/structure/disposalpipe/segment{ @@ -14691,23 +14679,17 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f9" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aQL" = ( /obj/structure/computerframe, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aQM" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f5" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aQN" = ( /obj/effect/decal/cleanable/blood/oil, @@ -14951,17 +14933,13 @@ /area/ice_colony/surface/hangar/alpha) "aRz" = ( /obj/structure/machinery/light, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aRA" = ( /obj/structure/bed/chair{ dir = 1 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aRB" = ( /obj/structure/machinery/light{ @@ -14986,25 +14964,19 @@ /area/ice_colony/surface/hangar/beta) "aRF" = ( /obj/structure/machinery/light, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aRG" = ( /obj/structure/bed/chair{ dir = 1 }, /obj/effect/landmark/survivor_spawner, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aRH" = ( /obj/structure/machinery/light, /obj/item/weapon/gun/pistol/holdout, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aRI" = ( /obj/structure/surface/table, @@ -15241,9 +15213,7 @@ /area/ice_colony/surface/hangar/alpha) "aSi" = ( /obj/structure/machinery/door/unpowered/shuttle, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSj" = ( /turf/closed/shuttle{ @@ -15285,9 +15255,7 @@ /area/ice_colony/surface/hangar/beta) "aSr" = ( /obj/structure/machinery/door/unpowered/shuttle, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aSs" = ( /turf/closed/shuttle{ @@ -15528,14 +15496,10 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSV" = ( -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSW" = ( /obj/structure/machinery/light{ @@ -15544,9 +15508,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aSY" = ( /obj/structure/machinery/light{ @@ -15555,14 +15517,10 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aSZ" = ( -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTa" = ( /obj/structure/machinery/light{ @@ -15571,9 +15529,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTb" = ( /turf/open/floor{ @@ -15749,33 +15705,25 @@ /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aTA" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aTD" = ( /obj/structure/bed/chair{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTE" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aTH" = ( /obj/structure/machinery/power/apc{ @@ -16123,9 +16071,7 @@ pixel_x = 6; pixel_y = -4 }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aUN" = ( /obj/structure/ice/thin/end{ @@ -16582,17 +16528,13 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f10" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aWd" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f6" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/alpha) "aWe" = ( /obj/structure/shuttle/diagonal{ @@ -16652,17 +16594,13 @@ /obj/structure/shuttle/diagonal{ icon_state = "swall_f10" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aWm" = ( /obj/structure/shuttle/diagonal{ icon_state = "swall_f6" }, -/turf/open/shuttle{ - icon_state = "floor6" - }, +/turf/open/shuttle/can_surgery/red, /area/ice_colony/surface/hangar/beta) "aWn" = ( /obj/structure/shuttle/diagonal{ @@ -19677,7 +19615,6 @@ /area/ice_colony/underground/maintenance/north) "bgR" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ - locked = 0; name = "\improper Underground Maintenance" }, /turf/open/floor/plating, @@ -20402,7 +20339,6 @@ "bjz" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ dir = 1; - locked = 0; name = "\improper Underground Maintenance"; req_access_txt = "100" }, @@ -23731,7 +23667,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "engine_electrical_maintenance"; - locked = 0; name = "Underground Power Substation" }, /turf/open/floor{ @@ -24970,7 +24905,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; id = "engine_electrical_maintenance"; - locked = 0; name = "Underground Power Substation" }, /turf/open/floor/plating, @@ -28109,7 +28043,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 2; - locked = 0; name = "Underground Secure Technical Storage" }, /turf/open/floor{ diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index b43c34586c5c..2ed8035a7972 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -6021,9 +6021,7 @@ /obj/structure/bed/chair/dropship/pilot{ dir = 1 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aUz" = ( /turf/closed/shuttle/ert{ @@ -6032,9 +6030,7 @@ /area/shiva/interior/aerodrome) "aUA" = ( /obj/structure/girder/reinforced, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aUM" = ( /turf/open/floor/shiva{ @@ -6159,9 +6155,7 @@ icon_state = "equip_base"; name = "shuttle attachment point" }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aVF" = ( /obj/structure/surface/table, @@ -6173,15 +6167,11 @@ }, /area/shiva/interior/colony/medseceng) "aVL" = ( -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aVM" = ( /obj/item/weapon/gun/pistol/holdout, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aVN" = ( /turf/closed/shuttle/ert{ @@ -6228,9 +6218,7 @@ /area/shiva/interior/aerodrome) "aVU" = ( /obj/item/stack/sheet/metal, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "aWb" = ( /obj/structure/foamed_metal, @@ -6310,18 +6298,14 @@ }, /area/shiva/interior/aerodrome) "aWS" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin14" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right, /area/shiva/interior/aerodrome) "aWT" = ( /obj/item/ammo_magazine/pistol/holdout{ pixel_x = 6; pixel_y = -4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin14" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right, /area/shiva/interior/aerodrome) "aWU" = ( /turf/closed/shuttle/ert{ @@ -6598,17 +6582,13 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, /area/shiva/interior/aerodrome) "bbg" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, /area/shiva/interior/aerodrome) "bbh" = ( /turf/closed/shuttle/ert{ @@ -6950,9 +6930,7 @@ /area/shiva/interior/colony/research_hab) "bqN" = ( /obj/structure/machinery/door/airlock/almayer/generic, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "bqO" = ( /obj/effect/decal/cleanable/blood, @@ -7383,9 +7361,7 @@ /area/shiva/interior/lz2_habs) "bOh" = ( /obj/effect/landmark/survivor_spawner, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "bPu" = ( /obj/item/bodybag, @@ -7582,9 +7558,7 @@ /obj/structure/machinery/light{ dir = 8 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "bYS" = ( /obj/structure/machinery/light/double, @@ -7621,9 +7595,7 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "cbt" = ( /obj/structure/surface/table, @@ -7773,9 +7745,7 @@ /area/shiva/interior/colony/research_hab) "clp" = ( /obj/item/tool/weldingtool, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "clz" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ @@ -9233,10 +9203,6 @@ "dYp" = ( /turf/closed/wall/shiva/ice, /area/shiva/interior/bar) -"dYw" = ( -/obj/structure/machinery/defenses/sentry/premade, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/junkyard) "dZb" = ( /obj/structure/closet/secure_closet/guncabinet, /obj/structure/machinery/firealarm{ @@ -9781,9 +9747,7 @@ /area/shiva/interior/colony/n_admin) "eHL" = ( /obj/item/tool/wrench, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "eHY" = ( /obj/item/lightstick/red/spoke/planted{ @@ -10321,9 +10285,7 @@ name = "shuttle attachment point" }, /obj/item/storage/firstaid/fire, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "fpF" = ( /obj/structure/stairs/perspective/ice{ @@ -10946,9 +10908,7 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "fXr" = ( /obj/item/lightstick/red/spoke/planted{ @@ -22242,9 +22202,7 @@ /obj/structure/machinery/light{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, /area/shiva/interior/aerodrome) "rNO" = ( /obj/structure/prop/ice_colony/soil_net, @@ -22279,9 +22237,7 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_up_to_down, /area/shiva/interior/aerodrome) "rRb" = ( /obj/structure/surface/rack, @@ -26366,9 +26322,7 @@ /area/shiva/exterior/lz2_fortress) "vVq" = ( /obj/effect/landmark/objective_landmark/close, -/turf/open/shuttle/dropship{ - icon_state = "rasputin14" - }, +/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right, /area/shiva/interior/aerodrome) "vWf" = ( /obj/item/handcuffs, @@ -27561,9 +27515,7 @@ name = "shuttle attachment point" }, /obj/item/storage/firstaid/adv, -/turf/open/shuttle{ - icon_state = "floor7" - }, +/turf/open/shuttle/can_surgery/black, /area/shiva/interior/aerodrome) "xzo" = ( /obj/item/lightstick/red/spoke/planted{ @@ -45675,7 +45627,7 @@ kyD tHd pDr tHd -dYw +kyD kyD kyD kyD @@ -45837,7 +45789,7 @@ tHd kyD pDr kyD -dYw +kyD kyD kyD kyD diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index d178ca9faddf..653416320eac 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -8549,6 +8549,12 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_north) +"lBu" = ( +/obj/structure/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/kutjevo/multi_tiles, +/area/kutjevo/interior/power) "lBP" = ( /obj/structure/window/framed/kutjevo/reinforced, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -14599,7 +14605,6 @@ /area/kutjevo/interior/power) "tEV" = ( /obj/structure/surface/rack, -/obj/item/book/manual/engineering_particle_accelerator, /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/kutjevo/multi_tiles{ dir = 10 @@ -25968,7 +25973,7 @@ uGd fkP vin pBV -hQj +lBu uBz cvm hQj @@ -26135,7 +26140,7 @@ eyU dyU pyp pyp -hQj +sNp pyp xjY xjY diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index f4b3d26d3e93..7364b1609c3e 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -6772,9 +6772,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "dio" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -7185,9 +7183,7 @@ /obj/structure/platform{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/lv522/landing_zone_forecon/UD6_Tornado) "dqr" = ( /obj/item/weapon/gun/rifle/m41a{ @@ -10157,6 +10153,9 @@ icon_state = "marked" }, /area/lv522/atmos/east_reactor) +"eAa" = ( +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "eAg" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -10573,6 +10572,10 @@ }, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor) +"eJQ" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "eJR" = ( /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/windbreaker/observation) @@ -13462,9 +13465,7 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/lv522/landing_zone_forecon/UD6_Tornado) "fTs" = ( /turf/open/floor/corsat{ @@ -15295,23 +15296,6 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) -"gEA" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - dir = 8; - name = "\improper Marshall Head Office" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "gEB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -17672,6 +17656,23 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/nw_rockies) +"hvZ" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + dir = 8; + name = "\improper Marshal Head Office" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "hwa" = ( /obj/structure/platform/stair_cut{ icon_state = "platform_stair_alt" @@ -18168,9 +18169,7 @@ }, /area/lv522/indoors/c_block/mining) "hFm" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/lv522/landing_zone_forecon/UD6_Tornado) "hFu" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -18404,14 +18403,6 @@ icon_state = "floor_marked" }, /area/lv522/indoors/lone_buildings/outdoor_bot) -"hKz" = ( -/obj/item/clothing/under/liaison_suit/suspenders{ - pixel_x = -4; - pixel_y = 9 - }, -/obj/item/clothing/accessory/red, -/turf/open/floor/carpet, -/area/lv522/indoors/a_block/executive) "hKE" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 4 @@ -19019,18 +19010,6 @@ }, /turf/open/floor/prison, /area/lv522/atmos/cargo_intake) -"hVh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/wypacket{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/clothing/under/liaison_suit/suspenders, -/turf/open/floor/strata{ - dir = 4; - icon_state = "white_cyan1" - }, -/area/lv522/indoors/a_block/corpo/glass) "hVk" = ( /obj/item/stack/sheet/metal, /turf/open/floor{ @@ -21479,9 +21458,7 @@ /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/colony_streets/north_west_street) "iSu" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/lv522/landing_zone_forecon/UD6_Tornado) "iSx" = ( /obj/structure/girder, @@ -27018,6 +26995,9 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"kMT" = ( +/turf/open/shuttle/dropship/can_surgery/dark_grey, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "kNe" = ( /obj/item/shard{ icon_state = "medium" @@ -27052,8 +27032,7 @@ "kNM" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; - name = "\improper Dormitories"; - welded = null + name = "\improper Dormitories" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -28008,26 +27987,6 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/north_west_street) -"lea" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Marshall Office Interrogation"; - req_access = null - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Sec-Kitchen-Lockdown"; - name = "\improper Storm Shutters" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "leg" = ( /turf/open/floor/prison{ dir = 10; @@ -29022,6 +28981,26 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) +"lzn" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Marshal Office Interrogation"; + req_access = null + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "lzw" = ( /obj/structure/prop/ice_colony/ground_wire, /turf/open/auto_turf/shale/layer1, @@ -29133,6 +29112,21 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor/south) +"lAM" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Marshal Office Armory" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "Sec-Armoury-Lockdown" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/security) "lAS" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 @@ -40023,9 +40017,7 @@ pixel_x = -9; pixel_y = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "pJb" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ @@ -40607,9 +40599,7 @@ /area/lv522/indoors/a_block/dorms) "pTH" = ( /obj/structure/machinery/door/airlock/hatch/cockpit/two, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "pTO" = ( /obj/effect/decal/cleanable/dirt, @@ -41448,9 +41438,7 @@ name = "????"; stat = 2 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Tornado) "qkw" = ( /obj/structure/prop/invuln/remote_console_pod, @@ -41664,9 +41652,7 @@ dir = 8 }, /obj/effect/decal/cleanable/blood/splatter, -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qnY" = ( /obj/structure/surface/table/almayer, @@ -41706,9 +41692,7 @@ }, /area/lv522/atmos/sewer) "qpg" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qpq" = ( /obj/structure/surface/table/almayer, @@ -41867,9 +41851,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/lv522/outdoors/w_rockies) "qqW" = ( /obj/structure/surface/rack, @@ -42926,9 +42908,7 @@ /obj/item/clothing/suit/storage/RO{ name = "\improper UA jacket" }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qJy" = ( /obj/structure/largecrate/random, @@ -43645,9 +43625,7 @@ layer = 3.1; pixel_y = -15 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qUf" = ( /obj/item/ammo_magazine/rifle/m4ra/ext{ @@ -43710,9 +43688,7 @@ pixel_x = 1; pixel_y = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "qUL" = ( /turf/open/floor/plating, @@ -44534,9 +44510,7 @@ /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rii" = ( /turf/closed/shuttle/dropship2/tornado{ @@ -44641,9 +44615,7 @@ /obj/structure/barricade/deployable{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rkV" = ( /obj/effect/decal/cleanable/dirt, @@ -44971,9 +44943,7 @@ /area/lv522/indoors/a_block/dorms/glass) "rrB" = ( /obj/vehicle/powerloader, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Tornado) "rrI" = ( /obj/structure/bed/chair/comfy{ @@ -45554,9 +45524,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rCu" = ( /turf/open/floor/prison{ @@ -45605,9 +45573,7 @@ /area/lv522/outdoors/colony_streets/north_street) "rDb" = ( /obj/item/device/m56d_post, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rDu" = ( /obj/structure/machinery/door_control{ @@ -45622,9 +45588,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "rDM" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -46908,9 +46872,7 @@ dir = 8; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "scw" = ( /obj/item/ammo_magazine/rifle/heap{ @@ -46928,9 +46890,7 @@ dir = 4; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Typhoon) "scM" = ( /obj/structure/surface/table/almayer, @@ -48451,15 +48411,11 @@ "sGT" = ( /obj/structure/barricade/deployable, /obj/effect/decal/cleanable/blood/splatter, -/turf/open/shuttle/dropship{ - icon_state = "rasputin4" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_left, /area/lv522/landing_zone_forecon/UD6_Typhoon) "sGY" = ( /obj/structure/barricade/deployable, -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/lv522/landing_zone_forecon/UD6_Typhoon) "sHb" = ( /obj/structure/platform_decoration{ @@ -48482,9 +48438,7 @@ /area/lv522/landing_zone_1/tunnel) "sHg" = ( /obj/structure/barricade/deployable, -/turf/open/shuttle/dropship{ - icon_state = "rasputin8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_bottom_right, /area/lv522/landing_zone_forecon/UD6_Typhoon) "sHk" = ( /obj/structure/curtain/red, @@ -49382,6 +49336,10 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"sVX" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, +/area/lv522/landing_zone_forecon/UD6_Typhoon) "sWn" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/strata_outpost/reinforced, @@ -50414,6 +50372,14 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/south) +"tqT" = ( +/obj/item/clothing/accessory/red, +/obj/item/clothing/under/liaison_suit/field{ + pixel_y = 9; + pixel_x = -4 + }, +/turf/open/floor/carpet, +/area/lv522/indoors/a_block/executive) "tqU" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -50557,9 +50523,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "tti" = ( /obj/structure/platform_decoration{ @@ -50854,9 +50818,7 @@ dir = 4; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "tzz" = ( /obj/structure/largecrate/random/secure, @@ -50964,9 +50926,7 @@ /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) "tBM" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin6" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_left, /area/lv522/landing_zone_forecon/UD6_Tornado) "tBQ" = ( /obj/structure/prop/ice_colony/ground_wire{ @@ -51034,9 +50994,7 @@ /turf/closed/wall/strata_ice/dirty, /area/lv522/outdoors/colony_streets/south_east_street) "tCR" = ( -/turf/open/shuttle/dropship{ - icon_state = "floor8" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_left_to_right, /area/lv522/landing_zone_forecon/UD6_Tornado) "tCX" = ( /turf/open/floor/corsat{ @@ -51051,9 +51009,7 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) "tDm" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin7" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_top_right, /area/lv522/landing_zone_forecon/UD6_Tornado) "tDu" = ( /obj/structure/machinery/computer/operating, @@ -51346,9 +51302,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "tIM" = ( /obj/structure/prop/vehicles/crawler{ @@ -51667,9 +51621,7 @@ /area/lv522/indoors/lone_buildings/storage_blocks) "tNT" = ( /obj/structure/prop/vehicles/crawler{ - icon_state = "crawler_covered_bed"; - unacidable = 0; - unslashable = 0 + icon_state = "crawler_covered_bed" }, /turf/open/floor/corsat{ icon_state = "plate" @@ -53792,9 +53744,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "uDP" = ( /obj/structure/bed/chair/comfy{ @@ -54261,9 +54211,7 @@ /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) "uKQ" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_single_wide_up_to_down, /area/lv522/landing_zone_forecon/UD6_Tornado) "uKR" = ( /obj/structure/barricade/wooden{ @@ -54993,9 +54941,7 @@ }, /area/lv522/landing_zone_2/ceiling) "uXj" = ( -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "uXp" = ( /obj/item/weapon/twohanded/folded_metal_chair, @@ -55142,9 +55088,7 @@ /obj/structure/platform{ dir = 4 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/light_grey_middle, /area/lv522/landing_zone_forecon/UD6_Tornado) "vbm" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -55628,9 +55572,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "vju" = ( /obj/effect/decal/cleanable/dirt, @@ -59389,9 +59331,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "wBx" = ( /obj/structure/machinery/landinglight/ds2/delayone{ @@ -61044,9 +60984,7 @@ dir = 8; pixel_y = -5 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "xkr" = ( /obj/effect/landmark/objective_landmark/medium, @@ -61543,6 +61481,18 @@ /obj/effect/spider/spiderling/nogrow, /turf/open/floor/prison, /area/lv522/indoors/c_block/t_comm) +"xvy" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/clothing/suit/storage/jacket/marine/corporate, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/lv522/indoors/a_block/corpo/glass) "xvB" = ( /obj/structure/window/framed/strata/reinforced, /turf/open/floor/corsat{ @@ -62425,9 +62375,7 @@ /obj/structure/bed/chair/dropship/passenger{ dir = 8 }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, +/turf/open/shuttle/dropship/can_surgery/dark_grey, /area/lv522/landing_zone_forecon/UD6_Tornado) "xNG" = ( /obj/structure/machinery/computer/crew/colony{ @@ -63194,21 +63142,6 @@ icon_state = "floor3" }, /area/lv522/landing_zone_2/ceiling) -"yat" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Marshall Office Armory" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "Sec-Armoury-Lockdown" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/security) "yaw" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -66687,8 +66620,8 @@ pRM qnk qHA qTO -rhB -qJl +kMT +eJQ rCp scv rCp @@ -66912,12 +66845,12 @@ pxY pIu nbO qnV -rjP -rjP +eAa +eAa rig -rjP +eAa rDb -rjP +eAa sGT tdS tzA @@ -67367,10 +67300,10 @@ qst gTM qqS qJw -rjP -rjP -rus -rjP +eAa +eAa +sVX +eAa rig sHg teL @@ -83282,7 +83215,7 @@ xlU sjy sjy sjy -lea +lzn sjy tpa tpa @@ -83745,7 +83678,7 @@ sjy sjy uqx sjy -yat +lAM sjy uqx sjy @@ -86225,7 +86158,7 @@ wcp wwM jYZ hlH -hVh +xvy jtZ lvX lvX @@ -88741,7 +88674,7 @@ gwR sjy sjy sjy -gEA +hvZ sjy sjy cBs @@ -90310,7 +90243,7 @@ xjF vSc xjF gCO -hKz +tqT wgW wgW jRT diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index becac81a1897..5a0bb9dfc88d 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -5167,12 +5167,6 @@ icon_state = "vault" }, /area/lv624/lazarus/robotics) -"azb" = ( -/obj/structure/prop/mech/mech_parts/part/gygax_torso, -/turf/open/floor{ - icon_state = "vault" - }, -/area/lv624/lazarus/robotics) "azc" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -5515,13 +5509,6 @@ icon_state = "vault" }, /area/lv624/lazarus/robotics) -"aAk" = ( -/obj/structure/prop/mech/mech_parts/chassis/gygax, -/turf/open/floor{ - dir = 8; - icon_state = "vault" - }, -/area/lv624/lazarus/robotics) "aAl" = ( /turf/open/gm/dirt, /area/lv624/ground/jungle/west_jungle) @@ -6030,15 +6017,6 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) -"aBR" = ( -/obj/structure/largecrate, -/obj/structure/prop/mech/mech_parts/part/gygax_armor{ - layer = 1 - }, -/turf/open/floor/plating{ - icon_state = "platebot" - }, -/area/lv624/lazarus/robotics) "aBS" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -12612,6 +12590,13 @@ "bvj" = ( /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/east_caves) +"bvq" = ( +/obj/structure/prop/mech/parts/chassis/gygax, +/turf/open/floor{ + dir = 8; + icon_state = "vault" + }, +/area/lv624/lazarus/robotics) "bvS" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/auto_turf/strata_grass/layer1, @@ -14167,6 +14152,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/south_medbay_road) +"eot" = ( +/obj/structure/prop/mech/parts/gygax_torso, +/turf/open/floor{ + icon_state = "vault" + }, +/area/lv624/lazarus/robotics) "eoM" = ( /turf/open/floor{ dir = 4; @@ -16665,6 +16656,15 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"jIr" = ( +/obj/structure/largecrate, +/obj/structure/prop/mech/parts/gygax_armor{ + layer = 1 + }, +/turf/open/floor/plating{ + icon_state = "platebot" + }, +/area/lv624/lazarus/robotics) "jJg" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/auto_turf/strata_grass/layer1, @@ -19560,6 +19560,18 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor/plating, /area/lv624/lazarus/corporate_dome) +"paQ" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/clothing/under/liaison_suit/blue, +/turf/open/floor{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/lv624/lazarus/corporate_dome) "pba" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, @@ -23463,18 +23475,6 @@ /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_west_caves) -"wtK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/fancy/cigarettes/wypacket{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/clothing/under/liaison_suit/suspenders, -/turf/open/floor{ - dir = 6; - icon_state = "whiteyellow" - }, -/area/lv624/lazarus/corporate_dome) "wvO" = ( /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass1, @@ -35735,7 +35735,7 @@ axi axj avH aBp -aBR +jIr aCk ado aXX @@ -36872,7 +36872,7 @@ aym axi aza azG -aAk +bvq axi aBr axi @@ -37098,7 +37098,7 @@ axj axj axj ayG -azb +eot axi axj axj @@ -38950,7 +38950,7 @@ gnx gnx fzg pyG -wtK +paQ wJA wMk wMk diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm index a56328df85f0..ca983240307f 100644 --- a/maps/map_files/New_Varadero/New_Varadero.dmm +++ b/maps/map_files/New_Varadero/New_Varadero.dmm @@ -6074,10 +6074,7 @@ pixel_x = -7; pixel_y = 8 }, -/obj/item/tool/lighter/zippo{ - icon_off = "blackzippo"; - icon_on = "blackzippoon"; - icon_state = "blackzippo"; +/obj/item/tool/lighter/zippo/black{ pixel_x = -5; pixel_y = 7 }, @@ -34890,10 +34887,6 @@ icon_state = "blue" }, /area/varadero/interior/administration) -"wjd" = ( -/obj/item/book/manual/robotics_cyborgs, -/turf/open/floor/carpet, -/area/varadero/interior/library) "wjf" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -53826,7 +53819,7 @@ pjn mCY jzZ mCY -wjd +jzZ mRq xWY hvO diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index 84355a59b16d..1f81d5d13e61 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -15781,7 +15781,6 @@ /area/strata/ag/interior/outpost/canteen/bar) "aXj" = ( /obj/structure/surface/rack, -/obj/item/book/manual/engineering_singularity_safety, /obj/structure/machinery/light/small{ dir = 8 }, @@ -15799,7 +15798,6 @@ /obj/structure/surface/rack, /obj/item/book/manual/orbital_cannon_manual, /obj/item/book/manual/research_and_development, -/obj/item/book/manual/supermatter_engine, /turf/open/floor/strata{ icon_state = "orange_cover" }, @@ -16973,7 +16971,6 @@ "bbE" = ( /obj/structure/surface/rack, /obj/item/book/manual/engineering_guide, -/obj/item/book/manual/engineering_particle_accelerator, /turf/open/floor/strata{ icon_state = "orange_cover" }, @@ -29295,7 +29292,7 @@ /obj/structure/machinery/light/small{ dir = 1 }, -/obj/item/book/manual/engineering_particle_accelerator, +/obj/item/book/manual/detective, /turf/open/floor/strata, /area/strata/ag/interior/dorms) "ctF" = ( diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 26c9816ca0c3..3cd01dcd50f2 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -48,9 +48,6 @@ icon_state = "outerhull_dir" }, /area/space) -"aai" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull) "aak" = ( /obj/effect/step_trigger/teleporter/random{ affect_ghosts = 1; @@ -64,13 +61,6 @@ }, /turf/open/space/basic, /area/space) -"aal" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "aam" = ( /obj/structure/stairs, /obj/effect/step_trigger/teleporter_vector{ @@ -90,14 +80,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"aao" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aap" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "aaq" = ( /obj/item/bedsheet/purple{ layer = 3.2 @@ -138,9 +120,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"aar" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_s) "aas" = ( /obj/vehicle/powerloader, /obj/structure/platform{ @@ -185,10 +164,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"aaz" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "aaC" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -315,12 +290,6 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) -"abe" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "abf" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -335,14 +304,20 @@ /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/north2) +"abj" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "abk" = ( /obj/structure/window/reinforced/toughened, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cic) -"abp" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_s) +"abn" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "abs" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/north1) @@ -353,15 +328,6 @@ "abx" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"abA" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "abB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -470,13 +436,6 @@ "acf" = ( /turf/closed/wall/almayer/outer, /area/almayer/living/starboard_garden) -"ach" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "aci" = ( /obj/structure/window/reinforced{ dir = 4; @@ -668,14 +627,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"acD" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "acF" = ( /obj/structure/machinery/light{ dir = 1 @@ -847,17 +798,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"adf" = ( -/obj/structure/closet, -/obj/item/clothing/suit/armor/riot/marine/vintage_riot, -/obj/item/clothing/head/helmet/riot/vintage_riot, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "adg" = ( /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) @@ -894,15 +834,6 @@ icon_state = "green" }, /area/almayer/living/starboard_garden) -"adp" = ( -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "adq" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/north1) @@ -912,18 +843,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"adt" = ( -/obj/item/reagent_container/glass/bucket/janibucket{ - pixel_x = -1; - pixel_y = 13 - }, -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "adu" = ( /turf/open/floor/almayer, /area/almayer/shipboard/starboard_missiles) @@ -952,14 +871,6 @@ icon_state = "plate" }, /area/almayer/living/basketball) -"adE" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "adF" = ( /obj/structure/window/reinforced{ dir = 1; @@ -986,13 +897,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"adI" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "adO" = ( /turf/closed/wall/almayer, /area/almayer/engineering/starboard_atmos) @@ -1092,12 +996,6 @@ "aep" = ( /turf/closed/wall/almayer, /area/almayer/engineering/airmix) -"aeq" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aer" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -1139,21 +1037,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) -"aeD" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - access_modified = 1; - req_one_access = null; - req_one_access_txt = "2;7" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "CIC Lockdown"; - name = "\improper Combat Information Center Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "aeE" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -1342,20 +1225,6 @@ icon_state = "redfull" }, /area/almayer/shipboard/starboard_missiles) -"afd" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = 32 - }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_f_s) "afe" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -1389,10 +1258,6 @@ "afk" = ( /turf/open/floor/engine, /area/almayer/engineering/airmix) -"afl" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "afm" = ( /turf/open/floor/almayer_hull{ dir = 6; @@ -1636,31 +1501,12 @@ "agc" = ( /turf/open/floor/carpet, /area/almayer/living/commandbunks) -"age" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/upper_hull/u_f_s) "agf" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"agi" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - req_access = null; - req_one_access = null; - req_one_access_txt = "3;22;19" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "agj" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/commandbunks) @@ -1718,8 +1564,11 @@ dir = 4 }, /obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/squads/req) "agw" = ( @@ -1829,14 +1678,6 @@ icon_state = "kitchen" }, /area/almayer/living/cafeteria_officer) -"agU" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "agV" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -1855,32 +1696,12 @@ icon_state = "plate" }, /area/almayer/living/cafeteria_officer) -"ahb" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "ahc" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/wy_mre, /obj/item/storage/box/wy_mre, /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) -"ahd" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - dir = 1; - req_access = null; - req_one_access = null; - req_one_access_txt = "3;22;19" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "ahe" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -1900,14 +1721,6 @@ icon_state = "plate" }, /area/almayer/engineering/starboard_atmos) -"ahg" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ahh" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/starboard_atmos) @@ -1926,30 +1739,12 @@ allow_construction = 0 }, /area/almayer/hallways/starboard_hallway) -"ahk" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ahl" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "green" }, /area/almayer/living/starboard_garden) -"ahn" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet, -/obj/item/clothing/under/marine, -/obj/item/clothing/suit/storage/marine, -/obj/item/clothing/head/helmet/marine, -/obj/item/clothing/head/cmcap, -/obj/item/clothing/head/cmcap, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aho" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -1972,16 +1767,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"aht" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"ahx" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "ahy" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -2008,10 +1793,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"ahE" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_f_s) "ahG" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -2029,6 +1810,14 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) +"ahL" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/drinks/cans/souto/diet/lime{ + pixel_x = 7; + pixel_y = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "ahM" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -2053,15 +1842,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"ahU" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Tool Closet" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "ahV" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -2159,11 +1939,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"ail" = ( -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "aim" = ( /turf/open/floor/almayer{ dir = 6; @@ -2190,27 +1965,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"aip" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "aiq" = ( /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) @@ -2232,14 +1986,6 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) -"aiv" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "aiw" = ( /turf/open/floor/almayer, /area/almayer/engineering/starboard_atmos) @@ -2250,23 +1996,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"aiz" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine, -/obj/item/clothing/suit/storage/marine, -/obj/item/clothing/head/helmet/marine, -/obj/item/clothing/head/beret/cm, -/obj/item/clothing/head/beret/cm, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"aiA" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/clothing/glasses/mgoggles, -/obj/item/clothing/glasses/mgoggles, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aiB" = ( /turf/open/floor/almayer{ dir = 8; @@ -2276,12 +2005,6 @@ "aiC" = ( /turf/open/floor/almayer, /area/almayer/hallways/stern_hallway) -"aiE" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aiH" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -2325,39 +2048,6 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"aiS" = ( -/obj/structure/closet, -/obj/item/device/flashlight/pen, -/obj/item/attachable/reddot, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aiT" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aiU" = ( -/obj/structure/surface/table/almayer, -/obj/item/card/id/visa, -/obj/item/tool/crew_monitor, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"aiV" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "aiW" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -2371,14 +2061,6 @@ "aiX" = ( /turf/closed/wall/almayer, /area/almayer/living/pilotbunks) -"aiZ" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ajd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -2616,10 +2298,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"ajQ" = ( -/obj/docking_port/stationary/escape_pod/east, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "ajR" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -2680,16 +2358,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"akd" = ( -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_a_s) -"ake" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "akf" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -2965,6 +2633,10 @@ }, /turf/open/floor/grass, /area/almayer/living/starboard_garden) +"alh" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "ali" = ( /turf/open/floor/almayer{ dir = 8; @@ -3074,9 +2746,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"alH" = ( -/turf/closed/wall/almayer/white/outer_tile, -/area/almayer/hull/upper_hull) "alI" = ( /obj/item/stack/cable_coil{ pixel_x = 1; @@ -3130,16 +2799,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"alT" = ( -/obj/structure/bed/chair, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "alU" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/navigation) @@ -3240,6 +2899,14 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) +"amu" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "amw" = ( /turf/open/floor/almayer{ dir = 9; @@ -3298,12 +2965,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"amJ" = ( -/obj/structure/largecrate/machine/bodyscanner, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "amK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -3314,22 +2975,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"amL" = ( -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/obj/structure/largecrate, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"amN" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "amO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3339,27 +2984,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"amP" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"amQ" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "amR" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -3398,13 +3022,6 @@ icon_state = "plate" }, /area/almayer/hallways/repair_bay) -"amW" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/toxin, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "amX" = ( /turf/open/floor/almayer{ dir = 1; @@ -3434,15 +3051,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"anb" = ( -/obj/structure/machinery/conveyor{ - id = "lower_garbage" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" - }, -/area/almayer/hull/lower_hull/l_m_p) "anc" = ( /turf/open/floor/almayer{ dir = 8; @@ -3468,6 +3076,19 @@ icon_state = "silvercorner" }, /area/almayer/hallways/aft_hallway) +"ang" = ( +/obj/item/clothing/head/welding{ + pixel_y = 6 + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "anh" = ( /turf/open/floor/almayer{ dir = 6; @@ -3494,13 +3115,6 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"ano" = ( -/obj/structure/machinery/light/small{ - dir = 1; - pixel_y = 20 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "anp" = ( /obj/structure/sign/safety/hazard{ pixel_x = 15; @@ -3548,25 +3162,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"ant" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"anu" = ( -/obj/structure/ladder{ - height = 2; - id = "AftStarboardMaint" - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_a_s) "anw" = ( /obj/structure/machinery/flasher{ id = "Containment Cell 1"; @@ -3641,10 +3236,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"anI" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "anJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -3691,15 +3282,6 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"anS" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/landinglight/ds2/delayone{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/hangar) "anT" = ( /turf/open/floor/almayer{ dir = 4; @@ -3713,6 +3295,7 @@ req_access = null; req_one_access_txt = "3;22;2;19" }, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -3729,15 +3312,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"anX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "aoa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -3767,22 +3341,10 @@ "aoe" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/morgue) -"aof" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/landinglight/ds1/delayone{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/hangar) "aog" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 8 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) "aoh" = ( @@ -3794,12 +3356,6 @@ "aoi" = ( /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"aol" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/hangar) "aom" = ( /turf/open/floor/almayer{ dir = 8; @@ -3834,18 +3390,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"aot" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_10" - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) -"aou" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "aov" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -4006,9 +3550,6 @@ /obj/structure/machinery/landinglight/ds1/delayone{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) "aoP" = ( @@ -4276,15 +3817,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"apI" = ( -/obj/structure/machinery/door/airlock/almayer/command{ - dir = 2; - name = "\improper Command Ladder" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull) "apJ" = ( /turf/open/floor/almayer{ dir = 8; @@ -4401,17 +3933,6 @@ icon_state = "tcomms" }, /area/almayer/command/telecomms) -"aqc" = ( -/obj/structure/machinery/door_control{ - id = "panicroomback"; - name = "\improper Safe Room"; - pixel_x = -25; - req_one_access_txt = "3" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "aqe" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -4583,6 +4104,13 @@ icon_state = "plate" }, /area/almayer/medical/medical_science) +"aqH" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "aqI" = ( /turf/open/floor/almayer{ dir = 8; @@ -4665,6 +4193,9 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) +"aqZ" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_stern) "arb" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) @@ -5336,14 +4867,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"atz" = ( -/obj/item/tool/minihoe{ - pixel_x = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "atC" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -5352,20 +4875,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"atD" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"atG" = ( -/obj/structure/bed/chair/comfy/beige{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "atI" = ( /obj/structure/stairs{ dir = 8; @@ -5434,6 +4943,12 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) +"atS" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "atT" = ( /obj/structure/toilet{ dir = 1 @@ -5578,26 +5093,6 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) -"auo" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/med_data/laptop{ - dir = 8 - }, -/obj/item/device/flashlight/lamp{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "auu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -5635,21 +5130,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) -"auD" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "auG" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -5789,9 +5269,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"avl" = ( -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "avm" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -5807,12 +5284,6 @@ "avo" = ( /turf/closed/wall/almayer/outer, /area/almayer/powered/agent) -"avr" = ( -/obj/structure/bed/sofa/south/grey/left{ - pixel_y = 12 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "avs" = ( /turf/closed/wall/biodome, /area/almayer/powered/agent) @@ -6239,19 +5710,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"awJ" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"awM" = ( -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) "awQ" = ( /obj/structure/surface/table/almayer, /obj/item/cell/high{ @@ -6628,19 +6086,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"ayh" = ( -/obj/structure/machinery/power/smes/buildable, -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = -32 - }, -/obj/structure/sign/safety/high_voltage{ - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "ayi" = ( /obj/structure/machinery/recharger, /obj/structure/surface/table/almayer, @@ -6825,12 +6270,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"ayP" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "ayQ" = ( /obj/structure/platform_decoration{ dir = 4 @@ -6942,6 +6381,12 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) +"azg" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "azh" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/almayer{ @@ -7115,13 +6560,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"azH" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) "azI" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -7237,16 +6675,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) -"aAe" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aAf" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -7472,18 +6900,6 @@ icon_state = "plate" }, /area/almayer/command/telecomms) -"aBa" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aBb" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -7546,27 +6962,6 @@ icon_state = "test_floor4" }, /area/almayer/command/telecomms) -"aBg" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aBh" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -7765,6 +7160,15 @@ icon_state = "test_floor4" }, /area/almayer/living/synthcloset) +"aBQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/o2, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "aBR" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/ashtray/glass, @@ -7921,6 +7325,10 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/morgue) +"aCA" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "aCC" = ( /turf/open/floor/almayer{ icon_state = "sterile_green" @@ -7995,14 +7403,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) -"aDg" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aDh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -8117,12 +7517,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"aDz" = ( -/obj/structure/platform_decoration, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aDB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -8177,12 +7571,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering) -"aDF" = ( -/obj/structure/platform, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aDH" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -8337,6 +7725,15 @@ icon_state = "test_floor4" }, /area/almayer/hallways/stern_hallway) +"aEr" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "aEA" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -8555,31 +7952,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"aFp" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/toolcloset, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) -"aFq" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/station_alert, -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aFr" = ( /obj/structure/machinery/light, /obj/structure/reagent_dispensers/watertank, @@ -8711,6 +8083,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/stern_hallway) +"aGa" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "aGb" = ( /obj/structure/ladder{ height = 2; @@ -8759,6 +8138,12 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"aGm" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "aGn" = ( /obj/structure/barricade/handrail, /turf/open/floor/almayer{ @@ -8941,16 +8326,6 @@ /obj/structure/window/reinforced/tinted/frosted, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/numbertwobunks) -"aHo" = ( -/obj/structure/machinery/computer/working_joe{ - dir = 4; - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aHq" = ( /turf/closed/wall/almayer, /area/almayer/command/computerlab) @@ -9045,12 +8420,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"aHB" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aHK" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -9126,19 +8495,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/starboard_missiles) -"aIa" = ( -/obj/structure/machinery/power/terminal, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"aIb" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aId" = ( /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) @@ -9154,6 +8510,11 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) +"aIh" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "aIl" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -9335,9 +8696,6 @@ icon_state = "plate" }, /area/almayer/living/tankerbunks) -"aIZ" = ( -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "aJc" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Commanding Officer's Mess" @@ -9505,20 +8863,6 @@ /obj/structure/bed/chair, /turf/open/floor/grass, /area/almayer/living/starboard_garden) -"aJL" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/snacks/mre_pack/meal5, -/obj/item/device/flashlight/lamp{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"aJM" = ( -/obj/docking_port/stationary/escape_pod/east, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) "aJU" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -9702,21 +9046,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/pilotbunks) -"aKI" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 1; - pixel_y = 7 - }, -/obj/item/storage/toolbox/mechanical/green{ - pixel_x = 1; - pixel_y = -1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "aKN" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clothing/accessory/red, @@ -9771,15 +9100,6 @@ icon_state = "plating" }, /area/almayer/shipboard/starboard_point_defense) -"aKW" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_m_s) -"aLa" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "aLc" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -9793,24 +9113,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"aLd" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull) -"aLf" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"aLk" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"aLl" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "aLp" = ( /obj/structure/sign/safety/cryo{ pixel_x = 8; @@ -9828,22 +9130,12 @@ "aLB" = ( /turf/closed/wall/almayer, /area/almayer/hallways/starboard_hallway) -"aLC" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "aLE" = ( /obj/docking_port/stationary/emergency_response/external/hangar_starboard{ dwidth = 8 }, /turf/open/space, /area/space) -"aLF" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "aLG" = ( /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) @@ -9911,6 +9203,11 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"aMf" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) "aMg" = ( /obj/structure/sign/safety/intercom{ layer = 2.9; @@ -9936,27 +9233,6 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) -"aMh" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/ladder{ - height = 2; - id = "cicladder3" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = 23; - pixel_y = 32 - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull) -"aMi" = ( -/obj/structure/ladder{ - height = 2; - id = "cicladder4" - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull) "aMl" = ( /obj/structure/machinery/light{ dir = 8 @@ -9993,19 +9269,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"aMr" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) -"aMs" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "aMt" = ( /obj/structure/machinery/light{ dir = 1 @@ -10091,6 +9354,10 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"aML" = ( +/obj/item/ammo_casing/bullet, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "aMM" = ( /turf/open/floor/almayer{ dir = 4; @@ -10152,33 +9419,6 @@ "aNi" = ( /turf/closed/wall/almayer, /area/almayer/living/chapel) -"aNj" = ( -/obj/structure/bed/chair/office/dark, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) -"aNk" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/green, -/obj/structure/sign/safety/maint{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "aNl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -10212,18 +9452,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"aNw" = ( -/obj/structure/machinery/door_control{ - id = "safe_armory"; - name = "Hangar Armory Lockdown"; - pixel_y = 24; - req_access_txt = "4" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) "aNx" = ( /obj/structure/window/reinforced{ dir = 4; @@ -10307,16 +9535,6 @@ dir = 1 }, /area/almayer/medical/containment/cell) -"aOg" = ( -/obj/structure/bed/sofa/south/grey{ - pixel_y = 12 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"aOi" = ( -/obj/effect/landmark/start/nurse, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "aOq" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -10381,12 +9599,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aOD" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aOE" = ( /obj/structure/platform{ dir = 8 @@ -10535,6 +9747,14 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"aPe" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "aPf" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, @@ -10669,6 +9889,19 @@ /obj/structure/sign/nosmoking_1, /turf/closed/wall/almayer, /area/almayer/squads/alpha) +"aPN" = ( +/obj/structure/ladder{ + height = 2; + id = "ForeStarboardMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = -17 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/s_bow) +"aPO" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "aPS" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/almayer{ @@ -10687,10 +9920,6 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"aPX" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "aPY" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -10761,16 +9990,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"aQs" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/obj/item/tool/extinguisher, -/obj/item/tool/crowbar, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aQt" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -10829,10 +10048,6 @@ icon_state = "test_floor4" }, /area/almayer/living/offices) -"aQI" = ( -/obj/effect/landmark/start/researcher, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "aQL" = ( /turf/closed/wall/almayer, /area/almayer/squads/bravo) @@ -10944,15 +10159,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"aRr" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/item/storage/firstaid/o2, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "aRt" = ( /turf/open/floor/almayer{ dir = 8; @@ -11033,16 +10239,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/morgue) -"aRG" = ( -/obj/structure/bed/chair/comfy/beige, -/obj/item/reagent_container/glass/bucket{ - pixel_x = 12; - pixel_y = -5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aRJ" = ( /obj/structure/ladder{ height = 2; @@ -11094,14 +10290,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"aRV" = ( -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "aRX" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -11147,21 +10335,16 @@ /area/almayer/engineering/lower/engine_core) "aSl" = ( /obj/structure/machinery/light, -/obj/structure/machinery/cm_vending/sorted/medical, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ dir = 4; icon_state = "sterile_green_corner" }, /area/almayer/medical/medical_science) -"aSm" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "aSn" = ( /obj/item/stack/sheet/mineral/plastic{ amount = 15 @@ -11348,20 +10531,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_two) -"aSY" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/item/reagent_container/glass/bucket/mopbucket, -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = 14 - }, -/obj/structure/janitorialcart, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "aTa" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -11548,24 +10717,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"aTR" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 2; - id = "CIC Lockdown"; - layer = 2.2; - name = "\improper Combat Information Center Blast Door" - }, -/obj/structure/machinery/door/airlock/almayer/engineering/reinforced{ - dir = 1; - name = "\improper Command Power Substation" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "aTS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -11846,10 +10997,6 @@ icon_state = "kitchen" }, /area/almayer/living/captain_mess) -"aVt" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "aVC" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -12072,14 +11219,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"aWs" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aWt" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -12273,14 +11412,6 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) -"aYc" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "aYd" = ( /obj/structure/dropship_equipment/medevac_system, /turf/open/floor/almayer{ @@ -12293,19 +11424,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"aYm" = ( -/obj/structure/sign/safety/med_life_support{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/lower_medical_medbay) "aYn" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -12319,14 +11437,6 @@ icon_state = "red" }, /area/almayer/living/starboard_garden) -"aYr" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aYs" = ( /turf/open/floor/almayer{ dir = 10; @@ -12435,6 +11545,12 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"aYU" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "aYV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -12515,27 +11631,15 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) "aZl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/starboard_hallway) -"aZm" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, -/turf/open/floor/almayer, +/turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"aZn" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_s) "aZr" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -12548,6 +11652,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/chapel) +"aZv" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_p) "aZy" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -12591,6 +11703,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) +"aZI" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "aZK" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -12611,15 +11729,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"aZM" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/adv/empty, -/obj/item/storage/firstaid/adv/empty, -/obj/item/storage/firstaid/adv/empty, -/turf/open/floor/almayer{ - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/lower_medical_medbay) "aZO" = ( /obj/structure/machinery/landinglight/ds2/delaytwo, /turf/open/floor/almayer{ @@ -12815,19 +11924,20 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"baY" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/bomb_supply, -/obj/effect/spawner/random/bomb_supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "baZ" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lower_medical_lobby) +"bba" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/reagent_dispensers/fueltank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "bbd" = ( /obj/structure/machinery/light{ dir = 4 @@ -12938,18 +12048,6 @@ "bbs" = ( /turf/closed/wall/almayer, /area/almayer/living/cryo_cells) -"bbv" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) -"bbx" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bby" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -13014,12 +12112,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"bbR" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "bbS" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/starboard_point_defense) @@ -13276,10 +12368,6 @@ }, /turf/open/floor/plating, /area/almayer/living/briefing) -"bdi" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "bdj" = ( /turf/open/floor/almayer, /area/almayer/squads/req) @@ -13306,15 +12394,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"bdn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bdr" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) @@ -13573,25 +12652,9 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"beG" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "beH" = ( /turf/open/floor/almayer, /area/almayer/living/briefing) -"beI" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "beL" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -13668,25 +12731,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"bfb" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/spawner/random/technology_scanner, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bfc" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "bfl" = ( /turf/open/floor/almayer{ dir = 5; @@ -13711,6 +12755,9 @@ icon_state = "redcorner" }, /area/almayer/living/cryo_cells) +"bfs" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/lower/l_f_s) "bft" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -13821,28 +12868,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"bfO" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/photocopier{ - anchored = 0 - }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliaison) -"bfP" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "bfV" = ( /obj/structure/machinery/landinglight/ds2{ dir = 8 @@ -13869,13 +12894,6 @@ icon_state = "redcorner" }, /area/almayer/hallways/starboard_hallway) -"bgc" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "bgj" = ( /obj/structure/machinery/landinglight/ds1{ dir = 8 @@ -14034,12 +13052,6 @@ /obj/structure/window/framed/almayer/white, /turf/open/floor/plating, /area/almayer/medical/chemistry) -"bgH" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/lower_hull/l_m_s) "bgK" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -14131,6 +13143,7 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) "bho" = ( @@ -14156,14 +13169,14 @@ icon_state = "plate" }, /area/almayer/living/chapel) -"bhC" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, +"bhy" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_m_p) "bhG" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -14206,6 +13219,27 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"bhV" = ( +/obj/structure/ladder/fragile_almayer{ + height = 2; + id = "kitchen" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"bhZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/table, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "biq" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/beaker/large, @@ -14259,15 +13293,13 @@ "biA" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_three) -"biB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, +"biC" = ( +/obj/structure/largecrate/random/case, +/obj/structure/machinery/access_button/airlock_exterior, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull) +/area/almayer/maint/hull/upper/u_a_s) "biF" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/roller/surgical, @@ -14325,10 +13357,10 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/starboard_garden) -"bjb" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/starboard_hallway) +"bjg" = ( +/obj/item/trash/chips, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "bjk" = ( /obj/structure/machinery/door_control{ id = "perma_lockdown_2"; @@ -14351,6 +13383,14 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"bjt" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "bju" = ( /turf/open/floor/almayer{ dir = 1; @@ -14375,12 +13415,6 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"bjI" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bjJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -14578,14 +13612,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"bkR" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bkT" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -14701,6 +13727,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -14932,9 +13959,9 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/junction{ dir = 8; - icon_state = "pipe-c" + icon_state = "pipe-y" }, /turf/open/floor/almayer{ icon_state = "plate" @@ -15106,6 +14133,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) +"bnF" = ( +/obj/structure/machinery/cryopod{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_m_p) "bnH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -15179,32 +14214,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"bob" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) -"boc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "bof" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -15231,6 +14240,9 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"bos" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/lower/s_bow) "bot" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -15290,13 +14302,14 @@ icon_state = "mono" }, /area/almayer/squads/req) -"boC" = ( -/obj/structure/barricade/handrail, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "boL" = ( /turf/open/floor/almayer, /area/almayer/living/starboard_garden) +"boU" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "boV" = ( /obj/structure/cargo_container/wy/left, /obj/structure/prop/almayer/minigun_crate{ @@ -15320,13 +14333,6 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"boZ" = ( -/obj/item/storage/box/donkpockets, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bpa" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -15439,14 +14445,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"bpJ" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "bpK" = ( /obj/structure/machinery/door/airlock/almayer/marine/alpha/sl, /turf/open/floor/almayer{ @@ -15521,12 +14519,6 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"bqG" = ( -/turf/open/floor/almayer{ - dir = 6; - icon_state = "silver" - }, -/area/almayer/hull/upper_hull/u_m_p) "bqH" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -15767,12 +14759,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"brX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "brY" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -15850,21 +14836,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"bsF" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/emails{ - dir = 1; - pixel_x = 1; - pixel_y = 4 - }, -/obj/item/tool/kitchen/utensil/fork{ - pixel_x = -9; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bsG" = ( /obj/structure/machinery/disposal{ density = 0; @@ -15913,10 +14884,6 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"bsO" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "bsP" = ( /obj/structure/machinery/optable, /turf/open/floor/almayer{ @@ -15975,7 +14942,6 @@ /obj/structure/pipes/vents/pump{ dir = 8 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) "bsW" = ( @@ -16013,23 +14979,22 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"btk" = ( -/obj/structure/sign/poster/pinup{ - pixel_x = -30 - }, -/obj/structure/sign/poster/hunk{ - pixel_x = -25; - pixel_y = 10 +"btn" = ( +/obj/item/device/camera{ + pixel_x = 4; + pixel_y = 8 }, -/obj/item/trash/buritto, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = 16 +/obj/structure/surface/table/almayer, +/obj/item/device/camera_film{ + pixel_x = 4; + pixel_y = -2 }, +/obj/item/device/camera_film, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/brig/main_office) "btp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -16096,6 +15061,15 @@ "btO" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"btV" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "btX" = ( /obj/structure/machinery/light{ dir = 4 @@ -16162,15 +15136,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"buq" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "bur" = ( /obj/structure/prop/almayer/missile_tube, /obj/effect/decal/warning_stripes{ @@ -16212,15 +15177,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"buD" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "buH" = ( /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) @@ -16263,15 +15219,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"buU" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/starboard_hallway) "bvb" = ( /obj/structure/machinery/light{ dir = 8 @@ -16334,18 +15281,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/general_equipment) -"bvO" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"bvS" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull) "bvT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -16467,15 +15402,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"bwF" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) +"bwG" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_m_s) "bwH" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/crew/alt{ @@ -16486,26 +15415,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"bwQ" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) "bwR" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/med_data/laptop{ @@ -16656,13 +15565,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower/workshop) -"bxX" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"bxY" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 11 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "byb" = ( /obj/structure/barricade/handrail/medical, /turf/open/floor/almayer{ @@ -16739,6 +15654,15 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"byt" = ( +/obj/structure/surface/rack, +/obj/item/tool/crowbar, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "byu" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -16782,6 +15706,15 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"byH" = ( +/obj/structure/bed/sofa/south/white/right{ + pixel_y = 16 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) "byI" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -16831,18 +15764,6 @@ icon_state = "test_floor4" }, /area/almayer/command/telecomms) -"bzE" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"bzF" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bzH" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -16964,6 +15885,13 @@ icon_state = "test_floor4" }, /area/almayer/command/securestorage) +"bAy" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = -32 + }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "bAH" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -17084,6 +16012,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) +"bBc" = ( +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "bBd" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -17221,6 +16155,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"bBU" = ( +/obj/structure/sign/safety/security{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "bBY" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer{ @@ -17273,6 +16213,10 @@ icon_state = "redfull" }, /area/almayer/hallways/port_hallway) +"bCk" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "bCl" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -17315,6 +16259,18 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"bCv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "bCx" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -17363,16 +16319,10 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/port_hallway) -"bCF" = ( /obj/structure/disposalpipe/junction{ dir = 2; icon_state = "pipe-j2" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) "bCG" = ( @@ -17382,10 +16332,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/cryo_cells) -"bCH" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull) "bCM" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -17407,12 +16353,12 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"bCQ" = ( -/obj/structure/machinery/light/small, +"bCR" = ( +/obj/structure/largecrate/random/case, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_a_p) "bCS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -17446,20 +16392,6 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) -"bDe" = ( -/obj/structure/surface/table/almayer, -/obj/item/circuitboard{ - pixel_x = 12; - pixel_y = 7 - }, -/obj/item/tool/crowbar{ - pixel_x = 6; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "bDn" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/closed/wall/almayer, @@ -17697,12 +16629,6 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) -"bEo" = ( -/obj/structure/bed/sofa/south/grey/right{ - pixel_y = 12 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "bEp" = ( /obj/structure/filingcabinet, /obj/structure/sign/safety/galley{ @@ -17730,18 +16656,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"bEt" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/sign/safety/commline_connection{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/squads/req) "bEv" = ( /turf/open/floor/almayer{ dir = 1; @@ -17947,7 +16861,7 @@ }, /area/almayer/squads/bravo) "bET" = ( -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -17960,10 +16874,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bFb" = ( -/obj/structure/foamed_metal, -/turf/open/floor/plating, -/area/almayer/medical/lower_medical_medbay) "bFj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -17979,6 +16889,21 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/weapon_room) +"bFl" = ( +/obj/structure/surface/table/almayer, +/obj/item/pizzabox/meat, +/obj/item/reagent_container/food/drinks/cans/souto/diet/peach{ + pixel_x = -4; + pixel_y = -3 + }, +/obj/item/reagent_container/food/drinks/cans/souto/diet/cherry{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "bFp" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -18163,12 +17088,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"bGr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "bGu" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light{ @@ -18345,17 +17264,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"bHg" = ( +/obj/structure/bed, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/lower_medical_medbay) "bHk" = ( /turf/open/floor/almayer/research/containment/floor2{ dir = 1 }, /area/almayer/medical/containment/cell/cl) -"bHm" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "bHp" = ( /obj/structure/disposalpipe/trunk{ dir = 2 @@ -18525,19 +17445,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"bIi" = ( -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "bIl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) "bIn" = ( @@ -18653,10 +17568,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/hydroponics) -"bIN" = ( -/obj/structure/bed/chair/office/dark, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "bIR" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -18690,13 +17601,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"bIX" = ( -/obj/structure/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/port_hallway) "bJb" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/simple/hidden/supply, @@ -19012,11 +17916,23 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) +"bKJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/cryo_cells) "bKM" = ( /obj/effect/landmark/start/marine/medic/charlie, /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"bKP" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "bKQ" = ( /obj/structure/bed/chair{ dir = 8 @@ -19031,18 +17947,27 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"bLb" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +"bLc" = ( +/obj/structure/surface/rack, +/obj/item/roller, +/obj/item/roller, +/obj/structure/machinery/light{ dir = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" +/obj/item/clothing/glasses/disco_fever{ + pixel_x = 5; + pixel_y = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) +"bLf" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "bLh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -19267,15 +18192,6 @@ /obj/item/tool/pen, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"bLS" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "bLT" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -19384,6 +18300,16 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"bME" = ( +/obj/structure/surface/rack, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "bMJ" = ( /obj/structure/machinery/light, /obj/structure/machinery/portable_atmospherics/canister/oxygen, @@ -19456,21 +18382,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"bMY" = ( -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) "bNa" = ( /obj/structure/surface/table/almayer, /obj/item/folder/black, @@ -19485,6 +18396,12 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) +"bNc" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/maint/hull/upper/u_a_s) "bNe" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -19709,15 +18626,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"bNT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "bNW" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -19728,12 +18636,6 @@ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) -"bNX" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/starboard_hallway) "bOe" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -20113,36 +19015,6 @@ icon_state = "logo_c" }, /area/almayer/living/briefing) -"bPS" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPT" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPU" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPV" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"bPW" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bQc" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1 @@ -20361,26 +19233,6 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) -"bRF" = ( -/obj/structure/machinery/light/small, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"bRK" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "bRP" = ( /obj/structure/machinery/body_scanconsole, /obj/structure/disposalpipe/segment{ @@ -20702,10 +19554,6 @@ "bTH" = ( /turf/open/floor/almayer, /area/almayer/living/tankerbunks) -"bTI" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "bTJ" = ( /obj/structure/machinery/vending/cigarette{ density = 0; @@ -20737,12 +19585,6 @@ "bTO" = ( /turf/open/floor/almayer, /area/almayer/shipboard/port_point_defense) -"bTQ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "bTR" = ( /obj/structure/machinery/light{ dir = 1 @@ -20800,6 +19642,12 @@ icon_state = "plate" }, /area/almayer/living/tankerbunks) +"bTW" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "bUa" = ( /obj/structure/closet, /turf/open/floor/almayer{ @@ -20818,16 +19666,6 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) -"bUc" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Secretroom"; - indestructible = 1; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "bUd" = ( /turf/open/floor/almayer{ dir = 4; @@ -20947,6 +19785,7 @@ /area/almayer/squads/req) "bUz" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -20962,12 +19801,18 @@ icon_state = "bluecorner" }, /area/almayer/hallways/port_hallway) -"bUG" = ( -/obj/structure/disposalpipe/segment, +"bUH" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/lower/l_m_p) "bUM" = ( /turf/open/floor/almayer{ dir = 8; @@ -20988,16 +19833,11 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"bUP" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +"bUQ" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_f_p) "bUT" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 26 @@ -21031,15 +19871,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) -"bVi" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "bVn" = ( /obj/structure/machinery/light{ dir = 8 @@ -21064,6 +19895,14 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"bVr" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "bVs" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -21099,31 +19938,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) -"bVF" = ( -/obj/structure/surface/rack, -/obj/item/roller, -/obj/item/roller, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/item/clothing/glasses/disco_fever{ - pixel_x = 5; - pixel_y = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"bVL" = ( -/obj/structure/surface/rack, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "bVM" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, @@ -21134,37 +19948,9 @@ icon_state = "plate" }, /area/almayer/engineering/lower/engine_core) -"bVR" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"bVT" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -19; - pixel_y = -6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = -19; - pixel_y = 6 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "bVU" = ( /turf/closed/wall/almayer/outer, /area/almayer/shipboard/port_point_defense) -"bWb" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "bWc" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -21201,6 +19987,12 @@ icon_state = "plate" }, /area/almayer/living/starboard_garden) +"bWg" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "bWh" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -21258,10 +20050,6 @@ /obj/structure/window/reinforced/tinted/frosted, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/auxiliary_officer_office) -"bWK" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_s) "bWL" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -21317,6 +20105,14 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"bXh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "bXo" = ( /obj/structure/ladder{ height = 1; @@ -21396,19 +20192,6 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) -"bYg" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/tool/shovel/spade{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bYh" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -21416,14 +20199,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"bYi" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "bYn" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/port) @@ -21490,6 +20265,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower) +"bYW" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/panic) "bYY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -21531,13 +20309,18 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"bZg" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +"bZf" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = -16; + pixel_y = 17 }, -/obj/structure/machinery/light, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "bZi" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -21580,16 +20363,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"bZH" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_f_p) "bZJ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/effect/landmark/map_item, @@ -21717,6 +20490,19 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"cap" = ( +/obj/structure/surface/rack, +/obj/item/tool/wirecutters, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"caq" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "car" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -21801,15 +20587,6 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) -"caE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) "caM" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -21863,6 +20640,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) +"cbc" = ( +/obj/structure/platform_decoration, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "cbg" = ( /obj/structure/machinery/door/airlock/almayer/command{ dir = 2; @@ -21901,11 +20689,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"cbo" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "cbr" = ( /turf/open/floor/almayer{ dir = 4; @@ -21944,19 +20727,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"cbA" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cbD" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -22055,21 +20825,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"cbZ" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/item/storage/firstaid{ - pixel_x = -13; - pixel_y = 13 - }, -/obj/item/clipboard, -/obj/item/paper, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "ccb" = ( /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer{ @@ -22396,23 +21151,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"cdZ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/port_hallway) -"cea" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "ceg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -22510,6 +21248,12 @@ icon_state = "cargo_arrow" }, /area/almayer/hallways/repair_bay) +"ceY" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "ceZ" = ( /obj/structure/bed/sofa/south/grey/left, /turf/open/floor/almayer{ @@ -22527,6 +21271,24 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"cfm" = ( +/obj/structure/flora/pottedplant{ + desc = "Life is underwhelming, especially when you're a potted plant."; + icon_state = "pottedplant_22"; + name = "Jerry"; + pixel_y = 8 + }, +/obj/item/clothing/glasses/sunglasses/prescription{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "cfo" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) @@ -22734,6 +21496,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"cgU" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "chb" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/maint{ @@ -22810,10 +21582,6 @@ /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"chC" = ( -/obj/structure/platform_decoration, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "chE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -22989,16 +21757,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"cit" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/tool/pen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "ciu" = ( /obj/structure/platform{ dir = 8 @@ -23034,6 +21792,21 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"ciB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = 16; + pixel_y = -15 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "ciD" = ( /obj/structure/platform_decoration{ dir = 1 @@ -23110,10 +21883,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"cjh" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "cji" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ @@ -23184,17 +21953,6 @@ icon_state = "red" }, /area/almayer/hallways/port_hallway) -"cjz" = ( -/obj/structure/bed/chair/bolted{ - dir = 1 - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/perma) "cjA" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -23311,6 +22069,25 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"cke" = ( +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"ckj" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/nanopaste{ + pixel_x = -3; + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "ckl" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -23341,16 +22118,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"ckB" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1; - name = "\improper Emergency Air Storage" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_a_s) "ckI" = ( /obj/structure/disposalpipe/segment, /obj/item/device/radio/intercom{ @@ -23679,29 +22446,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"clO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"clP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "clR" = ( /turf/open/floor/almayer{ dir = 4; @@ -23729,7 +22473,6 @@ /area/almayer/squads/delta) "clV" = ( /obj/structure/machinery/computer/arcade, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 9; icon_state = "green" @@ -23776,6 +22519,17 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"cme" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "cmg" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -23800,10 +22554,6 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"cmk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "cml" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -23844,10 +22594,9 @@ icon_state = "green" }, /area/almayer/squads/req) -"cmq" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"cmr" = ( +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "cmv" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_x = -30 @@ -23871,10 +22620,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"cmE" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_s) "cmF" = ( /obj/structure/platform, /obj/structure/platform{ @@ -23940,10 +22685,18 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"cmX" = ( -/obj/docking_port/stationary/escape_pod/west, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_p) +"cmN" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"cmV" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "cna" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -24090,6 +22843,14 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"cnP" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "cnR" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -24132,12 +22893,6 @@ icon_state = "test_floor4" }, /area/almayer/command/computerlab) -"cnU" = ( -/obj/structure/machinery/vending/hydronutrients, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cnV" = ( /obj/structure/machinery/light{ dir = 8 @@ -24153,18 +22908,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/morgue) -"cnX" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"cnY" = ( -/obj/item/tool/wirecutters/clippers, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cnZ" = ( /obj/item/tool/surgery/hemostat, /obj/item/tool/surgery/scalpel, @@ -24209,10 +22952,20 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"com" = ( -/obj/structure/largecrate/supply/weapons/pistols, +"coo" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = -32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/lower/l_f_s) "cop" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/tankerbunks) @@ -24246,12 +22999,6 @@ }, /turf/open/floor/carpet, /area/almayer/living/commandbunks) -"coG" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "coH" = ( /obj/structure/platform_decoration{ dir = 1 @@ -24285,16 +23032,6 @@ dir = 4 }, /area/almayer/medical/containment/cell) -"cpf" = ( -/obj/structure/ladder{ - height = 2; - id = "ForeStarboardMaint" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = -17 - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_f_s) "cpj" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper, @@ -24328,6 +23065,12 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) +"cpz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "cpJ" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -24349,6 +23092,13 @@ /obj/structure/window/framed/almayer/hull/hijack_bustable, /turf/open/floor/plating, /area/almayer/squads/req) +"cpQ" = ( +/obj/structure/sign/safety/autoopenclose{ + pixel_x = 7; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "cqa" = ( /turf/open/floor/almayer{ dir = 10; @@ -24368,11 +23118,23 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"cqp" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "cqz" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"cqH" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_m_s) "cqJ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -24404,12 +23166,6 @@ /obj/item/storage/fancy/cigar/tarbacktube, /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"crc" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "cre" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -24428,6 +23184,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"cri" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "crp" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/secure_data{ @@ -24439,24 +23204,22 @@ }, /area/almayer/shipboard/brig/chief_mp_office) "crD" = ( -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 1; icon_state = "greencorner" }, /area/almayer/squads/req) -"crP" = ( -/obj/item/tool/kitchen/utensil/pfork, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "crW" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"csd" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "csl" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer{ @@ -24464,11 +23227,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"csz" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "csI" = ( /turf/open/floor/almayer{ dir = 8; @@ -24500,6 +23258,19 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) +"cth" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"ctp" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = 16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "cts" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -24599,18 +23370,33 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) +"cva" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Armourer's Workshop"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "cvb" = ( +/obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/squads/req) +"cvi" = ( +/obj/structure/machinery/vending/hydroseeds, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"cvx" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/lower/cryo_cells) "cvH" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -24691,11 +23477,6 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"cxo" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "cxA" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -24709,22 +23490,24 @@ icon_state = "green" }, /area/almayer/squads/req) -"cyy" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"cyp" = ( +/obj/structure/machinery/conveyor{ + id = "lower_garbage" }, +/obj/structure/plasticflaps, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "plating_striped" }, -/area/almayer/hull/lower_hull/stern) -"cyE" = ( -/obj/structure/platform_decoration{ - dir = 8 +/area/almayer/maint/hull/lower/l_a_p) +"cyv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_f_p) "cyG" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -24732,6 +23515,21 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) +"cyL" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/toolbox, +/obj/item/storage/firstaid/o2, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) +"cyR" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "cyU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -24746,17 +23544,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"czu" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_m_p) -"czJ" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "czM" = ( /obj/structure/sign/safety/intercom{ pixel_x = 8; @@ -24781,6 +23568,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) +"cAz" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "cAF" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -24793,11 +23589,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"cAH" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "cBb" = ( /obj/structure/machinery/light{ dir = 1 @@ -24814,16 +23605,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) -"cBi" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "cBj" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -24894,15 +23675,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"cBB" = ( -/obj/structure/surface/rack, -/obj/item/tool/wirecutters, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "cBI" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -24981,15 +23753,22 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"cDe" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/sign/safety/storage{ - pixel_x = -17 +"cCL" = ( +/obj/effect/landmark/crap_item, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"cDb" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null + }, +/obj/item/clothing/mask/rebreather/scarf/tacticalmask/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/p_bow) "cDn" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/glass{ @@ -25017,6 +23796,15 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) +"cDx" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_p) "cDC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25043,13 +23831,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/lobby) -"cDW" = ( -/obj/structure/largecrate/supply/supplies/flares, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "cDZ" = ( /obj/structure/surface/table/almayer, /obj/item/paper, @@ -25057,16 +23838,6 @@ icon_state = "plate" }, /area/almayer/living/tankerbunks) -"cEg" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - pixel_x = 5; - pixel_y = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "cEi" = ( /obj/structure/sign/poster, /turf/closed/wall/almayer, @@ -25087,6 +23858,21 @@ icon_state = "plating" }, /area/almayer/command/cic) +"cEA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "cEC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25109,25 +23895,12 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) -"cEO" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "cES" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 }, /turf/open/floor/almayer, /area/almayer/hallways/stern_hallway) -"cEY" = ( -/obj/structure/largecrate/supply/ammo/m41a/half, -/obj/structure/largecrate/supply/ammo/pistol/half{ - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "cFh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -25147,13 +23920,6 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"cFA" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "cFC" = ( /obj/structure/machinery/light{ dir = 1 @@ -25172,6 +23938,9 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"cGd" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_s) "cGe" = ( /obj/structure/surface/table/almayer, /obj/item/fuelCell, @@ -25180,22 +23949,44 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) +"cGp" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + pixel_y = 0 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) "cGr" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/aft_hallway) -"cGI" = ( -/obj/structure/largecrate/random/case/double, +"cGA" = ( +/obj/structure/sign/poster{ + pixel_y = -32 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"cGB" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "orange" }, -/area/almayer/hull/lower_hull/stern) +/area/almayer/maint/hull/lower/l_m_s) +"cGR" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "cGV" = ( /turf/open/floor/almayer{ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"cGY" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "cHc" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/ladder{ @@ -25218,10 +24009,12 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"cHq" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +"cHn" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "cHu" = ( /turf/closed/wall/almayer/research/containment/wall/south, /area/almayer/medical/containment/cell/cl) @@ -25245,15 +24038,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) -"cHP" = ( -/obj/structure/machinery/light/small, -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "cIe" = ( /obj/structure/machinery/light{ dir = 4 @@ -25261,20 +24045,6 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"cIi" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "cIr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25296,15 +24066,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"cIU" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "cIW" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ name = "\improper Engineering Engine Monitoring" @@ -25322,6 +24083,17 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) +"cJm" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "cJu" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -25334,12 +24106,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"cJB" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "cJE" = ( /obj/structure/sign/prop2, /turf/closed/wall/almayer, @@ -25386,24 +24152,24 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) -"cJP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"cKm" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = -8 }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_y = 12 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/clothing/head/militia/bucket{ + pixel_x = 5; + pixel_y = -5 }, -/area/almayer/hull/lower_hull/l_a_p) -"cKt" = ( -/obj/structure/bed/sofa/south/grey/left, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/reagent_container/spray/cleaner{ + pixel_x = 8; + pixel_y = -1 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "cKL" = ( /turf/open/floor/almayer{ dir = 8; @@ -25470,12 +24236,6 @@ icon_state = "cargo" }, /area/almayer/living/bridgebunks) -"cLV" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "cMb" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm{ @@ -25527,21 +24287,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) -"cNc" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"cNe" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "cNf" = ( /turf/open/floor/almayer{ icon_state = "orange" @@ -25594,12 +24339,26 @@ }, /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) -"cOi" = ( -/obj/effect/landmark/yautja_teleport, +"cOh" = ( +/obj/item/stool{ + pixel_x = 15; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"cOo" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_p) +"cOt" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "cOK" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -25620,6 +24379,57 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"cOY" = ( +/obj/item/clothing/under/blackskirt{ + desc = "A stylish skirt, in a business-black and red colour scheme."; + name = "liaison's skirt" + }, +/obj/item/clothing/under/suit_jacket/charcoal{ + desc = "A professional black suit and blue tie. A combination popular among government agents and corporate Yes-Men alike."; + name = "liaison's black suit" + }, +/obj/item/clothing/under/suit_jacket/navy{ + desc = "A navy suit and red tie, intended for the Almayer's finest. And accountants."; + name = "liaison's navy suit" + }, +/obj/item/clothing/under/suit_jacket/trainee, +/obj/item/clothing/under/liaison_suit/charcoal, +/obj/item/clothing/under/liaison_suit/blazer, +/obj/item/clothing/suit/storage/snow_suit/liaison, +/obj/item/clothing/gloves/black, +/obj/item/clothing/gloves/marine/dress, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/accessory/blue, +/obj/item/clothing/accessory/red, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/obj/item/clothing/accessory/black, +/obj/item/clothing/accessory/green, +/obj/item/clothing/accessory/gold, +/obj/item/clothing/accessory/purple, +/obj/item/clothing/under/liaison_suit/corporate_formal, +/obj/item/clothing/under/liaison_suit/field, +/obj/item/clothing/under/liaison_suit/ivy, +/obj/item/clothing/under/liaison_suit/blue, +/obj/item/clothing/under/liaison_suit/brown, +/obj/item/clothing/under/liaison_suit/black, +/obj/item/clothing/suit/storage/jacket/marine/vest, +/obj/item/clothing/suit/storage/jacket/marine/vest/grey, +/obj/item/clothing/suit/storage/jacket/marine/vest/tan, +/obj/item/clothing/suit/storage/jacket/marine/bomber, +/obj/item/clothing/suit/storage/jacket/marine/bomber/red, +/obj/item/clothing/suit/storage/jacket/marine/bomber/grey, +/obj/item/clothing/suit/storage/jacket/marine/corporate, +/obj/item/clothing/suit/storage/jacket/marine/corporate/black, +/obj/item/clothing/suit/storage/jacket/marine/corporate/blue, +/obj/item/clothing/suit/storage/jacket/marine/corporate/brown, +/obj/item/clothing/suit/storage/jacket/marine/corporate/formal, +/obj/structure/closet/cabinet{ + storage_capacity = 35 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "cPg" = ( /obj/structure/sign/safety/north{ pixel_x = 32; @@ -25634,6 +24444,10 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"cPj" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/p_bow) "cPK" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -25646,6 +24460,23 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"cPP" = ( +/obj/structure/sign/poster/pinup{ + pixel_x = -30 + }, +/obj/structure/sign/poster/hunk{ + pixel_x = -25; + pixel_y = 10 + }, +/obj/item/trash/buritto, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "cQc" = ( /turf/open/floor/almayer{ dir = 1; @@ -25677,12 +24508,6 @@ "cQv" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/general_equipment) -"cQF" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_f_s) "cQL" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -25690,15 +24515,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/lobby) -"cQN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "cQW" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -25723,15 +24539,6 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"cRc" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "cRi" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -25792,16 +24599,6 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"cSK" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/largecrate/supply/supplies/flares, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "cSQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25835,14 +24632,29 @@ icon_state = "green" }, /area/almayer/living/offices) -"cUv" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"cTM" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/light/small{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" + }, +/area/almayer/maint/upper/mess) +"cTX" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) +"cUl" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/s_bow) "cVb" = ( /obj/structure/machinery/sentry_holder/almayer, /turf/open/floor/almayer{ @@ -25855,14 +24667,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/corporateliaison) -"cVs" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "cVw" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -25883,6 +24687,37 @@ icon_state = "plate" }, /area/almayer/living/gym) +"cWb" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"cWm" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv/empty, +/obj/item/storage/firstaid/adv/empty, +/obj/item/storage/firstaid/adv/empty, +/obj/structure/sign/safety/med_life_support{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) +"cWo" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) "cWr" = ( /obj/structure/machinery/photocopier{ density = 0; @@ -25950,10 +24785,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"cWA" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "cWE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -25964,16 +24795,17 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"cWI" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"cXd" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil, +/obj/item/attachable/flashlight/grip, +/obj/item/ammo_box/magazine/l42a{ + pixel_y = 14 }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_m_s) "cXi" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -25989,12 +24821,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"cXq" = ( -/obj/structure/largecrate/supply/supplies/water, +"cXm" = ( +/obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_m_s) "cXC" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -26033,18 +24865,27 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"cXX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "cXY" = ( /obj/item/stack/catwalk, /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"cXZ" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 +"cYo" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "cYu" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -26077,6 +24918,9 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) +"cZe" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_f_s) "cZh" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -26107,6 +24951,29 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"cZp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"cZI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"cZO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "cZV" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/fancy/cigarettes/wypacket, @@ -26159,6 +25026,12 @@ "daz" = ( /turf/closed/wall/almayer/white/hull, /area/almayer/command/airoom) +"daF" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "dbc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -26241,6 +25114,12 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"dbX" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "dcd" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -26274,23 +25153,16 @@ icon_state = "red" }, /area/almayer/shipboard/brig/perma) -"dcS" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"dcT" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"dcZ" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_p) "ddf" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/almayer{ @@ -26318,6 +25190,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room) +"ddF" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "ddM" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall/almayer, @@ -26330,6 +25212,23 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"deq" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"deA" = ( +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_x = -1; + pixel_y = 13 + }, +/obj/structure/sign/safety/water{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "deD" = ( /obj/structure/machinery/prop/almayer/CICmap{ pixel_x = -5 @@ -26337,6 +25236,10 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer, /area/almayer/command/cic) +"deF" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "deH" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -26434,17 +25337,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"dgq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "dgx" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_18"; @@ -26456,17 +25348,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) -"dgN" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/etool{ - pixel_x = 6 - }, -/obj/item/tool/shovel/etool, -/obj/item/tool/wirecutters, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "dha" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -26497,6 +25378,15 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"dhp" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "dhR" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -26589,9 +25479,6 @@ }, /area/almayer/medical/operating_room_four) "dkj" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/surface/table/almayer, /obj/item/device/radio/intercom/alamo{ layer = 2.9 @@ -26617,6 +25504,36 @@ icon_state = "red" }, /area/almayer/living/briefing) +"dkt" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = -3 + }, +/obj/structure/noticeboard{ + desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "dkO" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down2"; @@ -26646,13 +25563,6 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) -"dlp" = ( -/obj/structure/largecrate/supply/supplies/water, -/obj/item/toy/deck{ - pixel_y = 12 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "dmg" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -26681,11 +25591,17 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"dmQ" = ( +"dmF" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 8; + icon_state = "green" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/squads/req) "dmR" = ( /obj/effect/glowshroom, /obj/effect/glowshroom{ @@ -26723,17 +25639,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) -"dnk" = ( -/obj/structure/largecrate/supply/generator, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - layer = 2.9; - pixel_x = -10; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "dnm" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/intelligence_officer, /obj/structure/machinery/light{ @@ -26774,12 +25679,19 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"dnX" = ( -/obj/structure/disposalpipe/segment{ +"dnZ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer{ + dir = 4; + icon_state = "plating_striped" + }, +/area/almayer/maint/hull/lower/l_a_p) "dod" = ( /obj/structure/closet/crate/trashcart, /turf/open/floor/almayer, @@ -26849,17 +25761,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"dpy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "dpO" = ( /obj/structure/machinery/cm_vending/clothing/marine/delta{ density = 0; @@ -26876,10 +25777,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"dqd" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "dqg" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/almayer{ @@ -26918,20 +25815,6 @@ icon_state = "test_floor4" }, /area/almayer/living/offices) -"dqH" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/sheet/glass{ - amount = 20; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/weapon/dart, -/obj/item/weapon/dart, -/obj/item/weapon/dart, -/obj/item/weapon/dart/green, -/obj/item/weapon/dart/green, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "dqN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -26962,15 +25845,16 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) -"drt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, +"dro" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/bomb_supply, +/obj/effect/spawner/random/bomb_supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hallways/port_hallway) +/area/almayer/maint/hull/lower/l_m_s) "drT" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -27003,13 +25887,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"dsu" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "dsA" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ @@ -27160,6 +26037,20 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) +"dvD" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"dvZ" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) "dwl" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -27206,15 +26097,6 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) -"dxC" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "dxF" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down1"; @@ -27339,12 +26221,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/general_equipment) -"dAb" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" +"dzX" = ( +/obj/structure/sign/safety/water{ + pixel_x = -17 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "dAq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -27357,6 +26239,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) +"dAA" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "dAQ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -27476,22 +26364,6 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cells) -"dCh" = ( -/obj/structure/prop/invuln/pipe_water, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "dCr" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -27499,14 +26371,6 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"dCt" = ( -/obj/structure/surface/rack, -/obj/item/book/manual/orbital_cannon_manual, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "dCx" = ( /obj/structure/disposalpipe/segment, /obj/structure/flora/pottedplant{ @@ -27521,6 +26385,13 @@ icon_state = "plate" }, /area/almayer/command/cichallway) +"dCz" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wrench{ + pixel_y = 2 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "dCD" = ( /obj/structure/sign/nosmoking_2{ pixel_x = 32 @@ -27538,19 +26409,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"dCP" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/storage/box/lights/tubes{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/ash{ - pixel_y = 19 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "dDp" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -27574,15 +26432,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"dDC" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, +"dDJ" = ( +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/stern) "dDL" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/research/main_terminal{ @@ -27609,6 +26464,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) +"dDT" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "dEm" = ( /obj/structure/machinery/power/apc/almayer, /obj/effect/decal/warning_stripes{ @@ -27630,6 +26491,9 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"dEp" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/cryo_cells) "dEt" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -27673,13 +26537,6 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"dEV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/light, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "dEX" = ( /obj/structure/closet/secure_closet/guncabinet/riot_control, /obj/item/weapon/shield/riot, @@ -27702,6 +26559,15 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) +"dFL" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "dFR" = ( /turf/open/floor/almayer{ dir = 9; @@ -27714,20 +26580,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) -"dFV" = ( +"dFW" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/cell_charger, /obj/item/cell/apc, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"dGc" = ( -/obj/effect/decal/cleanable/dirt, +/area/almayer/maint/hull/lower/l_f_p) +"dGg" = ( +/obj/structure/bed/chair{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_m_s) "dGl" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_AresUp"; @@ -27754,13 +26622,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"dGz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "dGC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -27772,6 +26633,19 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"dGP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 1; + req_access = null; + req_one_access = null; + req_one_access_txt = "3;22;19" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_s) "dGU" = ( /obj/structure/sign/poster/propaganda{ pixel_x = -27 @@ -27801,12 +26675,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"dHk" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "dHu" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -27845,13 +26713,6 @@ allow_construction = 0 }, /area/almayer/command/airoom) -"dIl" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "dIn" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 5 @@ -27891,16 +26752,24 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) -"dIR" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, +"dJe" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/stack/sheet/mineral/phoron/medium_stack, +/obj/item/stack/sheet/mineral/phoron/medium_stack{ + pixel_y = 10 + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"dJy" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/p_bow) "dJI" = ( /obj/structure/bed/chair/comfy/bravo{ dir = 4 @@ -27913,12 +26782,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"dKa" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_s) "dKc" = ( /obj/structure/machinery/power/fusion_engine{ name = "\improper S-52 fusion reactor 9" @@ -27972,6 +26835,27 @@ "dKL" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/airmix) +"dKO" = ( +/obj/structure/machinery/door_control{ + id = "panicroomback"; + name = "\improper Safe Room"; + pixel_x = 25; + req_one_access_txt = "3" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"dKS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "dLc" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -28046,13 +26930,6 @@ dir = 8 }, /area/almayer/medical/containment/cell) -"dNe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "dNq" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -28075,12 +26952,6 @@ }, /turf/open/floor/plating, /area/almayer/living/cryo_cells) -"dNB" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "dNM" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/tabasco{ @@ -28122,6 +26993,22 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) +"dPd" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + pixel_x = 5; + pixel_y = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"dPl" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "dPm" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28130,6 +27017,14 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"dPq" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/sheet/cardboard{ + amount = 50; + pixel_x = 4 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "dPC" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -28145,6 +27040,12 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) +"dPO" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "dPQ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, @@ -28162,12 +27063,6 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"dPU" = ( -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "dQl" = ( /obj/structure/platform{ dir = 4 @@ -28230,22 +27125,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/lower) -"dQE" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) -"dQH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "dRh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28321,13 +27200,18 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"dRV" = ( -/obj/effect/landmark/crap_item, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"dSm" = ( +/obj/structure/sign/safety/airlock{ + pixel_y = -32 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "dSp" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -28338,10 +27222,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"dSA" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "dSJ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -28377,30 +27257,12 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower/workshop) -"dTt" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "dTI" = ( /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"dTQ" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "dTS" = ( /obj/structure/machinery/fuelcell_recycler, /turf/open/floor/almayer{ @@ -28419,21 +27281,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"dUF" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"dUI" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Port Viewing Room" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "dUS" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -28461,18 +27308,6 @@ icon_state = "blue" }, /area/almayer/living/briefing) -"dVm" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Port Railguns and Viewing Room" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "dVn" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -28504,6 +27339,21 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"dVH" = ( +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "dVO" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -28513,26 +27363,59 @@ icon_state = "plate" }, /area/almayer/living/offices) +"dVR" = ( +/obj/structure/ladder{ + height = 2; + id = "AftPortMaint" + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/u_a_p) +"dWc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "dWg" = ( /obj/effect/landmark/start/cargo, /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"dWm" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/o2, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/technology_scanner, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "dWw" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "bluecorner" }, /area/almayer/living/basketball) +"dWA" = ( +/obj/structure/sign/poster{ + pixel_y = 32 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"dWJ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "dWX" = ( /obj/structure/machinery/light{ dir = 8 @@ -28541,6 +27424,12 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"dXb" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "dXd" = ( /obj/item/storage/fancy/cigarettes/kpack, /obj/structure/surface/rack, @@ -28576,6 +27465,14 @@ icon_state = "plate" }, /area/almayer/squads/req) +"dXH" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/device/camera_film{ + pixel_x = 4; + pixel_y = -2 + }, +/turf/open/floor/almayer, +/area/almayer/squads/charlie_delta_shared) "dXI" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "\improper Exterior Airlock"; @@ -28585,17 +27482,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/stern_point_defense) -"dXO" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -19; - pixel_y = -6 - }, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = -19; - pixel_y = 6 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "dXV" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 16 @@ -28615,12 +27501,12 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"dYh" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +"dYc" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "dYu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -28638,22 +27524,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower) -"dYK" = ( -/obj/item/folder/red{ - desc = "A red folder. The previous contents are a mystery, though the number 28 has been written on the inside of each flap numerous times. Smells faintly of cough syrup."; - name = "folder: 28"; - pixel_x = -4; - pixel_y = 5 - }, -/obj/structure/surface/table/almayer, -/obj/item/toy/crayon{ - pixel_x = 9; - pixel_y = -2 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "dYR" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/reagentgrinder{ @@ -28661,6 +27531,30 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"dYU" = ( +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/cobweb{ + dir = 8; + plane = -6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/item/reagent_container/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) "dYX" = ( /obj/structure/machinery/door/airlock/almayer/marine/bravo{ dir = 1 @@ -28697,6 +27591,14 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) +"dZZ" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "eaf" = ( /obj/structure/machinery/cm_vending/clothing/military_police{ density = 0; @@ -28727,6 +27629,12 @@ dir = 4 }, /area/almayer/medical/containment/cell) +"ear" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "eas" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28743,10 +27651,33 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"eaz" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "ebd" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"ebf" = ( +/obj/structure/closet/crate/freezer{ + desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." + }, +/obj/item/storage/beer_pack, +/obj/item/reagent_container/food/drinks/cans/beer, +/obj/item/reagent_container/food/drinks/cans/beer, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "ebn" = ( /obj/structure/sign/safety/airlock{ pixel_x = 15; @@ -28793,34 +27724,29 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) -"ebD" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) +"ebI" = ( +/obj/item/clothing/shoes/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "ebN" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/command/airoom) -"ebO" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" +"ecb" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"ecj" = ( +/obj/structure/largecrate/supply/supplies/mre, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/lower_hull/l_a_p) -"ebY" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_m_p) "eco" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17; @@ -28834,16 +27760,6 @@ "ecr" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/captain_mess) -"ecM" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"ecP" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "ecR" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -28857,6 +27773,15 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"ecS" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "ecZ" = ( /obj/structure/ladder{ height = 1; @@ -28866,20 +27791,6 @@ icon_state = "plate" }, /area/almayer/shipboard/navigation) -"edn" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/sign/poster{ - desc = "Koorlander Golds, lovingly machine rolled for YOUR pleasure."; - icon_state = "poster10"; - name = "Koorlander Gold Poster"; - pixel_x = 29; - pixel_y = 6; - serial_number = 10 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliaison) "edo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -28892,6 +27803,16 @@ icon_state = "sterile_green" }, /area/almayer/medical/medical_science) +"edG" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"edV" = ( +/obj/structure/machinery/power/terminal, +/turf/open/floor/almayer, +/area/almayer/maint/upper/mess) "eed" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -28929,18 +27850,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"eep" = ( -/obj/structure/sign/safety/airlock{ - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "eet" = ( /obj/structure/machinery/power/terminal{ dir = 1 @@ -28965,6 +27874,28 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"eeA" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"eeC" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"eeR" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "efj" = ( /turf/open/floor/almayer{ dir = 4; @@ -28980,6 +27911,11 @@ icon_state = "plate" }, /area/almayer/engineering/lower) +"efJ" = ( +/obj/item/tool/wet_sign, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "efK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28991,6 +27927,20 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"efP" = ( +/obj/structure/surface/table/almayer, +/obj/item/toy/deck{ + pixel_y = 14 + }, +/obj/item/trash/cigbutt/ucigbutt{ + layer = 3.7; + pixel_x = 5; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "efT" = ( /obj/structure/machinery/atm{ pixel_y = 32 @@ -29000,14 +27950,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"efU" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "egc" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29052,23 +27994,27 @@ icon_state = "test_floor4" }, /area/almayer/living/chapel) -"egB" = ( -/obj/structure/platform{ - dir = 1 +"egQ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 }, -/obj/structure/largecrate/random/case, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 }, -/area/almayer/hull/upper_hull/u_a_s) -"egS" = ( -/obj/structure/closet, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/glasses/regular/hipster, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 }, -/area/almayer/hull/upper_hull/u_a_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "ehc" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -29127,6 +28073,14 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/starboard) +"ehM" = ( +/obj/structure/surface/rack, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "ehR" = ( /obj/structure/window/reinforced{ dir = 4; @@ -29223,6 +28177,20 @@ icon_state = "plate" }, /area/almayer/living/gym) +"ejj" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/tool/wrench{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/tool/wrench{ + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "ejo" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -29251,36 +28219,32 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/grunt_rnr) -"ejK" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/clothing/glasses/welding{ - pixel_x = 8; - pixel_y = 3 - }, -/obj/item/tool/weldingtool{ - pixel_x = -11; - pixel_y = 5 - }, +"ejV" = ( +/obj/structure/closet, +/obj/item/device/flashlight/pen, +/obj/item/attachable/reddot, /obj/structure/machinery/light/small{ dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_m_s) "ejY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"eko" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "eky" = ( /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"ekz" = ( +/obj/structure/girder/displaced, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "ekF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -29290,17 +28254,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"ekO" = ( -/obj/structure/machinery/cryopod{ - pixel_y = 6 - }, -/obj/structure/sign/safety/cryo{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_m_p) "ekY" = ( /obj/structure/machinery/door/airlock/almayer/generic/glass{ name = "\improper Memorial Room" @@ -29350,15 +28303,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) -"elM" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "elR" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 1 @@ -29391,18 +28335,12 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) -"emx" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"emG" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +"emA" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_a_s) +"emC" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_f_p) "emK" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -29416,14 +28354,6 @@ icon_state = "silvercorner" }, /area/almayer/command/securestorage) -"enf" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "eni" = ( /obj/structure/machinery/power/monitor{ name = "Main Power Grid Monitoring" @@ -29442,6 +28372,38 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"enQ" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"enY" = ( +/obj/item/storage/firstaid, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"eob" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) +"eox" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) +"eoE" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "eoG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -29449,18 +28411,12 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"eoM" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/beer_pack, -/obj/structure/sign/poster{ - desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; - icon_state = "poster11"; - name = "YOU ALWAYS KNOW A WORKING JOE."; - pixel_x = -27; - serial_number = 11 +"eoK" = ( +/obj/structure/machinery/optable, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/p_stern) "epu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -29472,16 +28428,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/lobby) -"epA" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "epJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -29517,12 +28463,27 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"eqk" = ( -/mob/living/simple_animal/mouse/brown, +"eqd" = ( +/obj/item/stack/folding_barricade/three, +/obj/item/stack/folding_barricade/three, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/shipboard/panic) +"eqm" = ( +/obj/structure/prop/almayer/computers/sensor_computer2, +/obj/structure/machinery/door_control{ + id = "Secretroom"; + indestructible = 1; + layer = 2.5; + name = "Shutters"; + use_power = 0 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) "eqB" = ( /obj/item/bedsheet/brown{ layer = 3.2 @@ -29585,6 +28546,12 @@ dir = 1 }, /area/almayer/medical/containment/cell/cl) +"ere" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "erh" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -29612,6 +28579,14 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) +"erE" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "erF" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/toxin{ @@ -29632,6 +28607,25 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"erL" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/crushed_cup, +/obj/item/reagent_container/food/drinks/cup{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/spacecash/c10{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/ashtray/plastic{ + pixel_x = 5; + pixel_y = -10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "erN" = ( /obj/structure/machinery/light{ dir = 8 @@ -29666,6 +28660,13 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"esm" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "esC" = ( /obj/structure/toilet{ pixel_y = 13 @@ -29751,6 +28752,12 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) +"ety" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "etE" = ( /obj/structure/prop/almayer/name_stencil, /turf/open/floor/almayer_hull{ @@ -29765,6 +28772,10 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"etN" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "eua" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -29779,6 +28790,18 @@ icon_state = "test_floor4" }, /area/almayer/living/officer_study) +"euL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Starboard Railguns and Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) "euN" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -29850,12 +28873,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) -"evl" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "evR" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/mechanical/green{ @@ -29920,28 +28937,17 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"ewT" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "Brig" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"exb" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -16 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "exi" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"ext" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "exy" = ( /obj/structure/machinery/power/monitor{ name = "Main Power Grid Monitoring" @@ -29953,21 +28959,25 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) -"eyd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "eyG" = ( /obj/structure/platform, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"eyI" = ( +/obj/structure/window/framed/almayer, +/obj/structure/curtain/open/shower{ + name = "hypersleep curtain" + }, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) +"eyM" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "eyQ" = ( /obj/structure/machinery/light{ dir = 1 @@ -30051,6 +29061,15 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"eAG" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/regular, +/obj/item/clipboard, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/squads/req) "eAI" = ( /turf/open/floor/almayer{ dir = 8; @@ -30129,6 +29148,18 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"eBG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "eBO" = ( /obj/structure/bed, /turf/open/floor/almayer{ @@ -30213,6 +29244,13 @@ icon_state = "plating" }, /area/almayer/shipboard/brig/execution) +"eDk" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "eDo" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -30223,6 +29261,12 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"eDq" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "eDt" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer_network{ @@ -30239,16 +29283,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"eDz" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "eDG" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -30272,12 +29306,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"eEf" = ( -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "eEk" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -30316,17 +29344,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"eFp" = ( -/obj/structure/surface/rack, -/obj/item/clothing/head/headband/red{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/clothing/glasses/regular/hipster, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "eFG" = ( /obj/structure/machinery/light{ dir = 1 @@ -30338,9 +29355,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"eFH" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "eFK" = ( /obj/structure/bed{ icon_state = "abed" @@ -30469,20 +29483,10 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/surgery) -"eGz" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "eGB" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer, /area/almayer/living/briefing) -"eGF" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "eGH" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -30505,15 +29509,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"eHf" = ( -/obj/structure/machinery/light/small, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "eHx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/faxmachine/uscm/command, @@ -30521,6 +29516,22 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"eHy" = ( +/obj/structure/machinery/conveyor{ + id = "lower_garbage" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "plating_striped" + }, +/area/almayer/maint/hull/lower/l_a_p) +"eHz" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "eHY" = ( /obj/structure/surface/rack, /obj/item/device/taperecorder, @@ -30528,59 +29539,20 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"eIA" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"eIT" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/engineering_particle_accelerator, -/obj/item/folder/yellow, -/obj/structure/machinery/keycard_auth{ - pixel_x = -8; - pixel_y = 25 - }, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 14; - pixel_y = 26 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower/workshop) -"eJd" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, +"eIN" = ( +/obj/item/tool/kitchen/utensil/pfork, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) -"eJg" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) -"eJh" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, +/area/almayer/maint/hull/upper/p_stern) +"eJj" = ( +/obj/structure/closet/crate, +/obj/item/ammo_box/magazine/l42a, +/obj/item/ammo_box/magazine/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "eJQ" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -30597,6 +29569,10 @@ "eJX" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/ce_room) +"eJZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "eKa" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ dir = 2; @@ -30608,13 +29584,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/processing) -"eKg" = ( -/obj/structure/disposalpipe/segment{ - layer = 5.1; - name = "water pipe" - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "eKy" = ( /obj/structure/pipes/standard/simple/visible{ dir = 6 @@ -30626,12 +29595,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower) -"eKD" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_a_s) "eKH" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -30662,22 +29625,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"eKM" = ( -/obj/structure/surface/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"eKO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "eKQ" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -30692,6 +29639,15 @@ icon_state = "green" }, /area/almayer/living/offices) +"eKZ" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Port Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "eLz" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -30700,6 +29656,34 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) +"eLC" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/kitchen/tray, +/obj/item/tool/kitchen/tray{ + pixel_y = 6 + }, +/obj/item/reagent_container/food/snacks/sliceable/bread{ + pixel_y = 8 + }, +/obj/item/tool/kitchen/knife{ + pixel_x = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"eLH" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/beer_pack, +/obj/structure/sign/poster{ + desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; + icon_state = "poster11"; + name = "YOU ALWAYS KNOW A WORKING JOE."; + pixel_x = -27; + serial_number = 11 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "eMh" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Laundry Room" @@ -30708,6 +29692,12 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) +"eMx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "eMJ" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -30741,23 +29731,6 @@ /obj/structure/largecrate/random, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"eNw" = ( -/obj/structure/machinery/atm{ - name = "Weyland-Yutani Automatic Teller Machine"; - pixel_y = 30 - }, -/obj/structure/surface/table/almayer, -/obj/item/spacecash/c1000/counterfeit, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/fancy/cigar, -/turf/open/floor/almayer, -/area/almayer/command/corporateliaison) -"eNx" = ( -/obj/structure/machinery/vending/snack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "eNI" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -30768,14 +29741,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment) -"eNL" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/sheet/cardboard{ - amount = 50; - pixel_x = 4 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "eNR" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -30783,18 +29748,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/processing) -"eOr" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "eOM" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -30815,18 +29768,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"ePk" = ( -/obj/structure/airlock_assembly, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"ePs" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "ePA" = ( /obj/structure/machinery/light{ dir = 1 @@ -30876,14 +29817,40 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) -"eRe" = ( -/obj/structure/bed/chair/comfy/orange{ - dir = 8 +"eQd" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/smg/m39{ + pixel_y = 6 + }, +/obj/item/weapon/gun/smg/m39{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"eQm" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"eQJ" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/sign/poster/ad{ + pixel_x = 30 }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"eQR" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/s_bow) "eRi" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/folder/black{ @@ -30924,6 +29891,14 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"eRG" = ( +/obj/structure/closet, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/glasses/regular/hipster, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "eRL" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) @@ -30975,6 +29950,9 @@ icon_state = "outerhull_dir" }, /area/space) +"eTb" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/stern) "eTd" = ( /obj/structure/surface/table/almayer, /obj/item/trash/boonie{ @@ -30985,6 +29963,14 @@ /obj/effect/landmark/crap_item, /turf/open/floor/almayer, /area/almayer/living/briefing) +"eTD" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "eTO" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -30994,6 +29980,13 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"eUe" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "eUh" = ( /obj/structure/window/reinforced{ dir = 8 @@ -31020,17 +30013,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/chemistry) -"eUz" = ( -/obj/structure/machinery/disposal{ - density = 0; - layer = 3.2; - pixel_y = 16 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/port_hallway) "eUA" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -31130,6 +30112,9 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"eWs" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_f_s) "eWF" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -31138,13 +30123,6 @@ icon_state = "test_floor4" }, /area/almayer/living/basketball) -"eWY" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "eXb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31166,10 +30144,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/airoom) -"eXo" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "eXq" = ( /turf/closed/wall/almayer, /area/almayer/living/offices/flight) @@ -31177,17 +30151,17 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) -"eXS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"eXD" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = 16; + pixel_y = -16 }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 2; - pixel_y = 2 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/lower/l_m_s) "eYj" = ( /obj/structure/machinery/light{ dir = 8 @@ -31203,6 +30177,15 @@ /obj/structure/filingcabinet/security, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) +"eYp" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Tool Closet" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) "eYr" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -31259,15 +30242,6 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) -"eYH" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "eYM" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -31306,6 +30280,9 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) +"eZm" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/p_stern) "eZo" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -31333,27 +30310,12 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"eZz" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "eZH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"eZQ" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "fad" = ( /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ @@ -31398,6 +30360,18 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"faR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = -16; + pixel_y = 17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "faX" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -31430,6 +30404,15 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"fbe" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "fbo" = ( /obj/structure/machinery/door_control{ id = "kitchen2"; @@ -31463,15 +30446,19 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"fbx" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "fbB" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/supply, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/upper_medical) +"fbC" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/maint/hull/lower/l_m_s) "fbH" = ( /obj/structure/surface/table/almayer, /obj/item/fuelCell, @@ -31494,12 +30481,30 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"fca" = ( +/obj/structure/disposalpipe/segment{ + layer = 5.1; + name = "water pipe" + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "fcf" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"fco" = ( +/obj/structure/surface/rack, +/obj/item/device/radio{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/device/radio, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "fcy" = ( /obj/structure/machinery/light{ dir = 8 @@ -31521,18 +30526,6 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) -"fcF" = ( -/obj/structure/surface/rack, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"fcG" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "fcM" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -31569,13 +30562,6 @@ icon_state = "silver" }, /area/almayer/command/airoom) -"fdj" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/pouch/tools/full, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "fdx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31585,13 +30571,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) -"fdA" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "fdE" = ( /obj/item/clothing/mask/rebreather/scarf, /obj/structure/closet/secure_closet/personal/cabinet{ @@ -31613,6 +30592,20 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) +"fea" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "feb" = ( /turf/closed/wall/almayer/outer, /area/almayer/shipboard/brig/execution) @@ -31638,6 +30631,10 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"feG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "feI" = ( /obj/item/trash/cigbutt, /turf/open/floor/almayer, @@ -31666,11 +30663,51 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/perma) +"ffq" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/hardhat{ + pixel_y = 15 + }, +/obj/item/clothing/head/hardhat/dblue{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/item/clothing/head/hardhat{ + pixel_x = 4; + pixel_y = 7 + }, +/obj/item/clothing/head/hardhat/orange{ + pixel_x = 7; + pixel_y = -5 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"ffx" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/item/clothing/head/helmet/marine/tech/tanker, +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "ffE" = ( /turf/open/floor/almayer/no_build{ icon_state = "plating" }, /area/almayer/command/airoom) +"ffN" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "fgh" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -31697,16 +30734,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"fgo" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) -"fgx" = ( -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "fgE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31745,26 +30772,19 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) +"fgU" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "fhf" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) -"fhA" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/surface/rack, -/obj/item/storage/belt/utility/full{ - pixel_y = 8 - }, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/suit/storage/hazardvest/black, -/obj/item/tool/crowbar, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "fhH" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -31777,9 +30797,13 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop) -"fiq" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_p) +"fix" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "fiE" = ( /obj/structure/machinery/computer/cameras/containment/hidden{ dir = 4; @@ -31790,15 +30814,10 @@ /obj/item/device/camera_film, /turf/open/floor/almayer, /area/almayer/command/corporateliaison) -"fiI" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) +"fiN" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "fiQ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31807,11 +30826,23 @@ icon_state = "plate" }, /area/almayer/engineering/lower) -"fjO" = ( -/obj/item/tool/wet_sign, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +"fjz" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) +"fkK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "fkO" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ @@ -31819,40 +30850,19 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"fkW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/surface/table/almayer, -/obj/item/toy/handcard/uno_reverse_red{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/toy/deck/uno, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "fkX" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 8 }, /area/almayer/medical/containment/cell/cl) -"flE" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"flP" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +"flr" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/lower/p_bow) "flW" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/light{ @@ -31885,12 +30895,6 @@ icon_state = "bluecorner" }, /area/almayer/living/pilotbunks) -"fmS" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "fnv" = ( /obj/structure/machinery/light{ dir = 4 @@ -31944,15 +30948,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"fnZ" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_a_s) "foC" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -31999,19 +30994,26 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) -"foR" = ( -/obj/structure/largecrate/random/case, +"foS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) -"fpd" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +/area/almayer/maint/hull/lower/l_a_p) +"fpi" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/stern) "fpA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -32055,6 +31057,21 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"fqb" = ( +/obj/item/paper/prison_station/interrogation_log{ + pixel_x = 10; + pixel_y = 7 + }, +/obj/structure/largecrate/random/barrel/green, +/obj/item/limb/hand/l_hand{ + pixel_x = -5; + pixel_y = 14 + }, +/obj/effect/spawner/random/balaclavas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "fqc" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/machinery/light, @@ -32062,27 +31079,24 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"fqu" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"fqx" = ( -/obj/structure/machinery/light, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "silver" - }, -/area/almayer/hull/upper_hull/u_m_p) "fqC" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) +"fqJ" = ( +/obj/structure/machinery/door_control{ + id = "safe_armory"; + name = "Hangar Armory Lockdown"; + pixel_y = 24; + req_access_txt = "4" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "fqO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -32160,6 +31174,12 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) +"frV" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "frX" = ( /obj/structure/machinery/optable, /obj/structure/sign/safety/medical{ @@ -32171,19 +31191,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/shipboard/brig/surgery) -"frY" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = -6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "fsd" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -32246,12 +31253,20 @@ icon_state = "mono" }, /area/almayer/hallways/vehiclehangar) -"ftl" = ( -/obj/structure/machinery/light/small, +"ftx" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) +"ftG" = ( +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_s) "fut" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -32268,11 +31283,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"fuB" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "fuS" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -32293,20 +31303,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"fuY" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice2"; - pixel_x = 16; - pixel_y = 16 - }, -/obj/structure/largecrate/supply/supplies/flares, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "fva" = ( /obj/structure/machinery/light{ dir = 1 @@ -32335,18 +31331,23 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"fvu" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"fvv" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Port Viewing Room" +"fvo" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/clothing/glasses/welding{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/item/tool/weldingtool{ + pixel_x = -11; + pixel_y = 5 + }, +/obj/structure/machinery/light/small{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_a_p) "fvA" = ( /obj/structure/closet/secure_closet/brig, /turf/open/floor/almayer, @@ -32358,7 +31359,7 @@ }, /area/almayer/command/cic) "fvJ" = ( -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" @@ -32402,25 +31403,19 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"fwP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "fwY" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie_delta_shared) -"fxz" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/effect/landmark/yautja_teleport, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "fxI" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -32442,15 +31437,6 @@ /obj/item/weapon/shield/riot, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"fxO" = ( -/obj/structure/machinery/vending/coffee{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "fxZ" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -32497,9 +31483,24 @@ }, /turf/open/floor/plating/almayer, /area/almayer/living/briefing) -"fza" = ( -/turf/open/floor/almayer, -/area/almayer/hull/lower_hull/l_m_s) +"fyT" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 2; + id = "CIC Lockdown"; + layer = 2.2; + name = "\improper Combat Information Center Blast Door" + }, +/obj/structure/machinery/door/airlock/almayer/engineering/reinforced{ + dir = 1; + name = "\improper Command Power Substation" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) "fzq" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -32512,6 +31513,18 @@ icon_state = "test_floor4" }, /area/almayer/squads/charlie) +"fzx" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "fzP" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -32528,11 +31541,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/ce_room) +"fzT" = ( +/obj/structure/surface/rack, +/obj/item/tool/wirecutters, +/obj/item/tool/shovel/snow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "fAa" = ( /obj/structure/surface/table/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/light{ dir = 1 }, @@ -32551,47 +31569,20 @@ /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"fAt" = ( -/obj/structure/largecrate/guns/merc{ - name = "\improper dodgy crate" - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "fAE" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/shipboard/brig/main_office) -"fAS" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"fBd" = ( +"fBo" = ( /obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) -"fBf" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 + dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_a_s) "fBD" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -32624,6 +31615,13 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"fCi" = ( +/obj/structure/surface/table/almayer, +/obj/item/organ/lungs/prosthetic, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "fCp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -32737,13 +31735,6 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) -"fEV" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "fFe" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -32794,6 +31785,23 @@ icon_state = "plate" }, /area/almayer/medical/morgue) +"fFQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = 7; + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) +"fFU" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "fGa" = ( /obj/structure/surface/rack, /obj/effect/decal/warning_stripes{ @@ -32808,6 +31816,12 @@ /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"fGi" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "fGu" = ( /obj/structure/machinery/door_control{ dir = 1; @@ -32834,34 +31848,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"fGY" = ( -/obj/structure/machinery/door_control{ - id = "panicroomback"; - name = "\improper Safe Room"; - pixel_x = 25; - req_one_access_txt = "3" - }, +"fGB" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"fHc" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/hardhat{ - pixel_x = 10; - pixel_y = 1 - }, -/obj/item/clothing/suit/storage/hazardvest{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/clothing/suit/storage/hazardvest/yellow, -/obj/item/clothing/suit/storage/hazardvest{ - pixel_x = 8; - pixel_y = 7 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) +"fHb" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "fHh" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -32884,25 +31880,10 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"fHO" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"fIf" = ( -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = 8; - pixel_y = -32 - }, +"fHM" = ( +/obj/docking_port/stationary/escape_pod/cl, /turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"fIH" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_p) "fIM" = ( /obj/effect/landmark/start/marine/tl/bravo, /obj/effect/landmark/late_join/bravo, @@ -32940,6 +31921,16 @@ icon_state = "plate" }, /area/almayer/command/cichallway) +"fJp" = ( +/obj/structure/girder, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"fJu" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "fJy" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/toy/deck{ @@ -32974,16 +31965,6 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"fJX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "fJY" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 @@ -33015,17 +31996,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) -"fKl" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/etool{ - pixel_x = 6 - }, -/obj/item/tool/shovel/etool, -/obj/item/tool/wirecutters, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "fKt" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/prop/dam/crane{ @@ -33100,6 +32070,26 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"fLi" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"fLl" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/s_stern) +"fLt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "fLu" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -33197,10 +32187,19 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"fNg" = ( -/obj/structure/largecrate/random/barrel/yellow, +"fMU" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/sign/safety/east{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/coffee{ + pixel_y = 32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_f_p) "fNi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -33254,6 +32253,15 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) +"fOK" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/camera, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "fOL" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -33319,10 +32327,26 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"fQk" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +"fPF" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/clothing/gloves/yellow, +/obj/item/device/multitool, +/obj/item/tool/screwdriver{ + icon_state = "screwdriver7" + }, +/obj/item/tool/crowbar/red, +/obj/item/book/manual/engineering_hacking, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"fQl" = ( +/obj/structure/largecrate/supply/supplies/flares, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "fQn" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -33344,15 +32368,14 @@ }, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"fQF" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"fQK" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_p) +"fQy" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "fQS" = ( /obj/structure/bed/chair/comfy/orange, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -33363,20 +32386,16 @@ }, /turf/open/floor/carpet, /area/almayer/command/corporateliaison) -"fQY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate/supply/weapons/m39{ - pixel_x = 2 - }, -/obj/structure/largecrate/supply/weapons/m41a{ - layer = 3.1; - pixel_x = 6; - pixel_y = 17 +"fRg" = ( +/obj/structure/closet/emcloset, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_f_s) "fRr" = ( /obj/structure/machinery/light{ dir = 1 @@ -33392,13 +32411,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"fRN" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "fRS" = ( /obj/effect/landmark/start/warden, /obj/effect/decal/warning_stripes{ @@ -33440,13 +32452,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"fTi" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "fTj" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -33458,6 +32463,9 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"fTl" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_a_s) "fTm" = ( /obj/structure/bed/chair/office/dark, /turf/open/floor/almayer, @@ -33469,24 +32477,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) -"fTu" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/lower_hull/l_f_p) -"fTx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "fTF" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -33496,12 +32486,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) -"fTR" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "fTU" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -33515,6 +32499,17 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"fUz" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/cups{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/item/storage/box/cups, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "fUA" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) @@ -33533,6 +32528,22 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"fUZ" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"fVa" = ( +/obj/item/stack/catwalk, +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_a_p) +"fVe" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_a_p) "fVo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -33569,6 +32580,14 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) +"fWg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "fWi" = ( /obj/structure/toilet{ dir = 1 @@ -33581,14 +32600,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"fXd" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "fXg" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -33656,18 +32667,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"fYc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "fYf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -33675,15 +32674,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"fYN" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 +"fYr" = ( +/obj/structure/surface/rack, +/obj/item/device/radio{ + pixel_x = 5; + pixel_y = 4 }, +/obj/item/device/radio, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/stern) +/area/almayer/maint/hull/upper/u_f_s) "fYZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -33726,6 +32727,15 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) +"fZy" = ( +/obj/structure/sign/poster{ + pixel_y = -32 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "fZA" = ( /obj/structure/pipes/standard/simple/visible{ dir = 9 @@ -33739,12 +32749,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/lower) -"fZF" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "fZG" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -33753,6 +32757,22 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"fZI" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = 7; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"fZR" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "fZX" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -33776,12 +32796,6 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"gai" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "gax" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -33794,12 +32808,6 @@ "gaJ" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/cryo) -"gaO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "gaQ" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -33876,26 +32884,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"gbO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/structure/closet/emcloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"gcc" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "gcm" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -33936,15 +32924,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"gdd" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "gde" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -33955,11 +32934,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"gdi" = ( -/obj/item/tool/wet_sign, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "gdp" = ( /obj/structure/bed/chair{ dir = 4 @@ -34014,6 +32988,20 @@ "gel" = ( /turf/closed/wall/almayer/research/containment/wall/west, /area/almayer/medical/containment/cell/cl) +"gen" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.1; + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/paper_bin/uscm, +/obj/item/tool/pen, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "ger" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/wy{ @@ -34042,12 +33030,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"gfk" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "gfo" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -34061,12 +33043,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"gfs" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) "gfu" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -34101,12 +33077,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"gfS" = ( -/obj/structure/sign/safety/cryo{ - pixel_y = -26 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "gfW" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lockerroom) @@ -34137,6 +33107,10 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_four) +"ggD" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "ggJ" = ( /obj/structure/machinery/door_control{ dir = 1; @@ -34154,6 +33128,30 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/engineering/airmix) +"ggS" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/perma) +"ghA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/item/toy/handcard/uno_reverse_red{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/toy/deck/uno, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "ghD" = ( /obj/structure/sign/safety/autoopenclose{ pixel_x = 7; @@ -34161,10 +33159,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"ghW" = ( -/obj/effect/landmark/start/liaison, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "ghX" = ( /obj/structure/machinery/power/fusion_engine{ name = "\improper S-52 fusion reactor 14" @@ -34253,14 +33247,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"gjv" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "gjw" = ( /obj/structure/machinery/faxmachine/uscm/command{ density = 0; @@ -34300,22 +33286,20 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"gjN" = ( -/obj/effect/landmark/yautja_teleport, +"gkr" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"gka" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/area/almayer/maint/hull/upper/s_bow) +"gkE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"gks" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/upper/mess) "gkK" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/surface/table/reinforced/almayer_B, @@ -34332,17 +33316,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"glr" = ( -/obj/item/tool/warning_cone{ - pixel_x = -20; - pixel_y = 18 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "gls" = ( /obj/structure/filingcabinet/filingcabinet, /obj/item/clipboard, @@ -34378,15 +33351,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/workshop) -"glM" = ( -/obj/structure/window/reinforced{ - dir = 8; - health = 80 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "gmb" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -34425,6 +33389,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"gnM" = ( +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "gob" = ( /obj/structure/closet/fireaxecabinet{ pixel_y = 32 @@ -34434,6 +33407,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"gof" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "goj" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -34479,6 +33458,17 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"goM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"goY" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/panic) "gpc" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/engineering{ @@ -34489,9 +33479,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"gpe" = ( -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "gpi" = ( /obj/structure/dropship_equipment/rappel_system, /turf/open/floor/almayer{ @@ -34506,25 +33493,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"gpO" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "gpY" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/lifeboat_pumps/north1) -"gqq" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/obj/structure/largecrate/random, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"gqK" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"gqt" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_s) "gqP" = ( /obj/structure/largecrate/random/case, /obj/structure/machinery/camera/autoname/almayer{ @@ -34535,6 +33515,34 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"gqQ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/obj/structure/sign/poster/hero/voteno{ + pixel_y = 32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"grd" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"grv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "grF" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -34554,6 +33562,22 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) +"grT" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wet_sign, +/obj/item/tool/wet_sign{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/tool/wet_sign{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "gsd" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler{ @@ -34610,30 +33634,35 @@ /obj/effect/landmark/late_join, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) -"gsC" = ( -/obj/structure/disposalpipe/segment, +"gsp" = ( +/obj/structure/bed/chair{ + dir = 4 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/hallways/upper/port) -"gsH" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Port Viewing Room" +/area/almayer/maint/hull/lower/l_f_p) +"gsy" = ( +/obj/structure/surface/rack, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/ob_ammo/ob_fuel, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) -"gsL" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 + icon_state = "plate" }, +/area/almayer/maint/hull/lower/p_bow) +"gsC" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 1; + icon_state = "red" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/hallways/upper/port) "gsM" = ( /obj/structure/machinery/portable_atmospherics/powered/pump, /turf/open/floor/almayer{ @@ -34663,19 +33692,13 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"gtA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/transmitter{ - dir = 8; - name = "Medical Telephone"; - phone_category = "Almayer"; - phone_id = "Medical Lower"; - pixel_x = 16 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green" +"gtQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, -/area/almayer/medical/lockerroom) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "gtU" = ( /obj/structure/machinery/power/apc/almayer{ dir = 8 @@ -34706,6 +33729,16 @@ icon_state = "redfull" }, /area/almayer/lifeboat_pumps/south2) +"gur" = ( +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 + }, +/obj/item/reagent_container/glass/bucket, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "guS" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -34740,24 +33773,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"gvC" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "gvU" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -34768,12 +33783,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"gvW" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) "gwj" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -34782,20 +33791,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"gwm" = ( -/obj/structure/largecrate/random/case/small, -/obj/item/device/taperecorder{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_x = -9; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "gwn" = ( /obj/structure/machinery/ares/processor/bioscan, /turf/open/floor/almayer/no_build{ @@ -34817,23 +33812,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"gwD" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/regular, -/obj/item/clipboard, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/req) -"gwF" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "gwM" = ( /obj/structure/pipes/vents/pump, /obj/structure/mirror{ @@ -34866,18 +33844,6 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"gwY" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Starboard Viewing Room" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "gxh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/o2, @@ -34893,33 +33859,18 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) -"gxk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +"gxm" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/stairs) "gxn" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"gxr" = ( -/obj/structure/largecrate/random/barrel/green, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) +"gxI" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/s_bow) "gxO" = ( /turf/open/floor/almayer{ dir = 10; @@ -34939,17 +33890,10 @@ /obj/structure/surface/table/almayer, /obj/item/toy/deck, /turf/open/floor/almayer{ - dir = 10; + dir = 8; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"gyt" = ( -/obj/item/storage/firstaid/regular, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "gyv" = ( /obj/structure/platform_decoration{ dir = 4 @@ -34983,6 +33927,13 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) +"gyH" = ( +/obj/item/tool/warning_cone{ + pixel_x = -12; + pixel_y = 16 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "gyN" = ( /obj/structure/machinery/prop{ desc = "It's a server box..."; @@ -35062,6 +34013,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) +"gzN" = ( +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "gzV" = ( /obj/structure/sink{ dir = 1; @@ -35071,12 +34029,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"gAd" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "gAe" = ( /obj/structure/machinery/door_control{ id = "ARES JoeCryo"; @@ -35108,12 +34060,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cichallway) -"gAt" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "gAz" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/golden_cup{ @@ -35149,18 +34095,34 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"gBd" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "gBo" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"gBM" = ( -/obj/structure/machinery/light/small{ +"gBs" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) +"gBU" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/bag/trash{ + pixel_x = -3 + }, +/obj/structure/machinery/power/apc/almayer{ dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "gBW" = ( /obj/structure/machinery/floodlight/landing{ name = "bolted floodlight" @@ -35169,12 +34131,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"gCd" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "gCf" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -35190,6 +34146,15 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) +"gCu" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "gCw" = ( /obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = 10 @@ -35217,6 +34182,12 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"gCQ" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_a_s) "gDp" = ( /obj/structure/machinery/light{ dir = 4 @@ -35246,14 +34217,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) -"gDP" = ( -/obj/structure/closet/crate, -/obj/item/ammo_box/magazine/l42a, -/obj/item/ammo_box/magazine/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "gDW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35266,10 +34229,19 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"gDX" = ( +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "gEg" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices/flight) +"gEh" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "gEo" = ( /obj/structure/machinery/cryopod/right, /obj/structure/machinery/light{ @@ -35308,20 +34280,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"gFs" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"gFG" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "gFP" = ( /turf/closed/wall/almayer/outer, /area/almayer/shipboard/stern_point_defense) @@ -35332,6 +34290,14 @@ icon_state = "cargo" }, /area/almayer/living/commandbunks) +"gGb" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "gGf" = ( /obj/structure/machinery/light{ dir = 1 @@ -35415,12 +34381,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"gHg" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "gHh" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -35428,6 +34388,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/port) +"gHi" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_m_s) "gHj" = ( /obj/structure/machinery/light, /obj/structure/closet/secure_closet/fridge/groceries/stock, @@ -35471,6 +34437,12 @@ icon_state = "test_floor4" }, /area/almayer/engineering/ce_room) +"gIm" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "gII" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -35482,13 +34454,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) -"gIN" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "gIU" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/tapes{ @@ -35507,16 +34472,15 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/evidence_storage) -"gJd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 +"gJf" = ( +/obj/structure/bed/sofa/south/grey/left{ + pixel_y = 12 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"gJF" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/s_stern) "gJO" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/window/southleft{ @@ -35536,6 +34500,20 @@ icon_state = "green" }, /area/almayer/living/offices) +"gJY" = ( +/obj/structure/surface/table/almayer, +/obj/item/circuitboard{ + pixel_x = 12; + pixel_y = 7 + }, +/obj/item/tool/crowbar{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "gKd" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -35546,6 +34524,12 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"gKv" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "gKB" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/firealarm{ @@ -35565,15 +34549,6 @@ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) -"gKJ" = ( -/obj/structure/machinery/vending/cola{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "gKR" = ( /obj/structure/closet/emcloset, /obj/structure/machinery/light{ @@ -35584,12 +34559,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"gKS" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "gKZ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/wet_sign, @@ -35613,6 +34582,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/hydroponics) +"gLm" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "gLz" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -35699,20 +34674,10 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) -"gMx" = ( -/obj/structure/closet/firecloset, +"gMJ" = ( +/obj/structure/largecrate/supply/weapons/pistols, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"gMA" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - dir = 8; - req_one_access = list(2,34,30) - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_m_s) "gMN" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -35754,6 +34719,18 @@ dir = 4 }, /area/almayer/living/briefing) +"gNg" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"gNo" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "gNp" = ( /turf/open/floor/almayer{ dir = 9; @@ -35771,14 +34748,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) -"gNx" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "gNG" = ( /obj/structure/surface/table/almayer, /obj/item/fuelCell, @@ -35792,6 +34761,10 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) +"gNN" = ( +/obj/structure/bed/chair/office/dark, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "gNO" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -35801,6 +34774,22 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"gNQ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"gNZ" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"gOk" = ( +/obj/structure/largecrate/guns/merc{ + name = "\improper dodgy crate" + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "gOs" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -35875,6 +34864,15 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"gPS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "gQk" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/terminal{ @@ -35883,6 +34881,16 @@ /obj/structure/machinery/faxmachine/corporate/liaison, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) +"gQu" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/storage/firstaid/rad, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "gQF" = ( /obj/structure/bed/chair/comfy{ buckling_y = 2; @@ -35899,6 +34907,18 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"gQQ" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"gRc" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "gRd" = ( /obj/structure/platform, /obj/structure/target{ @@ -35907,9 +34927,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"gRn" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull) "gRP" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -35950,12 +34967,26 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"gSs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"gSy" = ( +/obj/item/frame/rack{ + layer = 3.1; + pixel_y = 19 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/obj/structure/surface/rack, +/obj/item/tool/weldpack{ + pixel_x = 5 + }, +/obj/item/tool/weldpack{ + pixel_x = -2 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"gSH" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "gTH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/skills{ @@ -35973,6 +35004,14 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"gTK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "gUf" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /turf/open/floor/almayer{ @@ -35988,23 +35027,31 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/general_equipment) -"gUv" = ( +"gUi" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) +"gUn" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"gUu" = ( /obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "E"; + pixel_x = 2 }, -/area/almayer/hull/lower_hull/l_f_p) -"gUy" = ( -/obj/structure/machinery/vending/cola{ - density = 0; - pixel_y = 18 +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"gUG" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_a_s) "gUL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -36108,22 +35155,6 @@ }, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"gWR" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"gXh" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "gXl" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access_txt = "5" @@ -36164,9 +35195,6 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"gXZ" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/stern) "gYe" = ( /obj/structure/machinery/vending/sea, /turf/open/floor/almayer{ @@ -36193,66 +35221,27 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) -"gYB" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "Saferoom Channel"; - pixel_x = 27 +"gYI" = ( +/obj/structure/platform{ + dir = 4 }, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"gYS" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 - }, -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) -"gZr" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/camera_film{ - pixel_x = 4; - pixel_y = -2 +/area/almayer/maint/hull/upper/u_a_p) +"gYU" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/obj/item/device/camera/siliconcam{ - pixel_x = -6; - pixel_y = 11 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/squads/charlie_delta_shared) +/area/almayer/maint/hull/upper/u_a_p) "gZw" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"gZG" = ( -/obj/structure/largecrate/supply/supplies/mre, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "gZK" = ( /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) @@ -36286,15 +35275,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_lobby) -"haq" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_a_p) -"har" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "haz" = ( /obj/structure/machinery/floodlight, /turf/open/floor/almayer{ @@ -36333,6 +35313,11 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"haO" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "haQ" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -36346,12 +35331,36 @@ icon_state = "plate" }, /area/almayer/living/offices) +"haR" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "haT" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"hbl" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_s) +"hbp" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/p_stern) "hbs" = ( /obj/structure/surface/table/almayer, /obj/item/frame/fire_alarm, @@ -36369,6 +35378,20 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) +"hbE" = ( +/obj/structure/largecrate/random, +/obj/item/reagent_container/food/snacks/cheesecakeslice{ + pixel_y = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hbI" = ( /obj/structure/sign/safety/ammunition{ pixel_x = 32; @@ -36442,19 +35465,6 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"hcZ" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) -"hdb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "hdd" = ( /turf/open/floor/almayer{ dir = 9; @@ -36479,6 +35489,13 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) +"hdy" = ( +/obj/item/storage/firstaid/fire, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hdE" = ( /obj/structure/filingcabinet, /obj/item/reagent_container/food/drinks/coffeecup/uscm{ @@ -36488,17 +35505,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"hdR" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "OfficeSafeRoom"; - name = "\improper Office Safe Room" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "heb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -36550,18 +35556,16 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) +"heO" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "heS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/lower) -"heV" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "hfa" = ( /obj/structure/window/reinforced{ dir = 8 @@ -36592,16 +35596,27 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) -"hfk" = ( -/obj/item/trash/crushed_cup, +"hfv" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"hfy" = ( -/obj/structure/machinery/light, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/lower/s_bow) +"hfO" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/surface/rack, +/obj/item/storage/belt/utility/full{ + pixel_y = 8 + }, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/suit/storage/hazardvest/black, +/obj/item/tool/crowbar, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "hfQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/almayer{ @@ -36617,21 +35632,12 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"hgm" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/binoculars{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/device/binoculars, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, +"hgk" = ( +/obj/structure/largecrate/random, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_m_s) "hgo" = ( /obj/structure/machinery/light{ dir = 8 @@ -36664,13 +35670,6 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) -"hgH" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "hgL" = ( /obj/item/tool/warning_cone{ pixel_x = 4; @@ -36681,6 +35680,17 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"hgO" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 4 + }, +/obj/item/tool/stamp/approved{ + pixel_y = -11; + pixel_x = -3 + }, +/turf/open/floor/almayer, +/area/almayer/squads/req) "hgV" = ( /obj/structure/machinery/power/fusion_engine{ name = "\improper S-52 fusion reactor 15" @@ -36704,6 +35714,25 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) +"hhd" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/hardhat/orange{ + pixel_x = -9; + pixel_y = 16 + }, +/obj/item/clothing/suit/storage/hazardvest/blue{ + pixel_x = -7; + pixel_y = -4 + }, +/obj/item/clothing/head/hardhat{ + pixel_x = 10; + pixel_y = 1 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "hhe" = ( /obj/structure/sign/safety/nonpress_0g{ pixel_y = 32 @@ -36715,6 +35744,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) +"hhg" = ( +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "hhn" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -36725,9 +35760,6 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"hhw" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_s) "hhA" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, @@ -36757,16 +35789,16 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"hit" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/bag/trash{ - pixel_x = -3 +"hiu" = ( +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice13"; + pixel_x = 16; + pixel_y = 16 }, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_m_s) "hiy" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -36782,12 +35814,12 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"hiQ" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +"hja" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_a_s) "hji" = ( /obj/structure/bed/chair{ dir = 4 @@ -36841,27 +35873,30 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/processing) +"hjT" = ( +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/obj/structure/largecrate, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hki" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"hkm" = ( -/obj/structure/stairs{ - icon_state = "ramptop" - }, -/obj/structure/platform{ +"hkz" = ( +/obj/structure/machinery/light/small{ dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"hkx" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/p_stern) "hkB" = ( /obj/structure/sign/safety/rewire{ pixel_x = 8; @@ -36930,19 +35965,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"hlw" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"hlz" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "hlH" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -36953,12 +35975,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower) -"hlI" = ( -/obj/structure/girder, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "hlT" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -37054,6 +36070,9 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"hmA" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/p_bow) "hmC" = ( /obj/structure/machinery/cm_vending/sorted/marine_food{ density = 0; @@ -37098,6 +36117,30 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"hmV" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "medical manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/surgery, +/obj/item/book/manual/medical_diagnostics_manual, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"hmZ" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "hng" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/accessory/storage/black_vest/acid_harness, @@ -37113,6 +36156,18 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) +"hnt" = ( +/obj/item/toy/deck{ + pixel_y = 12 + }, +/obj/structure/sign/safety/storage{ + pixel_x = 32 + }, +/obj/structure/surface/table/woodentable/poor, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "hnI" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -37126,10 +36181,15 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"hnV" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +"hog" = ( +/obj/structure/machinery/light/small, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "hon" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -37149,12 +36209,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"hoX" = ( -/obj/structure/machinery/light/small, +"hoT" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_m_s) "hpk" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -37190,6 +36249,10 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"hqb" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_s) "hqc" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -37208,29 +36271,20 @@ /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell) -"hqs" = ( +"hqm" = ( /obj/structure/machinery/light/small{ - dir = 8 + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_f_s) -"hqJ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 + icon_state = "plate" }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 +/area/almayer/maint/hull/upper/u_m_s) +"hqu" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliaison) +/area/almayer/maint/hull/upper/u_a_p) "hqU" = ( /obj/structure/bed/chair{ dir = 8; @@ -37278,6 +36332,15 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) +"hro" = ( +/obj/structure/machinery/vending/coffee{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "hrF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37287,12 +36350,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/starboard_point_defense) +"hrI" = ( +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "hrJ" = ( -/obj/structure/machinery/cm_vending/sorted/medical, /obj/structure/sign/safety/autodoc{ pixel_x = 20; pixel_y = -32 }, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -37316,6 +36382,21 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"hsh" = ( +/obj/structure/coatrack, +/obj/structure/sign/poster/clf{ + pixel_x = -28 + }, +/obj/structure/sign/nosmoking_1{ + pixel_y = 30 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "hsj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37333,9 +36414,19 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"hsu" = ( +/obj/structure/bed/sofa/south/grey{ + pixel_y = 12 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "hsy" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/engineering/lower/engine_core) +"hsK" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "hsW" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -37352,6 +36443,33 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) +"htg" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/largecrate/supply/supplies/flares, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"htk" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) +"htq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "htG" = ( /obj/item/tool/soap, /obj/structure/machinery/light/small{ @@ -37380,15 +36498,12 @@ icon_state = "greenfull" }, /area/almayer/living/offices) -"htP" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"huD" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/hull/lower_hull/stern) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "huK" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -37419,18 +36534,20 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"huX" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "hvp" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"hvq" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "hvv" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -37460,13 +36577,20 @@ /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/plating, /area/almayer/powered/agent) +"hvx" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_p) "hvH" = ( /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"hvQ" = ( -/obj/effect/landmark/start/professor, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "hwd" = ( /obj/item/fuelCell, /obj/item/fuelCell, @@ -37532,6 +36656,12 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"hyb" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "hyc" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -37593,6 +36723,16 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"hzl" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/mre_pack/meal5, +/obj/item/device/flashlight/lamp{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "hzs" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -37628,18 +36768,10 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) -"hzM" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"hzV" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, +"hzN" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/s_bow) "hAc" = ( /obj/structure/surface/rack, /obj/item/mortar_shell/flare, @@ -37678,14 +36810,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"hAY" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) "hAZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37733,23 +36857,20 @@ icon_state = "cargo" }, /area/almayer/command/lifeboat) -"hBU" = ( -/obj/structure/largecrate/random/secure, -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, +"hCk" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) -"hCo" = ( -/obj/structure/surface/table/almayer, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 +/area/almayer/maint/hull/lower/l_m_s) +"hCq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "hCt" = ( /obj/structure/sign/safety/terminal{ pixel_x = 15; @@ -37789,10 +36910,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"hDv" = ( -/obj/effect/landmark/start/reporter, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "hDw" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -37844,30 +36961,33 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"hEj" = ( +/obj/structure/machinery/vending/hydronutrients, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hEl" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) -"hEt" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_x = -8 - }, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_y = 12 - }, -/obj/item/clothing/head/militia/bucket{ - pixel_x = 5; - pixel_y = -5 +"hEr" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 }, -/obj/item/reagent_container/spray/cleaner{ +/obj/structure/filingcabinet{ + density = 0; pixel_x = 8; - pixel_y = -1 + pixel_y = 18 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "hEw" = ( /obj/structure/pipes/standard/simple/visible{ dir = 10 @@ -37906,16 +37026,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/morgue) -"hFW" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"hGD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "hGG" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -37958,12 +37068,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"hGZ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "hHe" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -38010,18 +37114,15 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_umbilical) -"hHU" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_x = 7; - pixel_y = -3 +"hIp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_p) "hIs" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -38032,6 +37133,10 @@ icon_state = "dark_sterile" }, /area/almayer/command/corporateliaison) +"hIG" = ( +/obj/structure/largecrate/random, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "hII" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -38046,12 +37151,12 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"hJb" = ( -/obj/item/tool/pen, +"hIX" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/maint/hull/upper/u_a_p) "hJg" = ( /obj/structure/pipes/trinary/mixer{ dir = 4; @@ -38071,9 +37176,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"hJp" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "hJu" = ( /obj/structure/sign/safety/stairs{ pixel_x = -15 @@ -38083,48 +37185,18 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"hJz" = ( -/obj/structure/sign/safety/restrictedarea, -/obj/structure/sign/safety/security{ - pixel_x = 15 +"hJD" = ( +/obj/structure/bed/sofa/south/grey/right{ + pixel_y = 12 }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "hJI" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) -"hJJ" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"hJN" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/airlock{ - pixel_x = 32; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) -"hKe" = ( -/obj/structure/sign/poster/safety, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_s) -"hKi" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "hKl" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/warning_stripes{ @@ -38148,61 +37220,34 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"hLB" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 +"hKO" = ( +/obj/structure/largecrate/random/barrel/green, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 +/area/almayer/maint/hull/lower/l_f_s) +"hLt" = ( +/obj/structure/sign/poster{ + desc = "It says DRUG."; + icon_state = "poster2"; + pixel_y = 30 }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"hLu" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/lower/p_bow) "hLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -38247,22 +37292,24 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/engineering/lower) -"hMI" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/binoculars, -/obj/item/device/whistle{ - pixel_y = 5 - }, +"hMM" = ( +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/s_bow) "hMN" = ( /obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) +"hNh" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "hNl" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_21"; @@ -38316,6 +37363,9 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"hOV" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/lower/constr) "hPe" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research, @@ -38328,14 +37378,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) -"hPg" = ( -/obj/structure/machinery/constructable_frame{ - icon_state = "box_2" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "hPh" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ @@ -38343,14 +37385,13 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) -"hPo" = ( -/obj/structure/surface/rack, -/obj/item/tool/wet_sign, -/obj/item/tool/wet_sign, +"hPu" = ( +/obj/structure/largecrate/supply, +/obj/item/tool/crowbar, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_f_p) "hPI" = ( /turf/closed/wall/almayer/outer, /area/almayer/shipboard/brig/perma) @@ -38373,12 +37414,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) -"hPT" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "hQc" = ( /obj/structure/window/reinforced{ dir = 4; @@ -38398,6 +37433,10 @@ icon_state = "orange" }, /area/almayer/engineering/lower/engine_core) +"hQK" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_p) "hQP" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -38470,12 +37509,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"hRi" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "hRk" = ( /obj/structure/machinery/cm_vending/clothing/senior_officer{ density = 0; @@ -38485,6 +37518,17 @@ icon_state = "plate" }, /area/almayer/living/numbertwobunks) +"hRA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "hRW" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -38512,6 +37556,26 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"hSb" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"hSj" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig"; + closeOtherId = "brigmaint_n" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_bow) "hSk" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) @@ -38524,14 +37588,18 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"hSu" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"hSv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Starboard Viewing Room" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_f_s) "hSw" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -38575,14 +37643,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"hTk" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 - }, -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_a_p) "hTl" = ( /obj/structure/prop/server_equipment/yutani_server{ density = 0; @@ -38604,10 +37664,6 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"hTu" = ( -/obj/structure/machinery/light, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "hTF" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm{ isopen = 1; @@ -38651,18 +37707,28 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"hUc" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"hTU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, +/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) -"hUg" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_a_p) +"hUb" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "hUk" = ( /turf/open/floor/almayer{ dir = 10; @@ -38714,20 +37780,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"hWa" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/ashtray/plastic, -/obj/item/trash/cigbutt{ - pixel_x = 4 - }, -/obj/item/trash/cigbutt{ - pixel_x = -10; - pixel_y = 13 - }, +"hVL" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_f_p) "hWq" = ( /obj/structure/platform{ layer = 3.1 @@ -38776,6 +37834,23 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"hWH" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "hWJ" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ @@ -38790,18 +37865,6 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"hWS" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) -"hWU" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "hXb" = ( /turf/open/floor/almayer{ dir = 1; @@ -38839,6 +37902,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) +"hXD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "hXG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38851,13 +37920,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) -"hXS" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "hXV" = ( /obj/structure/machinery/light{ dir = 1 @@ -38884,22 +37946,12 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"hYc" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/kitchen/tray, -/obj/item/tool/kitchen/tray{ - pixel_y = 6 - }, -/obj/item/reagent_container/food/snacks/sliceable/bread{ - pixel_y = 8 - }, -/obj/item/tool/kitchen/knife{ - pixel_x = 6 - }, +"hYf" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) "hYn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38912,6 +37964,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"hYE" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "hYG" = ( /obj/structure/bed/chair{ dir = 1 @@ -38940,6 +38000,12 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"hZw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "hZE" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -38984,6 +38050,10 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"hZZ" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "iaa" = ( /obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, /turf/open/floor/almayer{ @@ -39060,6 +38130,24 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) +"ibf" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"ibP" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -19; + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -19; + pixel_y = 6 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "icp" = ( /turf/open/floor/almayer{ dir = 8; @@ -39105,12 +38193,40 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"idL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "idX" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"ied" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"ien" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "ieu" = ( /obj/structure/window/reinforced{ dir = 4; @@ -39181,13 +38297,6 @@ dir = 4 }, /area/almayer/command/airoom) -"ieH" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "ieX" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/distribution_pipes{ @@ -39212,21 +38321,13 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"ifR" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"igb" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"igf" = ( -/obj/structure/largecrate/random/case{ - layer = 2.98 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_m_s) "igr" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -39246,14 +38347,39 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"ihn" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/drinks/cans/souto/blue{ - pixel_x = 2; - pixel_y = 3 +"igw" = ( +/obj/structure/sign/poster/ad{ + pixel_x = 30 + }, +/obj/structure/closet, +/obj/item/clothing/mask/cigarette/weed, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"igS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, +/obj/structure/closet/emcloset, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/p_bow) +"iho" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) "ihw" = ( /obj/structure/machinery/cm_vending/sorted/medical, /turf/open/floor/almayer{ @@ -39287,17 +38413,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"iid" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - dir = 2; - req_one_access = null; - req_one_access_txt = "19;34;30" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) "iis" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -39343,25 +38458,12 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"iiP" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "iiZ" = ( /obj/structure/machinery/cm_vending/sorted/marine_food, /turf/open/floor/almayer{ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"ije" = ( -/obj/item/tool/weldingtool, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "ijf" = ( /obj/structure/surface/table/almayer, /obj/item/cell/crap, @@ -39371,14 +38473,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) -"ijp" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "ijr" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -39406,10 +38500,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) -"ijU" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "iks" = ( /obj/structure/pipes/binary/pump/high_power/on{ dir = 1 @@ -39430,6 +38520,19 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"ikA" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) +"ikC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "ikQ" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/tool/stamp/hop{ @@ -39451,16 +38554,15 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"ikT" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "ilq" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"ils" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_f_p) "ily" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -39486,12 +38588,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"ilZ" = ( -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "imo" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -39505,33 +38601,24 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"imt" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "imy" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"imJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"ina" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "inh" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, /obj/structure/disposalpipe/junction{ - dir = 1 + dir = 4; + icon_state = "pipe-y" }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) @@ -39548,14 +38635,6 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) -"inC" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "inL" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -39566,12 +38645,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"ioj" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "iow" = ( /obj/structure/machinery/cm_vending/sorted/attachments/squad{ req_access = null; @@ -39592,6 +38665,9 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"ioM" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "ioP" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -39636,12 +38712,39 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) -"ipD" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"ipk" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_f_s) +"ipn" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"ipr" = ( +/obj/item/tool/weldpack{ + pixel_y = 15 + }, +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"ipB" = ( +/obj/structure/surface/rack, +/obj/item/tool/kitchen/rollingpin, +/obj/item/tool/hatchet, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "ipE" = ( /obj/structure/bed/chair{ dir = 8 @@ -39676,11 +38779,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) -"ipT" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "iqd" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -39691,7 +38789,6 @@ /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 10; icon_state = "green" @@ -39727,14 +38824,6 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) -"irn" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"irr" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "iry" = ( /obj/structure/platform{ dir = 8 @@ -39782,6 +38871,15 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop) +"isq" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "isC" = ( /obj/effect/projector{ name = "Almayer_AresDown"; @@ -39887,6 +38985,17 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"iuf" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "iun" = ( /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, @@ -39905,25 +39014,6 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"iuu" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/hardhat/orange{ - pixel_x = -9; - pixel_y = 16 - }, -/obj/item/clothing/suit/storage/hazardvest/blue{ - pixel_x = -7; - pixel_y = -4 - }, -/obj/item/clothing/head/hardhat{ - pixel_x = 10; - pixel_y = 1 - }, -/obj/item/clothing/suit/storage/hazardvest{ - pixel_x = 1 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "iuz" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/warhead, @@ -39931,10 +39021,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"iuA" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "iuE" = ( /obj/structure/machinery/vending/coffee, /obj/structure/machinery/light{ @@ -39950,6 +39036,12 @@ /obj/structure/machinery/computer/emails, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) +"iuI" = ( +/obj/structure/sign/safety/maint{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ivf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/camera, @@ -39970,6 +39062,10 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"ivu" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "ivz" = ( /obj/structure/closet, /turf/open/floor/almayer{ @@ -39982,6 +39078,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) +"ivL" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "ivM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -40003,14 +39105,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower) -"iwh" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "iwB" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -40083,6 +39177,14 @@ icon_state = "sterile_green" }, /area/almayer/medical/lockerroom) +"ixu" = ( +/obj/structure/largecrate/random/case{ + layer = 2.98 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "ixv" = ( /obj/structure/bed/chair/comfy/blue{ dir = 4 @@ -40122,12 +39224,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"ixP" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "ixQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -40135,6 +39231,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"iyE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "iyF" = ( /obj/structure/pipes/standard/simple/visible{ dir = 9 @@ -40156,12 +39261,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"iyQ" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) "iyS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40183,13 +39282,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"izx" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "izG" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -40205,10 +39297,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"izU" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "izY" = ( /obj/structure/machinery/autodoc_console, /turf/open/floor/almayer{ @@ -40273,26 +39361,14 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"iBt" = ( -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) -"iBE" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"iBG" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/reagent_dispensers/fueltank{ - anchored = 1 +"iBu" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/p_bow) "iBY" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/almayer{ @@ -40320,14 +39396,14 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"iCz" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"iCD" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_a_p) "iCF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -40346,12 +39422,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"iDm" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"iDk" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/maint/hull/lower/l_m_p) +"iDs" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "iDN" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -40362,16 +39444,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"iDT" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/spray/cleaner{ - pixel_x = 7; - pixel_y = 14 - }, +"iEa" = ( +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/p_bow) "iEb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -40390,14 +39468,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) -"iEs" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_a_p) "iEw" = ( /obj/structure/machinery/light{ dir = 1 @@ -40433,24 +39503,23 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"iFm" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/disposaloutlet, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" - }, -/area/almayer/hull/lower_hull/l_m_p) "iFn" = ( /turf/open/floor/almayer{ icon_state = "bluefull" }, /area/almayer/living/pilotbunks) +"iFA" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Railguns and Viewing Room" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "iFC" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -40490,13 +39559,21 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) -"iGg" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_container/food/snacks/tomatomeat, -/obj/item/reagent_container/food/snacks/tomatomeat, -/obj/item/reagent_container/food/snacks/tomatomeat, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +"iFY" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/cryo{ + pixel_x = 36 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) +"iGc" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "iGn" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/closet/secure_closet/surgical{ @@ -40507,14 +39584,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"iGK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "iGQ" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 8 @@ -40529,20 +39598,6 @@ "iHc" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"iHF" = ( -/obj/structure/largecrate/random, -/obj/item/reagent_container/food/snacks/cheesecakeslice{ - pixel_y = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "iHG" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -40572,6 +39627,20 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"iIH" = ( +/obj/structure/largecrate/supply/medicine/medivend{ + pixel_x = 3 + }, +/obj/structure/largecrate/random/mini/med{ + pixel_x = 3; + pixel_y = 11; + density = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/lower_medical_medbay) "iIP" = ( /obj/structure/toilet{ pixel_y = 16 @@ -40597,16 +39666,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"iIY" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"iJf" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "iJB" = ( /obj/structure/sign/safety/galley{ pixel_x = 8; @@ -40627,6 +39686,13 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"iJT" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "iKb" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -40683,6 +39749,15 @@ icon_state = "mono" }, /area/almayer/engineering/port_atmos) +"iKV" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "iKZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -40792,6 +39867,20 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"iNk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"iNR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "iNY" = ( /obj/structure/machinery/status_display{ pixel_x = 32; @@ -40799,23 +39888,30 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"iNZ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/bed/chair{ - dir = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "iOD" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"iOX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"iPf" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"iPq" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "iPv" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -40843,6 +39939,21 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"iPN" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/station_alert, +/obj/structure/sign/safety/maint{ + pixel_x = 32 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "iPS" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -40912,12 +40023,6 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) -"iQx" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "iQB" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/card{ @@ -40937,6 +40042,16 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"iQJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "iRr" = ( /obj/structure/machinery/light{ dir = 1 @@ -40972,10 +40087,6 @@ dir = 4 }, /area/almayer/medical/containment/cell) -"iRS" = ( -/obj/item/trash/chips, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "iSm" = ( /obj/structure/pipes/vents/pump, /obj/structure/mirror{ @@ -41022,6 +40133,25 @@ icon_state = "dark_sterile" }, /area/almayer/living/port_emb) +"iSB" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"iSV" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 1; + req_one_access = null; + req_one_access_txt = "2;7" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) "iSZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41052,25 +40182,16 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"iTf" = ( -/obj/structure/closet/crate/trashcart, -/obj/item/clothing/gloves/yellow, -/obj/item/device/multitool, -/obj/item/tool/screwdriver{ - icon_state = "screwdriver7" - }, -/obj/item/tool/crowbar/red, -/obj/item/book/manual/engineering_hacking, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "iTl" = ( /turf/open/floor/almayer{ dir = 10; icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"iTq" = ( +/obj/structure/curtain/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "iTw" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -41079,18 +40200,6 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"iTz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "iTD" = ( /obj/effect/landmark/start/auxiliary_officer, /turf/open/floor/plating/plating_catwalk, @@ -41114,13 +40223,20 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"iTN" = ( -/obj/item/stool{ - pixel_x = -15; - pixel_y = 6 +"iTQ" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"iUh" = ( +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "iUk" = ( /obj/structure/machinery/door/airlock/almayer/marine/charlie{ dir = 1 @@ -41172,23 +40288,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"iUZ" = ( -/obj/docking_port/stationary/escape_pod/cl, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) -"iVj" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/prop/almayer/computer/PC{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/squads/req) -"iVo" = ( -/obj/structure/bed/sofa/south/grey/right, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "iVy" = ( /turf/open/floor/almayer{ dir = 1; @@ -41201,15 +40300,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"iVO" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/revolver/m44{ - desc = "A bulky revolver, occasionally carried by assault troops and officers in the Colonial Marines, as well as civilian law enforcement. Fires .44 Magnum rounds. 'J.P' Is engraved into the barrel." +"iVG" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/p_bow) "iVP" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17; @@ -41221,6 +40320,13 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"iWa" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "iWc" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -41250,6 +40356,26 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"iWH" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/item/reagent_container/glass/bucket/mopbucket, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 14 + }, +/obj/structure/janitorialcart, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"iWJ" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "iWL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -41263,6 +40389,11 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) +"iWQ" = ( +/obj/effect/landmark/start/researcher, +/obj/effect/landmark/late_join/researcher, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "iWR" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/prison{ @@ -41277,12 +40408,28 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"iXm" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "InnerShutter"; + name = "\improper Saferoom Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) "iXA" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) +"iXB" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "iXT" = ( /obj/item/trash/uscm_mre, /turf/open/floor/almayer, @@ -41329,12 +40476,6 @@ icon_state = "cargo_arrow" }, /area/almayer/medical/hydroponics) -"iYi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "iYj" = ( /obj/structure/machinery/firealarm{ dir = 4; @@ -41345,10 +40486,12 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) -"iYp" = ( -/obj/item/paper/almayer_storage, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +"iYm" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "iYr" = ( /obj/structure/machinery/light{ dir = 4 @@ -41374,6 +40517,12 @@ icon_state = "plate" }, /area/almayer/living/gym) +"iZd" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "iZg" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -41447,13 +40596,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) -"iZX" = ( -/obj/structure/surface/rack, -/obj/item/clothing/glasses/meson, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "jac" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -41478,17 +40620,17 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"jaj" = ( -/obj/item/ammo_box/magazine/misc/mre/empty{ - pixel_x = 8; - pixel_y = 8 +"jay" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/etool{ + pixel_x = 6 }, -/obj/item/reagent_container/food/drinks/cans/aspen{ - pixel_x = 11; - pixel_y = -3 +/obj/item/tool/shovel/etool, +/obj/item/tool/wirecutters, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_p) "jaH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper_bin/uscm{ @@ -41499,6 +40641,13 @@ icon_state = "plating" }, /area/almayer/command/airoom) +"jaI" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "jaK" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -41534,23 +40683,10 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"jbb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, +"jaW" = ( +/obj/effect/landmark/start/reporter, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_m_p) "jbq" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -41617,7 +40753,7 @@ /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "jbO" = ( -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -41632,6 +40768,15 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/shipboard/brig/processing) +"jcE" = ( +/obj/structure/machinery/vending/coffee{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "jcP" = ( /turf/open/floor/almayer{ icon_state = "plating_striped" @@ -41657,6 +40802,17 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"jdn" = ( +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"jdu" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "jdG" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -41667,26 +40823,14 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_three) -"jdQ" = ( -/obj/structure/machinery/shower{ - pixel_y = 16 - }, -/obj/item/tool/soap, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"jea" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_y = 32 - }, -/obj/structure/sign/safety/water{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "jeb" = ( /turf/closed/wall/almayer, /area/almayer/squads/alpha_bravo_shared) +"jei" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "jeq" = ( /obj/structure/surface/rack, /obj/item/storage/box/pillbottles{ @@ -41702,6 +40846,27 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"jer" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_a_p) +"jev" = ( +/obj/structure/largecrate/random/case/small, +/obj/item/device/taperecorder{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = -9; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "jew" = ( /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer{ @@ -41739,17 +40904,15 @@ icon_state = "red" }, /area/almayer/living/cryo_cells) -"jeU" = ( -/obj/structure/largecrate/random/secure, +"jeR" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/bed/chair/bolted, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_s) -"jfm" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/brig/perma) "jfD" = ( /obj/structure/sign/safety/security{ pixel_y = -32 @@ -41772,6 +40935,13 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"jfS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "jfY" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -41865,14 +41035,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"jgC" = ( -/obj/structure/closet/emcloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "jgF" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -41885,12 +41047,14 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"jgM" = ( -/obj/structure/surface/table/almayer, +"jgK" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_m_s) "jgU" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -41932,30 +41096,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"jhA" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"jhB" = ( -/obj/structure/bookcase{ - icon_state = "book-5"; - name = "medical manuals bookcase"; - opacity = 0 - }, -/obj/item/book/manual/surgery, -/obj/item/book/manual/research_and_development, -/obj/item/book/manual/medical_diagnostics_manual, -/obj/item/book/manual/medical_cloning, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "jhD" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -41969,22 +41109,29 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) -"jhW" = ( -/obj/structure/machinery/cryopod/right, +"jhK" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"jhR" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 }, -/area/almayer/living/bridgebunks) -"jhY" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; pixel_x = -1 }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"jhW" = ( +/obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" + icon_state = "cargo" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/living/bridgebunks) "jic" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42005,6 +41152,17 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) +"jiM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/surface/rack, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/frame/table, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "jiU" = ( /obj/structure/sink{ dir = 1; @@ -42024,14 +41182,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/port_emb) -"jiX" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "jjm" = ( /obj/structure/closet/secure_closet{ name = "\improper Lethal Injection Locker" @@ -42089,12 +41239,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"jjX" = ( -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "jjZ" = ( /obj/structure/machinery/light{ dir = 4 @@ -42132,6 +41276,17 @@ icon_state = "plate" }, /area/almayer/medical/morgue) +"jkq" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "jks" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -42191,6 +41346,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"jkN" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "jlc" = ( /turf/open/floor/almayer{ dir = 1; @@ -42253,10 +41414,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"jmg" = ( -/obj/structure/largecrate/supply/ammo/shotgun, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "jmn" = ( /obj/structure/surface/table/almayer, /obj/item/prop/magazine/dirty{ @@ -42270,6 +41427,15 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"jmz" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "jmK" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -42291,30 +41457,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"jmR" = ( -/obj/structure/ladder/fragile_almayer{ - height = 2; - id = "kitchen" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 24 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "jmY" = ( /turf/open/floor/almayer{ icon_state = "blue" }, /area/almayer/command/cichallway) -"jnk" = ( -/obj/structure/largecrate/random/case/double, +"jne" = ( +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) +"jnh" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/upper/mess) "jnw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42371,12 +41532,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"joT" = ( -/obj/structure/largecrate/random/case, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "jpn" = ( /obj/structure/stairs{ icon_state = "ramptop" @@ -42411,23 +41566,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"jpJ" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"jpN" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/cups{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/storage/box/cups, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "jqP" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "ARES Interior"; @@ -42448,9 +41586,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"jqT" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "jqY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -42465,6 +41600,10 @@ icon_state = "green" }, /area/almayer/squads/req) +"jri" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "jrm" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -42475,6 +41614,27 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"jrB" = ( +/obj/structure/bed/chair, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"jrI" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "jrM" = ( /obj/structure/machinery/camera/autoname/almayer/containment{ dir = 4 @@ -42492,6 +41652,14 @@ icon_state = "bluefull" }, /area/almayer/living/captain_mess) +"jsu" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "jsx" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -42503,6 +41671,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"jsA" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) +"jsE" = ( +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "jsP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42533,14 +41712,9 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"jup" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5; - pixel_y = 1 - }, +"jtU" = ( /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_m_p) "juD" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -42548,12 +41722,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"juF" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "juX" = ( /obj/structure/platform_decoration{ dir = 1 @@ -42599,18 +41767,23 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) +"jvt" = ( +/obj/item/tool/warning_cone{ + pixel_x = -20; + pixel_y = 18 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice12"; + pixel_y = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "jvB" = ( /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer/no_build{ dir = 4 }, /area/almayer/command/airoom) -"jvI" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "jvM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -42653,19 +41826,35 @@ "jvY" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/telecomms) -"jwD" = ( -/obj/structure/prop/almayer/computers/sensor_computer2, +"jwi" = ( /obj/structure/machinery/door_control{ - id = "Secretroom"; - indestructible = 1; - layer = 2.5; - name = "Shutters"; - use_power = 0 + id = "InnerShutter"; + name = "Inner Shutter"; + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/toy/deck{ + pixel_x = -9 + }, +/obj/item/ashtray/plastic, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/sign/safety/intercom{ + pixel_y = -32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/panic) +"jwq" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"jwJ" = ( +/obj/structure/platform_decoration, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "jwK" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -42673,6 +41862,12 @@ icon_state = "red" }, /area/almayer/squads/alpha_bravo_shared) +"jwM" = ( +/obj/structure/largecrate/supply/floodlights, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "jxi" = ( /obj/structure/machinery/sleep_console, /turf/open/floor/almayer{ @@ -42712,6 +41907,20 @@ /obj/structure/machinery/light, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) +"jyJ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/ladder{ + height = 2; + id = "cicladder3" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 23; + pixel_y = 32 + }, +/turf/open/floor/plating/almayer, +/area/almayer/medical/medical_science) "jyR" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage{ req_one_access_txt = "7;23;27" @@ -42795,15 +42004,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"jBB" = ( -/obj/structure/surface/rack, -/obj/item/circuitboard/firealarm, -/obj/item/circuitboard, -/obj/item/clipboard, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "jBO" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -42827,6 +42027,10 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"jCg" = ( +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_s) "jCn" = ( /obj/structure/surface/table/almayer, /obj/item/tool/screwdriver, @@ -42838,6 +42042,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower/engine_core) +"jCr" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "jCK" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -42905,31 +42115,34 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"jEs" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver{ - pixel_x = -1; - pixel_y = 2 +"jEA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/stack/cable_coil{ +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/water{ pixel_x = 8; - pixel_y = -4 + pixel_y = 32 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"jEM" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "jES" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) -"jFe" = ( -/obj/structure/prop/holidays/string_lights{ - pixel_y = 27 - }, -/obj/item/frame/rack, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "jFf" = ( /obj/structure/machinery/shower{ pixel_y = 16 @@ -42956,12 +42169,14 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) -"jFh" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "cargo" +"jFt" = ( +/obj/structure/machinery/light/small, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "jFx" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/bucket{ @@ -42988,6 +42203,16 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) +"jFy" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/toolbox, +/obj/item/clipboard, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) "jFE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -42995,12 +42220,14 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"jFX" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +"jFI" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_m_s) "jFY" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -43034,6 +42261,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"jGQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "jGR" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -43047,9 +42286,8 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction{ + dir = 8 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) @@ -43062,6 +42300,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"jHn" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "jHC" = ( /turf/open/floor/almayer{ dir = 1; @@ -43093,6 +42337,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) +"jHX" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "jIo" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -43100,6 +42351,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/chief_mp_office) +"jIC" = ( +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "jIH" = ( /obj/structure/surface/rack, /obj/item/clothing/suit/straight_jacket, @@ -43113,6 +42374,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/execution) +"jIJ" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "jIT" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine/uscm/brig/chief, @@ -43153,13 +42420,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"jKh" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/effect/landmark/start/doctor, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) "jKn" = ( /turf/open/floor/almayer{ dir = 5; @@ -43248,6 +42508,12 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"jLH" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "jLK" = ( /obj/structure/machinery/light{ dir = 4 @@ -43275,29 +42541,11 @@ }, /area/almayer/living/briefing) "jMb" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, /obj/structure/sign/safety/maint{ pixel_x = 32 }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"jMi" = ( -/obj/structure/surface/table/almayer, -/obj/item/toy/deck{ - pixel_y = 14 - }, -/obj/item/trash/cigbutt/ucigbutt{ - layer = 3.7; - pixel_x = 5; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "jMm" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access = null @@ -43322,15 +42570,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"jMt" = ( -/obj/structure/sign/poster{ - pixel_y = -32 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "jMx" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -43420,22 +42659,17 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell) -"jNq" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null - }, -/obj/item/clothing/mask/rebreather/scarf/tacticalmask/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"jNt" = ( +"jNo" = ( /obj/structure/surface/rack, -/obj/item/stack/folding_barricade/three, +/obj/item/tool/shovel/etool{ + pixel_x = 6 + }, +/obj/item/tool/shovel/etool, +/obj/item/tool/wirecutters, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) "jND" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -43443,6 +42677,11 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"jNG" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/random/balaclavas, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "jNT" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/execution) @@ -43501,6 +42740,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) +"jOq" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"jOt" = ( +/obj/item/trash/barcardine, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "jOx" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -43547,18 +42796,30 @@ icon_state = "orange" }, /area/almayer/engineering/lower/engine_core) -"jPf" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "jPq" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"jPu" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "Saferoom Channel"; + pixel_x = 27 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"jPx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "jPP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -43571,6 +42832,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/chief_mp_office) +"jPU" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "jQt" = ( /turf/open/floor/almayer/research/containment/floor2{ dir = 8 @@ -43585,6 +42854,13 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) +"jRp" = ( +/obj/structure/largecrate/supply/supplies/water, +/obj/item/toy/deck{ + pixel_y = 12 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "jRz" = ( /obj/effect/step_trigger/teleporter/random{ affect_ghosts = 1; @@ -43688,13 +42964,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"jTi" = ( -/obj/item/reagent_container/glass/bucket/janibucket{ - pixel_x = -1; - pixel_y = 13 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "jTj" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -43704,12 +42973,6 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) -"jTu" = ( -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "jTB" = ( /turf/open/floor/almayer{ dir = 1; @@ -43740,6 +43003,10 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"jUh" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "jUl" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -43777,24 +43044,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) -"jUG" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) -"jUL" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "jUM" = ( /obj/structure/machinery/camera/autoname/almayer/containment{ dir = 8 @@ -43804,6 +43053,16 @@ icon_state = "dark_sterile" }, /area/almayer/medical/medical_science) +"jUV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "jUY" = ( /turf/open/floor/almayer{ icon_state = "silver" @@ -43910,7 +43169,7 @@ name = "Lobby" }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) "jXk" = ( @@ -43925,12 +43184,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"jXY" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "jYc" = ( /obj/item/bedsheet/blue{ layer = 3.2 @@ -43981,6 +43234,24 @@ icon_state = "mono" }, /area/almayer/hallways/vehiclehangar) +"jYm" = ( +/obj/item/reagent_container/food/snacks/wrapped/chunk, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) +"jYM" = ( +/obj/structure/ladder{ + height = 1; + id = "ForePortMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/lower/p_bow) "jYR" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -44006,6 +43277,21 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_four) +"jZj" = ( +/obj/structure/surface/rack, +/obj/item/book/manual/orbital_cannon_manual, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) +"jZo" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) "jZs" = ( /obj/structure/machinery/light/containment{ dir = 4 @@ -44053,12 +43339,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"jZO" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "jZU" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -44071,6 +43351,14 @@ icon_state = "redfull" }, /area/almayer/medical/upper_medical) +"kac" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/tool/hand_labeler, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "kag" = ( /obj/structure/machinery/power/fusion_engine{ name = "\improper S-52 fusion reactor 16" @@ -44107,12 +43395,6 @@ "kan" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lower_medical_medbay) -"kat" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/lower_hull/l_m_s) "kaA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -44155,12 +43437,6 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) -"kaN" = ( -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "kaS" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -44262,6 +43538,12 @@ "kcp" = ( /turf/closed/wall/almayer, /area/almayer/living/auxiliary_officer_office) +"kcs" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "kcA" = ( /obj/structure/machinery/light{ dir = 1 @@ -44271,6 +43553,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"kcG" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "kcH" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/synthcloset) @@ -44301,26 +43589,12 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"kdt" = ( -/obj/structure/machinery/door_control{ - id = "OuterShutter"; - name = "Outer Shutter"; - pixel_x = 5; - pixel_y = -2; - req_one_access_txt = "1;3" - }, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door_control{ - id = "OfficeSafeRoom"; - name = "Office Safe Room"; - pixel_x = 5; - pixel_y = 5; - req_one_access_txt = "1;3" - }, +"kdo" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_f_s) "kdv" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -44336,6 +43610,22 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"keE" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"keO" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "keR" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -44364,16 +43654,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/port) -"kfv" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/nanopaste{ - pixel_x = -3; - pixel_y = 14 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"kfB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "kfE" = ( /obj/structure/bed/sofa/south/grey/right, /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ @@ -44398,27 +43685,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"kfR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "kfU" = ( /turf/open/floor/plating, /area/almayer/powered/agent) -"kfX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "kgp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -44458,6 +43727,14 @@ /obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) +"kgD" = ( +/obj/structure/sign/safety/cryo{ + pixel_x = 35 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "kgQ" = ( /obj/structure/surface/rack, /obj/item/storage/firstaid/adv{ @@ -44501,6 +43778,15 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"khI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "khJ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -44517,20 +43803,6 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) -"khS" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"kif" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "kij" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -44575,6 +43847,14 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"kiR" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) "kiT" = ( /obj/structure/platform{ dir = 8 @@ -44639,6 +43919,12 @@ icon_state = "orangecorner" }, /area/almayer/engineering/lower/engine_core) +"kjY" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "kkk" = ( /obj/structure/machinery/power/monitor{ name = "Core Power Monitoring" @@ -44703,6 +43989,10 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"klT" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "kmd" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -44737,19 +44027,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"kmK" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/item/tool/mop, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"kmM" = ( -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "kng" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -44797,19 +44074,13 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"koz" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/lightreplacer{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/toolbox/emergency, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +"kow" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_f_p) "koB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -44843,6 +44114,11 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/engine_core) +"kpj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "kpo" = ( /obj/structure/machinery/floodlight/landing{ name = "bolted floodlight" @@ -44863,25 +44139,14 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"kpY" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/hardhat{ - pixel_y = 15 - }, -/obj/item/clothing/head/hardhat/dblue{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/item/clothing/head/hardhat{ - pixel_x = 4; - pixel_y = 7 +"kqb" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, -/obj/item/clothing/head/hardhat/orange{ - pixel_x = 7; - pixel_y = -5 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_m_p) "kqt" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -44918,6 +44183,32 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"kqB" = ( +/obj/structure/prop/holidays/string_lights{ + pixel_y = 27 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/surface/table/almayer, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"kqC" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/largecrate/random/barrel/green, +/obj/structure/sign/safety/maint{ + pixel_x = 15; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "kqK" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -44963,6 +44254,17 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) +"krG" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"krJ" = ( +/obj/item/tool/wet_sign, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "krN" = ( /obj/structure/machinery/conveyor{ id = "req_belt" @@ -45032,48 +44334,20 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"ksw" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_stern) "ksN" = ( /turf/open/floor/almayer/uscm/directional{ dir = 6 }, /area/almayer/living/briefing) -"ksP" = ( -/obj/structure/surface/table/almayer, -/obj/item/ashtray/bronze{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/ash, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = 4; - pixel_y = 13 - }, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = -7; - pixel_y = 14 - }, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = -13; - pixel_y = 8 - }, -/obj/item/trash/cigbutt/ucigbutt{ - pixel_x = -6; - pixel_y = 9 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"ktB" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_m_s) -"ktP" = ( -/obj/structure/curtain/red, +"ktR" = ( +/obj/item/trash/crushed_cup, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_m_s) "ktX" = ( /turf/open/floor/almayer{ dir = 4; @@ -45117,6 +44391,14 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"kuK" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "kvf" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -45165,14 +44447,19 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) +"kwg" = ( +/obj/structure/bookcase/manuals/medical, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "kwo" = ( /obj/structure/surface/rack, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"kwq" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "kws" = ( /obj/structure/machinery/line_nexter/med{ dir = 4 @@ -45181,15 +44468,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"kwz" = ( -/obj/structure/sign/poster{ - pixel_y = 32 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "kwQ" = ( /obj/item/tool/warning_cone{ pixel_y = 16 @@ -45201,15 +44479,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"kwS" = ( -/obj/structure/bookcase/manuals/medical, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "kxd" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -45223,6 +44492,14 @@ icon_state = "dark_sterile" }, /area/almayer/living/port_emb) +"kxe" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "kxo" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -45264,6 +44541,9 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/starboard) +"kyw" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_m_s) "kyN" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/safety/distribution_pipes{ @@ -45274,6 +44554,9 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) +"kyP" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_f_p) "kyR" = ( /obj/structure/safe/co_office, /obj/item/weapon/pole/fancy_cane, @@ -45309,6 +44592,16 @@ /obj/structure/machinery/vending/walkman, /turf/open/floor/almayer, /area/almayer/living/briefing) +"kzc" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "kzk" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -45327,6 +44620,13 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/execution) +"kzs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "kzy" = ( /obj/structure/bed/chair, /turf/open/floor/almayer{ @@ -45419,14 +44719,60 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"kAs" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"kAp" = ( +/obj/structure/surface/rack{ + desc = "A bunch of metal shelves stacked on top of eachother. Excellent for storage purposes, less so as cover. One of the shelf legs is damaged, resulting in the rack being propped up by what appears to be circuit boards." + }, +/obj/structure/machinery/light/small{ + dir = 4; + status = 3; + icon_state = "bulb-burned" + }, +/obj/effect/decal/cleanable/blood, +/obj/item/prop{ + icon = 'icons/obj/items/bloodpack.dmi'; + icon_state = "bloodpack"; + name = "blood bag"; + desc = "A blood bag with a hole in it. The rats must have gotten to it first." + }, +/obj/item/prop{ + icon = 'icons/obj/items/bloodpack.dmi'; + icon_state = "bloodpack"; + name = "blood bag"; + desc = "A blood bag with a hole in it. The rats must have gotten to it first." + }, +/obj/item/prop{ + icon = 'icons/obj/items/bloodpack.dmi'; + icon_state = "bloodpack"; + name = "blood bag"; + desc = "A blood bag with a hole in it. The rats must have gotten to it first." + }, +/obj/item/prop{ + icon = 'icons/obj/items/circuitboards.dmi'; + icon_state = "id_mod"; + name = "circuit board"; + desc = "The words \"Cloning Pod\" are scrawled onto it. It appears to be heavily damaged."; + layer = 2.78; + pixel_y = 10; + pixel_x = 8 + }, +/obj/item/prop{ + icon = 'icons/obj/items/circuitboards.dmi'; + icon_state = "id_mod"; + name = "circuit board"; + desc = "The words \"Cloning Scanner\" are scrawled onto it. It appears to be heavily damaged."; + layer = 2.79; + pixel_y = 7; + pixel_x = 8 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "sterile_green_corner" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/medical/lower_medical_medbay) +"kAv" = ( +/obj/structure/largecrate/supply/ammo/shotgun, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "kAL" = ( /obj/structure/closet/secure_closet/brig, /turf/open/floor/almayer{ @@ -45518,6 +44864,12 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"kCu" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "kCE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -45537,31 +44889,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"kCT" = ( -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"kDi" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/sign/safety/hvac_old{ +"kDd" = ( +/obj/structure/sign/safety/water{ pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"kDj" = ( -/obj/structure/bed, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" + pixel_y = -32 }, -/area/almayer/medical/lower_medical_medbay) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "kDk" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -45656,15 +44990,6 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"kEU" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "kFe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/firealarm{ @@ -45700,24 +45025,22 @@ icon_state = "plating" }, /area/almayer/squads/req) +"kFU" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "kFY" = ( /obj/structure/sign/safety/cryo{ pixel_x = 7 }, /turf/closed/wall/almayer, /area/almayer/living/cryo_cells) -"kGt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) +"kGi" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "kGu" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -45809,6 +45132,25 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"kIf" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"kIk" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = 16; + pixel_y = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"kIl" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "kIm" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -45826,11 +45168,17 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) -"kIV" = ( -/turf/open/floor/almayer{ - icon_state = "plate" +"kJc" = ( +/obj/structure/ladder{ + height = 1; + id = "ForeStarboardMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/lower/s_bow) "kJi" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -45855,18 +45203,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/engine_core) -"kJG" = ( -/obj/item/toy/deck{ - pixel_y = 12 - }, -/obj/structure/sign/safety/storage{ - pixel_x = 32 - }, -/obj/structure/surface/table/woodentable/poor, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "kJH" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -45908,6 +45244,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/commandbunks) +"kJZ" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "kKb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -45945,30 +45287,12 @@ icon_state = "silver" }, /area/almayer/command/airoom) -"kKG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "kKR" = ( /obj/structure/pipes/vents/pump{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) -"kKX" = ( -/obj/structure/machinery/conveyor{ - id = "lower_garbage" - }, -/obj/structure/plasticflaps, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" - }, -/area/almayer/hull/lower_hull/l_m_p) "kLc" = ( /obj/structure/machinery/door/airlock/almayer/maint{ req_one_access = null; @@ -45987,6 +45311,16 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"kLm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "kLp" = ( /obj/structure/sign/safety/stairs{ pixel_x = -17; @@ -46001,16 +45335,36 @@ icon_state = "red" }, /area/almayer/hallways/starboard_hallway) +"kLB" = ( +/obj/docking_port/stationary/escape_pod/east, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_s) "kLP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, /turf/open/floor/almayer{ dir = 8; icon_state = "greencorner" }, /area/almayer/squads/req) +"kLZ" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"kMa" = ( +/obj/structure/platform_decoration, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "kMp" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -46023,17 +45377,17 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"kMq" = ( -/obj/structure/sign/poster{ - desc = "It says DRUG."; - icon_state = "poster2"; - pixel_y = 30 +"kMr" = ( +/obj/item/trash/uscm_mre, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = 16; + pixel_y = -16 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_m_s) "kMH" = ( /obj/structure/machinery/door/window/brigdoor/southright{ id = "Cell 1"; @@ -46057,6 +45411,37 @@ icon_state = "outerhull_dir" }, /area/almayer/engineering/upper_engineering/port) +"kMR" = ( +/obj/effect/spawner/random/toolbox, +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"kMW" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null + }, +/obj/item/clothing/suit/chef/classic, +/obj/item/tool/kitchen/knife/butcher, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) +"kNf" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "kNk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -46069,6 +45454,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"kNq" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_a_p) "kNx" = ( /obj/structure/sign/safety/ref_bio_storage{ pixel_x = -17; @@ -46119,19 +45507,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room) -"kOf" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"kOk" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "kOv" = ( /obj/structure/machinery/light{ dir = 8 @@ -46169,6 +45544,40 @@ icon_state = "dark_sterile" }, /area/almayer/command/corporateliaison) +"kOJ" = ( +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"kOR" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"kOW" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/squads/req) "kPx" = ( /obj/structure/surface/table/almayer, /obj/item/device/mass_spectrometer, @@ -46247,6 +45656,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"kQr" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/pistachios, +/obj/item/tool/lighter/random{ + pixel_x = 13 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "kQu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46258,19 +45675,6 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"kQz" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig Maintenance" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "kRd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46286,18 +45690,21 @@ icon_state = "cargo" }, /area/almayer/command/lifeboat) -"kRu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"kRk" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = -7; + pixel_y = 12 }, -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = -16; - pixel_y = 17 +/obj/item/weapon/gun/rifle/l42a{ + pixel_x = 17; + pixel_y = 6 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "kRD" = ( /obj/item/reagent_container/glass/bucket/janibucket, /obj/structure/machinery/light{ @@ -46315,6 +45722,13 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) +"kRN" = ( +/obj/structure/surface/rack, +/obj/item/clothing/glasses/meson, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "kRP" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/item/prop/magazine/dirty/torn, @@ -46324,14 +45738,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"kSd" = ( -/obj/item/cell/high/empty, -/obj/item/cell/high/empty, -/obj/structure/surface/rack, +"kSn" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/p_bow) "kSv" = ( /obj/item/reagent_container/glass/bucket/janibucket, /turf/open/floor/almayer{ @@ -46395,12 +45810,6 @@ icon_state = "plating" }, /area/almayer/squads/req) -"kTq" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "kTv" = ( /obj/structure/machinery/light{ dir = 4 @@ -46410,20 +45819,6 @@ icon_state = "tcomms" }, /area/almayer/command/telecomms) -"kTM" = ( -/obj/item/frame/rack{ - layer = 3.1; - pixel_y = 19 - }, -/obj/structure/surface/rack, -/obj/item/tool/weldpack{ - pixel_x = 5 - }, -/obj/item/tool/weldpack{ - pixel_x = -2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "kTN" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -46452,17 +45847,6 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"kUt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "kUw" = ( /obj/structure/surface/rack, /obj/item/storage/bag/trash{ @@ -46481,6 +45865,15 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) +"kUL" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "kUQ" = ( /obj/effect/decal/cleanable/blood/oil/streak, /obj/structure/machinery/constructable_frame, @@ -46508,16 +45901,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) -"kVX" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "OfficeSafeRoom"; - name = "\improper Office Safe Room" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "kVZ" = ( /obj/structure/machinery/door/window/brigdoor/southright{ id = "Cell 2"; @@ -46550,6 +45933,14 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) +"kWI" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_s) "kWN" = ( /obj/structure/sign/poster{ desc = "It says DRUG."; @@ -46582,16 +45973,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"kWY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "kXa" = ( /obj/structure/machinery/cm_vending/clothing/marine/bravo{ density = 0; @@ -46645,15 +46026,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"kXJ" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "kXN" = ( /obj/item/clothing/glasses/sunglasses/aviator{ pixel_x = -1; @@ -46663,16 +46035,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"kYa" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "OuterShutter"; - name = "\improper Saferoom Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "kYt" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/storage/bible{ @@ -46749,12 +46111,6 @@ icon_state = "orange" }, /area/almayer/hallways/port_umbilical) -"kZH" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "kZN" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -46792,13 +46148,6 @@ icon_state = "emerald" }, /area/almayer/living/gym) -"lau" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 7; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "laM" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -46820,6 +46169,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"laP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "laQ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -46854,29 +46210,6 @@ }, /turf/open/floor/plating, /area/almayer/command/cic) -"laY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 4; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"lbb" = ( -/obj/structure/surface/table/almayer, -/obj/item/organ/heart/prosthetic{ - pixel_x = -4 - }, -/obj/item/circuitboard{ - pixel_x = 12; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "lbf" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -46981,14 +46314,9 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"ldN" = ( -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) +"ldF" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "lea" = ( /obj/structure/sink{ dir = 4; @@ -47025,16 +46353,6 @@ icon_state = "emerald" }, /area/almayer/hallways/hangar) -"leh" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "let" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -47045,6 +46363,12 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"leM" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "leY" = ( /obj/structure/bed/sofa/south/white/left, /turf/open/floor/almayer{ @@ -47060,6 +46384,9 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"lfx" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "lfH" = ( /obj/structure/machinery/light{ dir = 4 @@ -47069,6 +46396,12 @@ icon_state = "blue" }, /area/almayer/living/basketball) +"lgk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "lgt" = ( /obj/structure/sink{ dir = 4; @@ -47127,33 +46460,21 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"lgY" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +"lhj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/safety/bulkhead_door{ + pixel_y = -34 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/p_bow) "lht" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"lhu" = ( -/obj/structure/coatrack, -/obj/structure/sign/poster/clf{ - pixel_x = -28 - }, -/obj/structure/sign/nosmoking_1{ - pixel_y = 30 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "lhv" = ( /obj/structure/machinery/door_control{ id = "CMO Shutters"; @@ -47189,19 +46510,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"lhL" = ( -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"lhW" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "lhX" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -47209,6 +46517,24 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"lia" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"lib" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "lid" = ( /obj/structure/machinery/chem_master{ vial_maker = 1 @@ -47234,6 +46560,18 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"liF" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet, +/obj/item/clothing/under/marine, +/obj/item/clothing/suit/storage/marine, +/obj/item/clothing/head/helmet/marine, +/obj/item/clothing/head/cmcap, +/obj/item/clothing/head/cmcap, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "liJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -47276,20 +46614,30 @@ icon_state = "plate" }, /area/almayer/living/gym) +"ljm" = ( +/obj/item/clothing/gloves/botanic_leather{ + name = "leather gloves" + }, +/obj/item/clothing/gloves/botanic_leather{ + name = "leather gloves" + }, +/obj/item/clothing/gloves/botanic_leather{ + name = "leather gloves" + }, +/obj/structure/closet/crate, +/obj/item/clothing/suit/storage/hazardvest/black, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "ljs" = ( /obj/effect/landmark/start/marine/spec/bravo, /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"ljt" = ( -/obj/structure/machinery/door_control/cl/quarter/backdoor{ - pixel_x = -25; - pixel_y = 23 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) +"ljv" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_a_p) "ljG" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_container/food/condiment/coldsauce, @@ -47333,6 +46681,16 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"lka" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "lkd" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -47418,22 +46776,19 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"llM" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "llO" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "orange" }, /area/almayer/hallways/hangar) -"lmk" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"lmi" = ( +/obj/structure/bed, +/obj/item/bedsheet/green, +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/medical/upper_medical) "lml" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -47441,6 +46796,13 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) +"lmq" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "lmw" = ( /obj/structure/closet/l3closet/general, /obj/structure/machinery/light{ @@ -47495,6 +46857,10 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) +"lnD" = ( +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_a_s) "lnP" = ( /obj/structure/machinery/vending/cola, /obj/structure/window/reinforced, @@ -47595,6 +46961,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/starboard) +"loE" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "loK" = ( /obj/structure/closet/crate/medical, /obj/item/storage/firstaid/adv, @@ -47654,6 +47023,15 @@ icon_state = "cargo" }, /area/almayer/living/commandbunks) +"lpl" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + dir = 2; + name = "\improper Security Checkpoint" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) "lpt" = ( /turf/open/floor/almayer{ icon_state = "blue" @@ -47678,30 +47056,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"lpS" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"lpX" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "lqF" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"lqI" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "lqJ" = ( /obj/structure/sign/safety/escapepod{ pixel_y = -32 @@ -47733,35 +47093,24 @@ icon_state = "orange" }, /area/almayer/living/port_emb) -"lra" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Disposals" - }, -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_p) -"lrb" = ( -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) -"lre" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "lrq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/armory) +"lrE" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/s_bow) "lrF" = ( /obj/structure/machinery/light, /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"lrH" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "lrT" = ( /obj/structure/bed/chair, /turf/open/floor/almayer, @@ -47785,10 +47134,15 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"lsb" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +"lsh" = ( +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "lsn" = ( /obj/structure/surface/table/almayer, /obj/item/paper{ @@ -47800,6 +47154,12 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"lso" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "lsp" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Conference Room" @@ -47852,12 +47212,28 @@ /obj/effect/landmark/start/working_joe, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/airoom) +"ltm" = ( +/obj/structure/bed/chair/comfy/orange, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "lto" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"ltw" = ( +/obj/structure/largecrate/supply, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"lty" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "ltA" = ( /obj/item/tool/weldingtool, /turf/open/floor/almayer, @@ -47871,13 +47247,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"ltK" = ( -/obj/structure/window/framed/almayer, -/obj/structure/curtain/open/shower{ - name = "hypersleep curtain" - }, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) "ltU" = ( /obj/structure/bed/chair{ dir = 8 @@ -47886,16 +47255,6 @@ icon_state = "plate" }, /area/almayer/command/combat_correspondent) -"luk" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/item/clothing/head/helmet/marine/tech/tanker, -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "lul" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ @@ -47907,18 +47266,6 @@ icon_state = "test_floor4" }, /area/almayer/living/commandbunks) -"luu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "luz" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -47929,6 +47276,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"luE" = ( +/obj/structure/sign/poster{ + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "luS" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/cardboard{ @@ -48002,17 +47355,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"lwi" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - dir = 1; - req_one_access = null; - req_one_access_txt = "2;7" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_a_p) "lwm" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -48056,6 +47398,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) +"lwY" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "lxo" = ( /obj/structure/sign/safety/hazard{ pixel_x = -17; @@ -48097,14 +47447,6 @@ icon_state = "plate" }, /area/almayer/living/auxiliary_officer_office) -"lyi" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/pistachios, -/obj/item/tool/lighter/random{ - pixel_x = 13 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "lyk" = ( /obj/structure/sign/safety/storage{ pixel_x = -17 @@ -48114,12 +47456,31 @@ icon_state = "green" }, /area/almayer/squads/req) +"lym" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "lyw" = ( /obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"lyz" = ( +/obj/structure/surface/table/almayer, +/obj/item/organ/heart/prosthetic{ + pixel_x = -4 + }, +/obj/item/circuitboard{ + pixel_x = 12; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "lyE" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -48127,6 +47488,15 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"lyP" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) +"lyW" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_m_p) "lyX" = ( /obj/structure/machinery/cm_vending/clothing/senior_officer{ req_access = null; @@ -48163,14 +47533,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"lzn" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "lzq" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -48186,21 +47548,25 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"lzH" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "lzY" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/chief_mp_office) +"lAa" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/lightreplacer{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/toolbox/emergency, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "lAl" = ( /turf/open/floor/almayer{ dir = 4; @@ -48225,12 +47591,6 @@ }, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"lAA" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_p) "lAO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48238,15 +47598,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"lAP" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "lAQ" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -48259,18 +47610,18 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"lAU" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) "lBg" = ( /obj/structure/bedsheetbin, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"lBl" = ( +/obj/structure/sink{ + pixel_y = 24 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "lBv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -48283,6 +47634,17 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"lBw" = ( +/obj/structure/machinery/cryopod{ + pixel_y = 6 + }, +/obj/structure/sign/safety/cryo{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_m_p) "lBz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48290,21 +47652,23 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"lBF" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, -/obj/item/clipboard, +"lBB" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "plate" }, -/area/almayer/squads/req) -"lBR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +/area/almayer/maint/upper/u_m_s) +"lCm" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "lCp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -48339,6 +47703,12 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) +"lDa" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_29" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "lDg" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "laddernorthwest"; @@ -48360,6 +47730,13 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"lDA" = ( +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "lDJ" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -48376,6 +47753,7 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 8; icon_state = "plating_striped" @@ -48399,6 +47777,15 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"lDT" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "lDV" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, @@ -48451,12 +47838,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"lFb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "lFe" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -48493,6 +47874,16 @@ "lFp" = ( /turf/closed/wall/almayer, /area/almayer/engineering/lower/workshop/hangar) +"lFr" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "lFt" = ( /obj/structure/machinery/portable_atmospherics/powered/pump, /obj/structure/sign/safety/maint{ @@ -48515,21 +47906,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"lFF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -15 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "lFJ" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ name = "\improper Brig Prisoner Yard"; @@ -48573,61 +47949,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"lGr" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) -"lGu" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"lGG" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Starboard Viewing Room" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) -"lGL" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = -32 - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"lHc" = ( -/obj/effect/landmark/start/doctor, -/obj/structure/sign/safety/maint{ - pixel_y = 26 +"lHk" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) +/area/almayer/maint/hull/upper/s_bow) "lHu" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "greencorner" }, /area/almayer/living/grunt_rnr) +"lHB" = ( +/obj/structure/prop/almayer/computers/sensor_computer3, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "lHG" = ( /obj/structure/machinery/door/airlock/almayer/maint{ access_modified = 1; @@ -48642,35 +47982,9 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) -"lIa" = ( -/obj/item/robot_parts/arm/l_arm, -/obj/item/robot_parts/leg/l_leg, -/obj/item/robot_parts/arm/r_arm, -/obj/item/robot_parts/leg/r_leg, -/obj/structure/surface/rack, -/obj/effect/decal/cleanable/cobweb{ - dir = 8 - }, -/obj/item/book/manual/robotics_cyborgs{ - pixel_y = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/synthcloset) -"lIh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"lIl" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Armourer's Workshop"; - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) +"lIj" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/upper/mess) "lIp" = ( /obj/structure/bed/chair/comfy/beige{ dir = 1 @@ -48697,26 +48011,18 @@ icon_state = "mono" }, /area/almayer/engineering/port_atmos) +"lIQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "lIU" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/port) -"lIV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) -"lJg" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "lJu" = ( /obj/structure/barricade/metal{ dir = 1 @@ -48780,6 +48086,12 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/cells) +"lJM" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "lJO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48848,10 +48160,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"lLV" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "lMb" = ( /turf/open/floor/almayer{ dir = 5; @@ -48880,6 +48188,10 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, /turf/open/floor/almayer{ dir = 8; icon_state = "plating_striped" @@ -48891,6 +48203,14 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) +"lMO" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "lMY" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -48900,6 +48220,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"lNk" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "lNl" = ( /turf/open/floor/almayer{ dir = 6; @@ -48921,15 +48247,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"lNy" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "lNN" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/almayer{ @@ -49033,6 +48350,10 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"lPW" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "lQa" = ( /obj/structure/machinery/light{ dir = 8 @@ -49045,31 +48366,18 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"lQj" = ( -/obj/structure/machinery/door_control{ - id = "InnerShutter"; - name = "Inner Shutter"; - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/toy/deck{ - pixel_x = -9 - }, -/obj/item/ashtray/plastic, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/sign/safety/intercom{ - pixel_y = -32 +"lQf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/lower_hull/l_f_s) -"lQu" = ( -/obj/structure/bed/stool, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_f_p) "lQz" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/almayer{ @@ -49125,6 +48433,10 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"lRt" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "lRE" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_sn_full_cap" @@ -49178,12 +48490,21 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) -"lSD" = ( -/obj/structure/closet/firecloset, +"lSJ" = ( +/obj/structure/machinery/light/small, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/s_bow) +"lSX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "lTt" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -49203,10 +48524,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/chapel) -"lTK" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "lUm" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ name = "\improper Brig Cells"; @@ -49219,19 +48536,14 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/processing) -"lUz" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"lUA" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 +"lUQ" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/obj/item/weapon/gun/rifle/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_a_s) "lVl" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, @@ -49240,6 +48552,17 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"lVR" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "lVS" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -49250,6 +48573,17 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"lVW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "lVX" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/overwatch/almayer{ @@ -49271,12 +48605,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"lWh" = ( -/obj/structure/machinery/pipedispenser/orderable, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "lWr" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -49284,6 +48612,25 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"lWt" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"lWO" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) +"lWY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "lXb" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -49303,15 +48650,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"lXF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/cryo{ - pixel_x = 36 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "lXO" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -49326,6 +48664,10 @@ icon_state = "green" }, /area/almayer/living/offices) +"lYg" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "lYi" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply, @@ -49340,17 +48682,14 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"lYu" = ( -/obj/item/tool/wet_sign, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +"lYt" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) -"lYA" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_a_p) "lYL" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -49368,6 +48707,18 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"lZb" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "lZs" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/radio/intercom{ @@ -49390,38 +48741,32 @@ icon_state = "plate" }, /area/almayer/command/cic) -"lZB" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 8; - pixel_y = 32 +"lZI" = ( +/obj/structure/prop/invuln/lattice_prop{ + dir = 1; + icon_state = "lattice-simple"; + pixel_x = -16; + pixel_y = 17 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"lZO" = ( -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2" +/area/almayer/maint/hull/lower/l_m_p) +"lZM" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"lZZ" = ( -/obj/structure/machinery/autolathe/medilathe/full, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/medical/hydroponics) -"maw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, +/area/almayer/maint/lower/cryo_cells) +"lZZ" = ( +/obj/structure/machinery/autolathe/medilathe/full, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/medical/hydroponics) "maI" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -49430,6 +48775,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"maK" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "maL" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/protein_pack, @@ -49468,6 +48817,10 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"mbR" = ( +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_p) "mce" = ( /turf/open/floor/almayer{ icon_state = "greencorner" @@ -49482,13 +48835,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"mcV" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wirecutters, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "mcW" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/gloves, @@ -49519,6 +48865,19 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"mem" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "meu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -49543,53 +48902,32 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"meN" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Under Construction Shutters"; - name = "\improper Construction Site" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"meT" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" }, -/area/almayer/hull/lower_hull/l_f_p) -"meS" = ( -/obj/structure/sign/safety/water{ - pixel_x = -17 +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_f_s) "meY" = ( /turf/closed/wall/almayer{ damage_cap = 15000 }, /area/almayer/squads/alpha) -"mfe" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"mfI" = ( -/obj/structure/ladder{ - height = 1; - id = "AftPortMaint" +"mfH" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/upper/u_a_s) "mfM" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -49609,6 +48947,19 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"mfR" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/tool/pen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) +"mgb" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "mgd" = ( /obj/structure/machinery/autolathe/armylathe/full, /turf/open/floor/almayer{ @@ -49654,6 +49005,14 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"mgX" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "mha" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -49671,16 +49030,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"mhl" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice13"; - pixel_x = 16; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "mhm" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -49734,12 +49083,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"miK" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "miV" = ( /obj/structure/sign/safety/rewire{ pixel_x = -17; @@ -49756,20 +49099,32 @@ /area/almayer/command/cic) "mji" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"mjs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "mjt" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"mjR" = ( -/obj/structure/largecrate/random/secure, +"mjy" = ( +/obj/structure/machinery/conveyor_switch{ + id = "lower_garbage" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_p) "mjS" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -49854,16 +49209,12 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/workshop/hangar) -"mko" = ( -/obj/item/tool/weldpack{ - pixel_y = 15 - }, -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/welding, +"mkF" = ( +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/p_bow) "mkG" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -49938,18 +49289,6 @@ icon_state = "redfull" }, /area/almayer/living/cryo_cells) -"mlp" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Starboard Railguns and Viewing Room" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_s) "mlz" = ( /obj/structure/platform_decoration{ dir = 1 @@ -49981,12 +49320,6 @@ icon_state = "test_floor4" }, /area/almayer/command/corporateliaison) -"mmC" = ( -/obj/structure/closet/secure_closet/engineering_welding{ - req_one_access_txt = "7;23;27" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "mmN" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -49999,33 +49332,11 @@ /obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) -"mnf" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/squads/req) "mng" = ( /turf/open/floor/almayer{ icon_state = "redcorner" }, /area/almayer/living/briefing) -"mni" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wrench{ - pixel_y = 2 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"mnm" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "mnA" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -50071,10 +49382,21 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) -"moh" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"moc" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) +"moq" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_p) "mor" = ( /obj/structure/machinery/light{ dir = 8 @@ -50094,19 +49416,33 @@ "moB" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/cells) -"moE" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "moI" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha_bravo_shared) +"moK" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) +"moL" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/emails{ + dir = 1; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/tool/kitchen/utensil/fork{ + pixel_x = -9; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "moM" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -50118,10 +49454,18 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"moY" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/almayer, -/area/almayer/squads/req) +"mph" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "mpn" = ( /obj/structure/pipes/vents/pump, /obj/structure/surface/table/almayer, @@ -50185,17 +49529,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_two) -"mrc" = ( -/obj/item/reagent_container/glass/bucket, -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = 24 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "mru" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -50203,15 +49536,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"mrB" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "mrD" = ( /obj/structure/machinery/light{ dir = 1 @@ -50284,16 +49608,22 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"msC" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 8; + req_one_access = list(2,34,30) + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) "msP" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"msV" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "msZ" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -50326,17 +49656,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"mts" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "mtD" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -50347,19 +49666,6 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"mtE" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/sign/safety/east{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/coffee{ - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "mtM" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -50429,6 +49735,19 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"mvg" = ( +/obj/docking_port/stationary/escape_pod/west, +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_p) +"mvi" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/revolver/m44{ + desc = "A bulky revolver, occasionally carried by assault troops and officers in the Colonial Marines, as well as civilian law enforcement. Fires .44 Magnum rounds. 'J.P' Is engraved into the barrel." + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "mvl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50515,6 +49834,11 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"mwP" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "mwQ" = ( /obj/structure/machinery/landinglight/ds1/delayone{ dir = 4 @@ -50535,26 +49859,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/stair_clone/upper) -"mxL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/autoopenclose{ - pixel_y = 32 - }, -/obj/structure/sign/safety/water{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "mxT" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -50562,6 +49866,13 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) +"mxV" = ( +/obj/structure/sign/safety/autoopenclose{ + pixel_x = 7; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "myl" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; @@ -50575,13 +49886,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"myn" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/power/apc/almayer, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "myo" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/head/soft/purple, @@ -50590,14 +49894,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"myC" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "myJ" = ( /obj/structure/machinery/light{ dir = 4 @@ -50622,7 +49918,7 @@ "mza" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 2; - id = "firearm_storage_armory"; + id = "bot_armory"; name = "\improper Armory Shutters" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -50646,29 +49942,11 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/armory) -"mzb" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "mzg" = ( /turf/open/floor/almayer{ icon_state = "emerald" }, /area/almayer/squads/charlie) -"mzo" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_p) "mzq" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -50701,6 +49979,15 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"mzI" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/sign/safety/storage{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "mzR" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -50745,18 +50032,6 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"mBb" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "mBc" = ( /obj/structure/bed/chair{ dir = 8 @@ -50777,12 +50052,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/pilotbunks) -"mBk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "mBp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50812,19 +50081,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"mBA" = ( -/obj/structure/surface/table/almayer, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - pixel_y = 11 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "mBJ" = ( /obj/structure/stairs{ icon_state = "ramptop" @@ -50848,6 +50104,15 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) +"mCE" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "mCL" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -50871,6 +50136,13 @@ icon_state = "green" }, /area/almayer/squads/req) +"mDz" = ( +/obj/structure/machinery/shower{ + pixel_y = 16 + }, +/obj/item/tool/soap, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "mDJ" = ( /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) @@ -51016,6 +50288,9 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"mFQ" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/lower/s_bow) "mGe" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, @@ -51026,11 +50301,6 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"mGL" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "mGT" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -51127,6 +50397,17 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"mHF" = ( +/obj/structure/surface/rack, +/obj/item/clothing/head/headband/red{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/clothing/glasses/regular/hipster, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "mHO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light, @@ -51134,13 +50415,17 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) -"mHR" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"mId" = ( +/obj/structure/closet, +/obj/item/clothing/suit/armor/riot/marine/vintage_riot, +/obj/item/clothing/head/helmet/riot/vintage_riot, +/obj/structure/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "mIy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -51164,16 +50449,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"mIB" = ( -/obj/structure/machinery/cm_vending/sorted/medical/marinemed, -/obj/structure/sign/safety/medical{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "mIJ" = ( /obj/structure/sign/safety/ladder{ pixel_x = -16 @@ -51254,6 +50529,9 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) +"mJO" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_m_p) "mJP" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -51280,10 +50558,6 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"mKf" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "mKi" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -51299,6 +50573,17 @@ "mKq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/bridgebunks) +"mKs" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "mKw" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -51425,6 +50710,17 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) +"mLN" = ( +/obj/structure/machinery/light/small, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "mLR" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -51465,10 +50761,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"mNf" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "mNm" = ( /obj/structure/platform{ dir = 8 @@ -51492,41 +50784,26 @@ icon_state = "red" }, /area/almayer/shipboard/brig/perma) -"mNR" = ( -/obj/structure/surface/rack, -/obj/item/storage/toolbox/mechanical, -/obj/item/tool/hand_labeler, -/turf/open/floor/almayer{ - icon_state = "plate" +"mNS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/weapons/m39{ + pixel_x = 2 }, -/area/almayer/hull/upper_hull/u_f_s) -"mNW" = ( -/obj/structure/platform{ - dir = 4 +/obj/structure/largecrate/supply/weapons/m41a{ + layer = 3.1; + pixel_x = 6; + pixel_y = 17 }, -/obj/item/storage/firstaid/rad, -/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_m_s) "mNX" = ( /turf/open/floor/almayer_hull{ dir = 4; icon_state = "outerhull_dir" }, /area/space/almayer/lifeboat_dock) -"mNZ" = ( -/obj/item/trash/uscm_mre, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice1"; - pixel_x = 16; - pixel_y = -16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "mOb" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -51550,6 +50827,14 @@ "mOi" = ( /turf/closed/wall/almayer/outer, /area/almayer/command/airoom) +"mOE" = ( +/obj/structure/sign/safety/water{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "mOL" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -51560,12 +50845,22 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"mOU" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"mOR" = ( +/obj/structure/surface/rack, +/obj/item/roller, +/obj/item/roller, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) +"mPc" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/l_a_p) "mPf" = ( /turf/open/floor/almayer/uscm/directional{ dir = 6 @@ -51598,6 +50893,27 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) +"mPw" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"mPK" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/obj/structure/sign/safety/storage{ + pixel_y = 7; + pixel_x = -17 + }, +/obj/structure/sign/safety/commline_connection{ + pixel_x = -17; + pixel_y = -7 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) "mPR" = ( /obj/structure/machinery/light{ dir = 8 @@ -51639,18 +50955,16 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"mQV" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +"mQY" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"mQW" = ( -/obj/structure/bed/chair{ - dir = 8 +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_m_s) "mRl" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -51689,17 +51003,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"mRp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = -28 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "mRq" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -51719,6 +51022,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"mRI" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) "mRQ" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -51745,6 +51054,9 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"mRU" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_m_p) "mRW" = ( /turf/open/floor/almayer/research/containment/corner1, /area/almayer/medical/containment/cell/cl) @@ -51754,6 +51066,10 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"mSr" = ( +/obj/effect/landmark/crap_item, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "mSs" = ( /obj/structure/machinery/light{ dir = 8 @@ -51780,21 +51096,13 @@ icon_state = "test_floor5" }, /area/almayer/medical/hydroponics) -"mSP" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "officers_mess"; - name = "\improper Privacy Shutters" - }, -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - access_modified = 1; - req_one_access = null; - req_one_access_txt = "19;30" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"mSM" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "mSU" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -51857,6 +51165,15 @@ icon_state = "cargo_arrow" }, /area/almayer/medical/hydroponics) +"mTL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "mTN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -51870,14 +51187,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"mUn" = ( -/obj/structure/machinery/conveyor_switch{ - id = "lower_garbage" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "mUq" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -51914,12 +51223,35 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"mUQ" = ( -/obj/structure/largecrate/random/barrel/red, +"mUE" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_f_s) +"mUL" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"mUY" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_m_s) +"mVh" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "mVr" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -51930,6 +51262,17 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"mVA" = ( +/obj/item/reagent_container/glass/bucket, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "mVE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -51952,6 +51295,21 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"mVF" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "officers_mess"; + name = "\improper Privacy Shutters" + }, +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + req_one_access = null; + req_one_access_txt = "19;30" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) "mWs" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -52022,12 +51380,12 @@ "mXj" = ( /turf/closed/wall/almayer, /area/almayer/living/commandbunks) -"mYs" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +"mXm" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "mYv" = ( /obj/structure/disposalpipe/sortjunction{ dir = 4; @@ -52073,6 +51431,24 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"mZc" = ( +/obj/structure/sign/poster/blacklight{ + pixel_y = 35 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/reagent_dispensers/beerkeg/alt_dark{ + anchored = 1; + chemical = null; + density = 0; + pixel_x = -7; + pixel_y = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "mZf" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -52147,12 +51523,6 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"naf" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "nar" = ( /obj/structure/toilet{ dir = 4 @@ -52278,18 +51648,31 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"ndx" = ( -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 15; - pixel_y = 32 +"ncV" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/welding, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/sign/safety/west{ - pixel_y = 32 +/area/almayer/maint/hull/upper/u_a_s) +"ndl" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_p) +"ndm" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "ndJ" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -52299,28 +51682,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"ndM" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice1"; - pixel_x = 16; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"ndQ" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "ndZ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/flashlight/lamp, @@ -52372,6 +51733,12 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"neH" = ( +/obj/item/trash/cigbutt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "neO" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -52413,17 +51780,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"nfI" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"nfS" = ( -/obj/item/reagent_container/food/snacks/wrapped/chunk, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "ngf" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -52469,12 +51825,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) -"ngs" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "ngw" = ( /obj/structure/surface/rack, /obj/item/mortar_shell/frag, @@ -52559,12 +51909,6 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"nho" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "nhr" = ( /obj/structure/ladder{ height = 1; @@ -52575,6 +51919,10 @@ icon_state = "plating" }, /area/almayer/engineering/lower/workshop) +"nhw" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nhx" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/toy/deck{ @@ -52618,6 +51966,15 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"nhV" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"nic" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/stern) "nig" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -52665,6 +52022,15 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"niF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/medical/medical_science) "niL" = ( /obj/structure/machinery/light{ dir = 1 @@ -52722,6 +52088,9 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) +"njn" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/upper/u_m_s) "njy" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -52753,16 +52122,12 @@ icon_state = "emerald" }, /area/almayer/hallways/port_hallway) -"njT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 +"njO" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/shipboard/panic) "nka" = ( /obj/structure/machinery/door/poddoor/railing{ dir = 2; @@ -52776,6 +52141,13 @@ icon_state = "cargo_arrow" }, /area/almayer/hallways/vehiclehangar) +"nkj" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "nkn" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -52832,6 +52204,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"nlh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "nlz" = ( /obj/structure/machinery/brig_cell/cell_3{ pixel_x = 32; @@ -52871,6 +52249,18 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"nmp" = ( +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/west{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "nmx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -52912,12 +52302,6 @@ "nmY" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/engineering/lower/workshop/hangar) -"nnc" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "nne" = ( /obj/structure/ladder{ height = 2; @@ -52927,23 +52311,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"nnr" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/electrical{ - pixel_y = 9 - }, -/obj/item/storage/toolbox/mechanical/green, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "nny" = ( /obj/structure/sign/safety/rewire{ pixel_x = -17; @@ -52962,10 +52329,18 @@ icon_state = "plate" }, /area/almayer/stair_clone/upper) -"nnF" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +"nnH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/secure{ + pixel_x = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "nnL" = ( /obj/structure/toilet{ dir = 8 @@ -53013,6 +52388,18 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"noy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) +"noE" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "noP" = ( /obj/structure/machinery/light{ dir = 1 @@ -53023,13 +52410,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower) -"noV" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "nph" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -53097,12 +52477,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"nqD" = ( -/obj/item/ammo_box/magazine/misc/mre, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "nqG" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -53120,9 +52494,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"nqU" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "nqV" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -53141,6 +52512,17 @@ icon_state = "plate" }, /area/almayer/engineering/lower) +"nrb" = ( +/obj/item/robot_parts/arm/l_arm, +/obj/item/robot_parts/leg/l_leg, +/obj/item/robot_parts/arm/r_arm, +/obj/item/robot_parts/leg/r_leg, +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/cobweb{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/synthcloset) "nri" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/working_joe{ @@ -53175,14 +52557,6 @@ icon_state = "emeraldcorner" }, /area/almayer/squads/charlie) -"nrz" = ( -/obj/structure/surface/rack, -/obj/item/tool/kitchen/rollingpin, -/obj/item/tool/hatchet, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "nrN" = ( /obj/structure/machinery/sleep_console, /turf/open/floor/almayer{ @@ -53204,20 +52578,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) -"nsu" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "safe_armory"; - name = "\improper Hangar Armory Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"nsd" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/lights/bulbs{ + pixel_x = 3; + pixel_y = 7 }, -/area/almayer/hull/lower_hull/l_f_s) +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "nsQ" = ( /obj/structure/sink{ dir = 4; @@ -53287,14 +52656,6 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) -"ntA" = ( -/obj/structure/machinery/light/small, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "ntI" = ( /obj/structure/machinery/light{ dir = 4 @@ -53310,18 +52671,6 @@ icon_state = "green" }, /area/almayer/living/starboard_garden) -"nun" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "nux" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -53360,12 +52709,19 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"nuY" = ( -/obj/structure/closet, +"nvd" = ( +/turf/open/floor/almayer{ + dir = 6; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) +"nve" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_m_p) "nvG" = ( /obj/structure/machinery/light{ dir = 8 @@ -53384,6 +52740,14 @@ icon_state = "dark_sterile" }, /area/almayer/living/numbertwobunks) +"nvI" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "nvM" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -53403,6 +52767,18 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"nvX" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/stack/cable_coil{ + pixel_x = 8; + pixel_y = -4 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "nwb" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -53420,23 +52796,22 @@ dir = 4 }, /area/almayer/medical/containment/cell) -"nwu" = ( -/obj/structure/closet/crate/freezer{ - desc = "A freezer crate. Someone has written 'open on christmas' in marker on the top." - }, -/obj/item/reagent_container/food/snacks/mre_pack/xmas2, -/obj/item/reagent_container/food/snacks/mre_pack/xmas1, -/obj/item/reagent_container/food/snacks/mre_pack/xmas3, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "nwx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"nwA" = ( +/obj/structure/largecrate/supply/generator, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "nwD" = ( /turf/open/floor/almayer{ dir = 1; @@ -53447,6 +52822,7 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ dir = 8; icon_state = "plating_striped" @@ -53459,6 +52835,10 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"nwT" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "nwU" = ( /obj/structure/machinery/light{ dir = 4 @@ -53496,15 +52876,22 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop) -"nxc" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"nxe" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/effect/spawner/random/toolbox, +/obj/item/stack/sheet/metal{ + desc = "Semiotic Standard denoting the nearby presence of coffee: the lifeblood of any starship crew."; + icon = 'icons/obj/structures/props/semiotic_standard.dmi'; + icon_state = "coffee"; + name = "coffee semiotic"; + pixel_x = 20; + pixel_y = 12; + singular_name = "coffee semiotic" }, -/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_a_p) "nxx" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -53556,17 +52943,6 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"nyz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "nyG" = ( /turf/open/floor/almayer{ dir = 1; @@ -53624,6 +53000,10 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) +"nAm" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "nAY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53646,12 +53026,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"nBc" = ( -/obj/structure/largecrate/random, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "nBi" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp{ @@ -53680,6 +53054,15 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) +"nBF" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"nBJ" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/s_bow) "nBK" = ( /turf/open/floor/almayer{ dir = 8; @@ -53743,6 +53126,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"nCM" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "nCR" = ( /obj/structure/sink{ dir = 4; @@ -53778,19 +53167,6 @@ icon_state = "tcomms" }, /area/almayer/engineering/lower/engine_core) -"nDd" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "nDo" = ( /obj/structure/closet/l3closet/general, /obj/structure/window/reinforced{ @@ -53821,6 +53197,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"nEc" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"nEl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nEo" = ( /obj/structure/surface/table/almayer, /obj/item/storage/donut_box{ @@ -53835,23 +53223,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_umbilical) -"nEz" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"nEA" = ( -/obj/structure/prop/holidays/string_lights{ - pixel_y = 27 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/box/drinkingglasses, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "nEF" = ( /obj/structure/machinery/conveyor_switch{ id = "gym_1"; @@ -53859,13 +53230,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"nEG" = ( -/obj/structure/largecrate/random/case, -/obj/structure/machinery/access_button/airlock_exterior, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "nEH" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -53889,6 +53253,16 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"nEO" = ( +/mob/living/simple_animal/mouse/brown, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) +"nEZ" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "nFm" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/surgery/scalpel, @@ -53982,12 +53356,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"nGc" = ( -/obj/structure/machinery/vending/hydroseeds, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "nGh" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -54007,15 +53375,48 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"nGk" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) +"nGM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "nGY" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north2) -"nHF" = ( -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_s) +"nGZ" = ( +/obj/structure/largecrate/supply/supplies/water, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) +"nHu" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"nHG" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "nHJ" = ( /obj/structure/machinery/light{ dir = 8 @@ -54039,6 +53440,16 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) +"nHX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "nIj" = ( /turf/open/floor/almayer{ icon_state = "green" @@ -54093,6 +53504,9 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"nIN" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/upper/u_m_p) "nIS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54117,14 +53531,6 @@ /obj/item/newspaper, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"nJy" = ( -/obj/structure/sign/safety/bathunisex{ - pixel_x = -18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "nJz" = ( /turf/open/floor/almayer{ dir = 4; @@ -54160,19 +53566,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) -"nLa" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"nLb" = ( -/obj/effect/decal/cleanable/blood, -/obj/structure/prop/broken_arcade, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "nLg" = ( /obj/effect/projector{ name = "Almayer_Up2"; @@ -54194,6 +53587,9 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"nLp" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_f_p) "nLt" = ( /turf/open/floor/almayer{ dir = 1; @@ -54224,10 +53620,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"nLK" = ( -/obj/structure/machinery/cm_vending/sorted/marine_food, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "nLZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -54243,12 +53635,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"nMc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "nMe" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -54268,14 +53654,6 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"nMz" = ( -/obj/structure/sign/safety/cryo{ - pixel_x = 35 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "nMV" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -54321,27 +53699,22 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"nNA" = ( -/obj/structure/machinery/cryopod{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_m_p) -"nNC" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "nNH" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "emeraldcorner" }, /area/almayer/living/briefing) +"nNI" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) +"nNT" = ( +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "nNV" = ( /obj/structure/bed/chair{ dir = 8; @@ -54388,15 +53761,22 @@ icon_state = "plate" }, /area/almayer/command/corporateliaison) +"nOx" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "nOC" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/execution) -"nOG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"nOX" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/secure_data{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "nPa" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -54472,6 +53852,13 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"nPO" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/maint/hull/lower/l_m_s) "nPT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ desc = "These shutters seem to be pretty poorly mantained and almost wedged into the room.. you're not sure if these are official."; @@ -54495,12 +53882,18 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"nQg" = ( -/obj/structure/sink{ - pixel_y = 24 +"nQn" = ( +/obj/structure/surface/rack, +/obj/item/storage/toolbox/mechanical, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/lower/s_bow) +"nQo" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_m_p) "nQv" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -54510,6 +53903,14 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) +"nQw" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/mgoggles/prescription, +/obj/item/clothing/glasses/mbcg, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "nQx" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -54517,13 +53918,12 @@ "nQA" = ( /turf/open/floor/carpet, /area/almayer/command/corporateliaison) -"nRq" = ( -/obj/effect/decal/cleanable/blood/oil/streak, +"nRE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 + dir = 9 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_f_s) "nRH" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -54532,6 +53932,12 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"nRN" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "nRR" = ( /turf/open/floor/almayer{ dir = 1; @@ -54542,6 +53948,29 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) +"nSk" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/item/stack/tile/carpet{ + amount = 20 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"nSq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "nSu" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -54562,41 +53991,39 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/telecomms) -"nSN" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "nSS" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"nSU" = ( -/obj/structure/machinery/vending/snack{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"nTi" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) +"nTc" = ( +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_p) "nTl" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "red" }, /area/almayer/squads/alpha) +"nTo" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/transmitter{ + dir = 8; + name = "Medical Telephone"; + phone_category = "Almayer"; + phone_id = "Medical Lower"; + pixel_x = 16 + }, +/obj/item/device/helmet_visor/medical/advanced, +/obj/item/device/helmet_visor/medical/advanced, +/obj/item/device/helmet_visor/medical/advanced, +/obj/item/device/helmet_visor/medical/advanced, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/lockerroom) "nTs" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -54622,6 +54049,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/corporateliaison) +"nTT" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper) "nTZ" = ( /turf/open/floor/almayer{ dir = 5; @@ -54674,6 +54104,16 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) +"nUm" = ( +/obj/structure/bed/chair/comfy/beige, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 12; + pixel_y = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "nUn" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -54690,12 +54130,14 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"nUy" = ( -/obj/structure/sign/poster{ - pixel_y = -32 +"nUT" = ( +/obj/structure/platform{ + dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "nVe" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/bridge{ @@ -54714,6 +54156,13 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) +"nVn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "nVq" = ( /obj/structure/sign/safety/security{ pixel_x = -17; @@ -54728,17 +54177,15 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"nVu" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "nVB" = ( /turf/open/floor/almayer, /area/almayer/command/securestorage) +"nVE" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "nVF" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -54750,17 +54197,6 @@ "nVR" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/perma) -"nVS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "nVX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ id_tag = "Boat2-D1"; @@ -54771,27 +54207,17 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"nWc" = ( -/obj/structure/machinery/door/airlock/almayer/generic/glass{ - name = "\improper Passenger Cryogenics Bay" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) "nWN" = ( /obj/structure/surface/table/almayer, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) -"nXF" = ( -/obj/structure/bed/sofa/south/white/right{ - pixel_y = 16 - }, +"nXo" = ( +/obj/item/storage/box/donkpockets, +/obj/structure/surface/rack, /turf/open/floor/almayer{ - dir = 5; - icon_state = "silver" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_a_s) "nXO" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/storage/fancy/cigar{ @@ -54813,9 +54239,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"nXP" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_f_s) "nXU" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ dir = 1; @@ -54857,12 +54280,12 @@ icon_state = "silverfull" }, /area/almayer/command/securestorage) -"nYh" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, +"nYi" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/p_bow) "nYn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54888,13 +54311,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"nYC" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 7; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "nYD" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/almayer{ @@ -54914,11 +54330,29 @@ /obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"nZF" = ( +"nZG" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) +"nZR" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "orange" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/shipboard/panic) +"nZW" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/drinks/cans/souto/blue{ + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "oap" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -54926,22 +54360,28 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"oas" = ( -/obj/structure/surface/table/almayer, -/obj/item/stack/rods/plasteel{ - amount = 36 - }, -/obj/item/stack/catwalk{ - amount = 60; - pixel_x = 5; - pixel_y = 4 +"oaw" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/p_stern) "oaK" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"oaO" = ( +/obj/structure/machinery/conveyor{ + id = "lower_garbage" + }, +/obj/structure/machinery/recycler, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "plating_striped" + }, +/area/almayer/maint/hull/lower/l_a_p) "oaW" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -54980,15 +54420,14 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"obG" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/card{ - dir = 8 +"obJ" = ( +/obj/structure/machinery/light/small{ + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_a_s) "obQ" = ( /obj/structure/bed/chair{ dir = 8 @@ -55056,25 +54495,27 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"oda" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/device/radio{ - pixel_x = 8; - pixel_y = 7 - }, -/obj/item/clothing/head/soft/ferret{ - pixel_x = -7 - }, +"ocI" = ( +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_a_s) "odb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"ode" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_bow) "odl" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -55109,6 +54550,22 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"odG" = ( +/obj/structure/platform, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "odN" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -55128,11 +54585,6 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"oed" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "oee" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -55151,15 +54603,17 @@ icon_state = "cargo" }, /area/almayer/squads/alpha_bravo_shared) -"oeo" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "oer" = ( /turf/closed/wall/almayer{ damage_cap = 15000 }, /area/almayer/squads/delta) +"oes" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "oex" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage, /obj/structure/machinery/light, @@ -55173,30 +54627,20 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/processing) -"oeL" = ( -/obj/structure/machinery/vending/coffee{ - density = 0; - pixel_y = 18 +"oeH" = ( +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/upper/u_m_s) "oeM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "silver" }, /area/almayer/command/computerlab) -"ofs" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "ofH" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -55228,12 +54672,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"ofZ" = ( -/obj/structure/bed/sofa/south/grey, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "ogK" = ( /obj/structure/bed/bedroll{ desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on."; @@ -55254,6 +54692,19 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) +"ohu" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig Maintenance" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/p_bow) "ohA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -55291,6 +54742,19 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"ohI" = ( +/obj/structure/surface/table/almayer, +/obj/item/circuitboard/airlock, +/obj/item/circuitboard/airlock{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/stack/cable_coil{ + pixel_x = -7; + pixel_y = 11 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ohJ" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/wood/ship, @@ -55313,6 +54777,10 @@ icon_state = "test_floor4" }, /area/almayer/living/captain_mess) +"oif" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "oih" = ( /obj/structure/bed{ icon_state = "abed" @@ -55342,6 +54810,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"oiq" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 8; + req_one_access = list(2,34,30) + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) "oir" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -55457,15 +54935,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"okd" = ( -/obj/structure/platform_decoration, -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "okg" = ( /obj/structure/sign/safety/reception{ pixel_x = 8; @@ -55475,13 +54944,13 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"oks" = ( -/obj/effect/decal/cleanable/cobweb{ - pixel_x = -9; - pixel_y = 19 +"oko" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_a_p) "okD" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer6" @@ -55498,6 +54967,20 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/engine_core) +"old" = ( +/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"olC" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "olM" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -55534,6 +55017,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) +"olQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "olU" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -55541,6 +55030,12 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"olW" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/s_bow) "omb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -55550,6 +55045,12 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) +"ome" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "omo" = ( /obj/structure/window/framed/almayer/white, /turf/open/floor/plating, @@ -55559,6 +55060,20 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"omx" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = 32 + }, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "omy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -55592,6 +55107,20 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"onv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "onN" = ( /obj/structure/surface/table/almayer, /obj/structure/disposalpipe/segment{ @@ -55637,17 +55166,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"ooo" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "oos" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) @@ -55666,6 +55184,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"ooA" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "opC" = ( /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper Combat Information Center" @@ -55714,6 +55239,13 @@ /obj/docking_port/stationary/emergency_response/external/port4, /turf/open/space/basic, /area/space) +"oqc" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "oqt" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -55752,22 +55284,10 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"oqD" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wet_sign, -/obj/item/tool/wet_sign{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/tool/wet_sign{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +"oqI" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "oqS" = ( /obj/structure/toilet{ dir = 1 @@ -55828,20 +55348,14 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"orm" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"orq" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_y = 13 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"orv" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/random/secure, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "orH" = ( /turf/open/floor/almayer/uscm/directional{ dir = 10 @@ -55864,6 +55378,23 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"osn" = ( +/obj/item/trash/USCMtray{ + pixel_x = -4; + pixel_y = 10 + }, +/obj/structure/surface/table/almayer, +/obj/item/tool/kitchen/utensil/pfork{ + pixel_x = 9; + pixel_y = 8 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "osx" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -55954,6 +55485,15 @@ "otu" = ( /turf/closed/wall/almayer/research/containment/wall/connect_w, /area/almayer/medical/containment/cell) +"otW" = ( +/obj/structure/machinery/light/small, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "ouf" = ( /obj/structure/stairs{ dir = 1; @@ -55980,13 +55520,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"ouo" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "our" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper_bin/uscm{ @@ -56022,6 +55555,18 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"ouU" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/technology_scanner, +/obj/effect/spawner/random/technology_scanner, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "ouW" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -56036,6 +55581,10 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) +"ove" = ( +/obj/structure/airlock_assembly, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ovi" = ( /turf/open/floor/almayer{ dir = 4; @@ -56053,15 +55602,6 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"ovF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "ovG" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -56097,6 +55637,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"owU" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "owW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -56126,34 +55672,39 @@ }, /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) -"oxp" = ( -/obj/structure/largecrate/random/case, +"oxl" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"oxn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) "oxu" = ( /obj/structure/sign/safety/galley{ pixel_x = -17 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"oxy" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "oxU" = ( /obj/structure/machinery/photocopier, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"oyo" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/hull/upper_hull/u_a_s) -"oyw" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "oyy" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -56173,18 +55724,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/port_atmos) -"oyG" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" +"oyO" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/sign/safety/water{ + pixel_x = -17 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "oyR" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/lower) +"oyX" = ( +/obj/structure/bookcase/manuals/engineering, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "ozq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -56194,21 +55752,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/alpha) -"ozr" = ( -/obj/structure/closet, -/obj/item/reagent_container/food/drinks/bottle/sake, -/obj/item/newspaper, -/obj/item/clothing/gloves/yellow, -/obj/item/stack/tile/carpet{ - amount = 20 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "ozz" = ( /obj/structure/surface/table/almayer, /obj/item/tank/emergency_oxygen/double, @@ -56216,6 +55759,18 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"ozH" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "ozN" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ id_tag = "Boat2-D2"; @@ -56253,12 +55808,32 @@ dir = 10 }, /area/almayer/living/briefing) +"oAK" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "oAO" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"oAT" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/device/radio{ + pixel_x = 8; + pixel_y = 7 + }, +/obj/item/clothing/head/soft/ferret{ + pixel_x = -7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "oBq" = ( /obj/structure/bed, /obj/structure/machinery/flasher{ @@ -56270,6 +55845,9 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) +"oBr" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_a_s) "oBA" = ( /obj/structure/sign/safety/conference_room{ pixel_x = -17; @@ -56311,18 +55889,13 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"oCL" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"oDf" = ( +"oCK" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"oDh" = ( /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/p_bow) "oDi" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -56375,6 +55948,23 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"oDJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains{ + pixel_x = 18; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/ash{ + pixel_x = 11; + pixel_y = 25 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/lower_medical_medbay) "oDL" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -56463,15 +56053,6 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"oES" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "oEX" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -56488,18 +56069,21 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop) -"oFG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"oFn" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wirecutters/clippers, +/obj/item/handcuffs/zip, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/lower/l_f_p) +"oFr" = ( +/obj/item/storage/firstaid/regular, +/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) -"oFM" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_a_s) "oFV" = ( /obj/structure/sign/poster{ pixel_x = -32; @@ -56510,6 +56094,25 @@ "oFY" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/lobby) +"oGf" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"oGi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"oGj" = ( +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -16 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "oGx" = ( /obj/structure/closet/secure_closet/surgical{ pixel_x = 30 @@ -56534,13 +56137,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"oGF" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "oGJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -56594,6 +56190,21 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) +"oHf" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) +"oHg" = ( +/obj/structure/largecrate/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "oHl" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/electrical, @@ -56628,15 +56239,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"oIn" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "oIr" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -56730,12 +56332,15 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"oLd" = ( -/obj/structure/platform{ - dir = 4 +"oLf" = ( +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "oLi" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, @@ -56766,13 +56371,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"oLw" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "oLF" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -56869,14 +56467,6 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) -"oNf" = ( -/obj/item/stack/folding_barricade/three, -/obj/item/stack/folding_barricade/three, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "oNj" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -56903,6 +56493,12 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"oNM" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "oNP" = ( /obj/structure/machinery/vending/cola{ density = 0; @@ -56923,6 +56519,13 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) +"oOp" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/wirecutters, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "oOw" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -57027,12 +56630,14 @@ icon_state = "red" }, /area/almayer/command/cic) -"oPI" = ( -/obj/structure/largecrate/random/case/small, +"oPF" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_a_s) "oQj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -57048,13 +56653,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"oQo" = ( -/obj/item/stool, -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "oQs" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/book/manual/surgery{ @@ -57069,6 +56667,15 @@ icon_state = "cargo_arrow" }, /area/almayer/living/briefing) +"oQJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"oQL" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "oQM" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -57092,23 +56699,20 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) -"oRj" = ( -/obj/structure/stairs{ - icon_state = "ramptop" - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "oRk" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"oRm" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Viewing Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) "oRJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -57189,6 +56793,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/lobby) +"oSG" = ( +/obj/structure/surface/table/almayer, +/obj/item/card/id/visa, +/obj/item/tool/crew_monitor, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "oSL" = ( /obj/structure/window/reinforced{ dir = 8 @@ -57212,6 +56824,23 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"oSR" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"oTc" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "oTe" = ( /obj/item/prop/almayer/box, /obj/item/prop{ @@ -57241,12 +56870,6 @@ icon_state = "test_floor5" }, /area/almayer/squads/req) -"oTz" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "oTA" = ( /obj/structure/machinery/cryopod, /obj/structure/machinery/light{ @@ -57269,6 +56892,19 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"oUt" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"oUx" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "oUG" = ( /obj/structure/machinery/light{ dir = 8 @@ -57278,6 +56914,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"oUZ" = ( +/obj/structure/surface/rack, +/obj/item/tool/crowbar, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "oVf" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/evidence{ @@ -57295,12 +56940,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/general_equipment) -"oVP" = ( -/obj/structure/bed/chair{ - dir = 4 +"oVY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "oWf" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -57329,6 +56974,10 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"oWq" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "oWx" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -57398,25 +57047,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"oYb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "oYp" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -57426,16 +57056,35 @@ icon_state = "red" }, /area/almayer/living/offices/flight) -"oZd" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null +"oYr" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_p) +"oYs" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/item/clothing/suit/chef/classic, -/obj/item/tool/kitchen/knife/butcher, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_a_s) +"oZn" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "oZp" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light, @@ -57536,15 +57185,26 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"paJ" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "paL" = ( /turf/open/floor/almayer/uscm/directional{ dir = 1 }, /area/almayer/command/cic) -"pbb" = ( -/obj/effect/landmark/start/doctor, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/offices) +"pbo" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "pbp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -57572,13 +57232,22 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"pch" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 +"pcc" = ( +/obj/structure/surface/rack, +/obj/item/paper{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/folder/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/upper/u_f_s) +"pcf" = ( +/obj/item/tool/wet_sign, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_f_s) "pcj" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -57603,22 +57272,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"pcD" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - layer = 5.1; - name = "water pipe" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) "pcE" = ( /obj/structure/machinery/conveyor{ dir = 8; @@ -57649,21 +57302,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"pda" = ( -/obj/structure/largecrate/random/case/double, +"pcY" = ( +/obj/structure/disposalpipe/segment, /obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 + pixel_x = -17 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) +"pdp" = ( /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"pdk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/p_bow) "pdy" = ( /obj/structure/machinery/door_control{ id = "OTStore"; @@ -57689,6 +57339,15 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"pek" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/s_bow) +"peM" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_s) "peO" = ( /obj/structure/sign/safety/medical{ pixel_x = -17; @@ -57731,12 +57390,27 @@ allow_construction = 0 }, /area/almayer/stair_clone) +"pfD" = ( +/obj/structure/machinery/cm_vending/sorted/marine_food, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "pfH" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"pfL" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "pfM" = ( /obj/structure/machinery/light{ dir = 4 @@ -57752,13 +57426,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"pgt" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/hull/lower_hull/l_m_s) "pgw" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -57788,6 +57455,13 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"pgJ" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "pgM" = ( /obj/structure/reagent_dispensers/water_cooler/walk_past{ pixel_x = 10; @@ -57846,6 +57520,15 @@ icon_state = "plate" }, /area/almayer/command/combat_correspondent) +"phw" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/card{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "phN" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -57856,6 +57539,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) +"piJ" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "piK" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/locked{ @@ -57865,21 +57554,17 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/perma) -"piO" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"piX" = ( -/obj/item/trash/barcardine, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "pje" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"pjh" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "pji" = ( /turf/closed/wall/almayer, /area/almayer/hallways/stern_hallway) @@ -57898,6 +57583,9 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"pjz" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/p_bow) "pjF" = ( /obj/structure/surface/table/almayer, /obj/item/paper, @@ -57961,6 +57649,9 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"plv" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_p) "plI" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /turf/open/floor/almayer{ @@ -57968,15 +57659,6 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) -"pmk" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "pmq" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -58007,16 +57689,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"pmI" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "pmV" = ( /obj/structure/prop/server_equipment/yutani_server/broken{ density = 0; @@ -58029,6 +57701,16 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"pnh" = ( +/obj/structure/ladder{ + height = 2; + id = "ForePortMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = -17 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/p_bow) "pno" = ( /obj/structure/sign/safety/escapepod{ pixel_y = 32 @@ -58046,7 +57728,7 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "pnC" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -58068,13 +57750,21 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"poq" = ( -/obj/item/pipe{ - dir = 4; - layer = 3.5 +"pok" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "poA" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/bucket/mopbucket, @@ -58085,22 +57775,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) -"poR" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"ppc" = ( -/obj/structure/largecrate/supply/generator, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "ppe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -58129,6 +57803,15 @@ /obj/item/device/camera, /turf/open/floor/almayer, /area/almayer/command/corporateliaison) +"ppG" = ( +/obj/structure/bed/sofa/south/grey, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"ppM" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "pqc" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -58197,15 +57880,21 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"pre" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" +"prf" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"pri" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -25 }, -/area/almayer/hull/upper_hull/u_f_p) +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "prx" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -58230,6 +57919,13 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) +"prX" = ( +/obj/structure/ladder{ + height = 2; + id = "AftStarboardMaint" + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/upper/u_a_s) "prY" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray, @@ -58245,18 +57941,6 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"psm" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_a_s) -"psy" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Security Checkpoint" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "psK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58344,6 +58028,14 @@ "ptK" = ( /turf/closed/wall/almayer, /area/almayer/engineering/upper_engineering/starboard) +"ptQ" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/s_stern) "ptZ" = ( /obj/structure/platform{ dir = 4; @@ -58406,24 +58098,34 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"puK" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +"puJ" = ( +/obj/structure/prop/invuln/pipe_water, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "puO" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"puR" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldpack, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "plate" +"puT" = ( +/obj/structure/machinery/light/small{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "pvh" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/item/tool/warning_cone{ @@ -58494,13 +58196,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) -"pwK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "pxj" = ( /obj/structure/bed, /obj/item/bedsheet/brown, @@ -58640,6 +58335,15 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) +"pzc" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "pzd" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -58669,30 +58373,12 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"pzO" = ( -/obj/item/tool/warning_cone{ - pixel_y = 13 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"pzQ" = ( -/obj/structure/largecrate/random/barrel, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "pzV" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "bluecorner" }, /area/almayer/living/briefing) -"pzZ" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "pAm" = ( /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) @@ -58705,6 +58391,13 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_umbilical) +"pAV" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/item/tool/mop, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "pBn" = ( /obj/structure/sign/safety/escapepod{ pixel_x = 8; @@ -58718,14 +58411,6 @@ "pBG" = ( /turf/closed/wall/almayer, /area/almayer/command/corporateliaison) -"pBW" = ( -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/almayer/hull/upper_hull/u_a_s) -"pCi" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_f_s) "pCq" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -58755,6 +58440,17 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) +"pCQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/attachable/lasersight, +/obj/item/reagent_container/food/drinks/cans/souto/vanilla{ + pixel_x = 10; + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "pDh" = ( /obj/structure/machinery/power/monitor{ name = "Core Power Monitoring" @@ -58773,15 +58469,6 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) -"pDm" = ( -/obj/structure/surface/rack, -/obj/item/roller, -/obj/item/roller, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "pDo" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -58860,10 +58547,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"pEy" = ( -/obj/item/ammo_casing/bullet, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "pEB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -58897,18 +58580,43 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) -"pFM" = ( -/obj/structure/machinery/light/small{ - dir = 8 +"pFq" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/binoculars, +/obj/item/device/whistle{ + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) +"pFr" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"pGh" = ( +/obj/effect/decal/cleanable/cobweb{ + pixel_x = -9; + pixel_y = 19 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"pFP" = ( -/obj/effect/landmark/yautja_teleport, +/area/almayer/maint/hull/upper/u_m_p) +"pGj" = ( +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_a_s) +"pGG" = ( +/obj/effect/landmark/start/doctor, +/obj/structure/sign/safety/maint{ + pixel_y = 26 + }, +/obj/effect/landmark/late_join/doctor, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "pGK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -58926,15 +58634,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"pGP" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/lights/bulbs{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "pGT" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -58954,6 +58653,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"pHD" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "pHG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58972,17 +58679,40 @@ /obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"pIk" = ( -/obj/structure/ladder{ - height = 1; - id = "AftStarboardMaint" +"pIf" = ( +/obj/structure/mirror{ + pixel_x = 28 }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_a_s) +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/maint/hull/upper/u_a_s) +"pIo" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"pIC" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) "pIU" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -59014,18 +58744,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/engine_core) -"pJt" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) "pJv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -59077,19 +58795,23 @@ dir = 4 }, /area/almayer/command/airoom) -"pJW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - dir = 1; - req_access = null; - req_one_access = null; - req_one_access_txt = "3;22;19" +"pKh" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 }, +/obj/effect/landmark/start/nurse, +/obj/effect/landmark/late_join/nurse, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) +"pKB" = ( +/obj/structure/surface/rack, +/obj/item/circuitboard/firealarm, +/obj/item/circuitboard, +/obj/item/clipboard, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/s_stern) "pKZ" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -59142,10 +58864,6 @@ icon_state = "cargo" }, /area/almayer/living/pilotbunks) -"pLZ" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "pMj" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -59176,6 +58894,13 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) +"pMH" = ( +/obj/item/tool/wet_sign, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "pMJ" = ( /obj/structure/bed/chair{ dir = 1 @@ -59225,19 +58950,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/execution) -"pNp" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) -"pNG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "pNM" = ( /obj/structure/platform{ dir = 4 @@ -59264,20 +58976,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/offices) -"pOB" = ( -/obj/item/trash/cigbutt{ - pixel_x = -10; - pixel_y = 13 - }, -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice10"; - pixel_x = -16; - pixel_y = 16 +"pOp" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" }, +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/s_bow) "pOD" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -59288,6 +58996,16 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) +"pOH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "pON" = ( /turf/open/floor/almayer/uscm/directional{ dir = 8 @@ -59303,6 +59021,16 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"pPd" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "OuterShutter"; + name = "\improper Saferoom Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) "pPv" = ( /obj/structure/closet/cabinet, /obj/item/reagent_container/food/drinks/bottle/wine, @@ -59327,12 +59055,14 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"pPz" = ( -/obj/structure/machinery/vending/cola, -/turf/open/floor/almayer{ - icon_state = "plate" +"pPy" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = -32 }, -/area/almayer/hull/upper_hull/u_a_s) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "pPA" = ( /obj/structure/sign/poster{ desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; @@ -59349,6 +59079,15 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"pPG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "pPM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -59386,13 +59125,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) -"pQG" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "pQN" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks, @@ -59435,6 +59167,10 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"pRs" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "pRy" = ( /turf/open/floor/almayer/research/containment/corner_var1{ dir = 4 @@ -59479,13 +59215,6 @@ icon_state = "test_floor5" }, /area/almayer/medical/hydroponics) -"pRY" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) "pRZ" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -59517,13 +59246,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"pTc" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "pTj" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -59542,14 +59264,16 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"pTT" = ( -/obj/structure/platform{ - dir = 4 +"pTX" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_f_p) "pUd" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -59571,14 +59295,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"pUi" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/item/tool/crowbar{ - pixel_x = 6; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "pUj" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, @@ -59626,34 +59342,13 @@ icon_state = "redfull" }, /area/almayer/shipboard/brig/processing) -"pUJ" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"pUY" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"pVu" = ( -/obj/item/paper/prison_station/interrogation_log{ - pixel_x = 10; - pixel_y = 7 - }, -/obj/structure/largecrate/random/barrel/green, -/obj/item/limb/hand/l_hand{ - pixel_x = -5; - pixel_y = 14 - }, -/obj/effect/spawner/random/balaclavas, +"pUL" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/m41a, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_s) "pVx" = ( /obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, /turf/open/floor/almayer{ @@ -59691,14 +59386,27 @@ icon_state = "silver" }, /area/almayer/living/briefing) -"pVZ" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_a_s) +"pVF" = ( +/obj/structure/surface/table/almayer, +/obj/item/spacecash/c1000/counterfeit, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/fancy/cigar, +/obj/structure/machinery/atm{ + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "pWb" = ( /obj/effect/landmark/start/marine/tl/delta, /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"pWd" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "pWr" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -59726,17 +59434,16 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"pWA" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, -/obj/structure/sign/safety/storage{ - pixel_x = -17 +"pWw" = ( +/obj/structure/bed/chair, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "plate" }, -/area/almayer/squads/req) +/area/almayer/maint/hull/upper/u_a_s) "pWN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -59755,20 +59462,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"pXn" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -12; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "pXx" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -59777,15 +59470,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"pXQ" = ( -/obj/structure/sign/safety/intercom{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "pXV" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -59832,6 +59516,13 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"pYQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "pYS" = ( /obj/structure/pipes/binary/pump/on{ dir = 4 @@ -59894,12 +59585,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"qaD" = ( +"qan" = ( /obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "qaV" = ( /turf/open/floor/almayer{ dir = 10; @@ -59914,23 +59603,6 @@ icon_state = "red" }, /area/almayer/living/briefing) -"qaZ" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/turf/open/floor/almayer, -/area/almayer/hull/lower_hull/l_f_s) -"qbd" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "qbx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -59974,12 +59646,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) -"qce" = ( -/obj/item/trash/cigbutt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "qck" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/computer/cameras/wooden_tv/almayer{ @@ -60085,14 +59751,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"qee" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "qej" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -60206,6 +59864,13 @@ }, /turf/open/floor/carpet, /area/almayer/living/commandbunks) +"qfQ" = ( +/obj/structure/surface/rack, +/obj/item/stack/folding_barricade/three, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "qga" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1 @@ -60241,24 +59906,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"qgH" = ( -/obj/item/storage/backpack/marine/satchel{ - desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; - icon = 'icons/obj/janitor.dmi'; - icon_state = "trashbag3"; - name = "trash bag"; - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "qgK" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/generic/press{ dir = 1; name = "\improper Combat Correspondent Room" }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/almayer/command/combat_correspondent) "qgN" = ( /obj/structure/bed/chair{ @@ -60312,14 +59968,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"qhB" = ( -/obj/structure/closet, -/obj/item/clothing/glasses/mgoggles/prescription, -/obj/item/clothing/glasses/mbcg, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "qhD" = ( /obj/structure/closet{ name = "backpack storage" @@ -60332,6 +59980,31 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop/hangar) +"qhG" = ( +/obj/structure/surface/table/almayer, +/obj/item/ashtray/bronze{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/ash, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = 4; + pixel_y = 13 + }, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = -7; + pixel_y = 14 + }, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = -13; + pixel_y = 8 + }, +/obj/item/trash/cigbutt/ucigbutt{ + pixel_x = -6; + pixel_y = 9 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "qhU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -60347,15 +60020,22 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"qic" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"qid" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"qig" = ( +/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull) +/area/almayer/maint/hull/lower/l_f_s) "qih" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; @@ -60392,12 +60072,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"qiI" = ( -/obj/structure/girder/displaced, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "qjz" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clipboard, @@ -60414,11 +60088,28 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"qjL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "qjN" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"qjT" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "qjV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -60430,15 +60121,6 @@ "qjZ" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/stern_point_defense) -"qkb" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "qki" = ( /obj/effect/landmark/start/marine/smartgunner/charlie, /obj/effect/landmark/late_join/charlie, @@ -60514,6 +60196,12 @@ }, /turf/open/floor/carpet, /area/almayer/living/commandbunks) +"qlu" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "qlz" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -60560,6 +60248,27 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"qmq" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "qmy" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ @@ -60628,6 +60337,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"qmM" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "Saferoom Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "qmP" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine/uscm, @@ -60689,6 +60411,14 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"qnA" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/tool/crowbar{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "qnC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -60704,18 +60434,6 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"qnP" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "qom" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/chem_dispenser/soda{ @@ -60761,6 +60479,11 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) +"qoN" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_p) "qoR" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -60794,6 +60517,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) +"qpV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "qqn" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -60851,16 +60584,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"qqS" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "qqV" = ( /obj/structure/machinery/cm_vending/clothing/military_police_warden, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) -"qqW" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) "qra" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -60885,12 +60618,10 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"qsd" = ( -/obj/structure/largecrate/random, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +"qsp" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "qsC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/junction, @@ -60933,10 +60664,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"qtS" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "quj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -61108,6 +60835,12 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"qwY" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_s) "qxe" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1 @@ -61162,12 +60895,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"qxA" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "qxC" = ( /obj/structure/machinery/door/airlock/almayer/generic{ id = "Alpha_1"; @@ -61194,6 +60921,15 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"qxI" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) +"qxJ" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "qxL" = ( /obj/structure/machinery/medical_pod/autodoc, /turf/open/floor/almayer{ @@ -61259,6 +60995,13 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"qyG" = ( +/obj/structure/sign/safety/hazard{ + desc = "A sign that warns of a hazardous environment nearby"; + name = "\improper Warning: Hazardous Environment" + }, +/turf/closed/wall/almayer, +/area/almayer/maint/hull/lower/l_f_p) "qyK" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -61297,6 +61040,12 @@ icon_state = "plating" }, /area/almayer/shipboard/port_point_defense) +"qzA" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) "qAs" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -61326,6 +61075,29 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"qAG" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"qAK" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/ashtray/plastic, +/obj/item/trash/cigbutt{ + pixel_x = 4 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "qAT" = ( /obj/structure/machinery/light, /obj/structure/surface/table/almayer, @@ -61348,6 +61120,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"qBl" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "qBq" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -61371,6 +61149,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"qBS" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "qCc" = ( /obj/structure/sign/safety/security{ pixel_x = 15; @@ -61381,12 +61171,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"qCi" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "qCo" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -61404,6 +61188,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"qCH" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Secretroom"; + indestructible = 1; + unacidable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) "qCU" = ( /obj/structure/machinery/light{ dir = 4 @@ -61438,20 +61232,12 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) -"qDv" = ( -/obj/structure/closet, -/obj/item/stack/sheet/glass/large_stack, -/obj/item/device/lightreplacer, -/obj/item/reagent_container/spray/cleaner, -/obj/item/stack/rods{ - amount = 40 - }, -/obj/item/tool/weldingtool, -/obj/item/clothing/glasses/welding, +"qDB" = ( +/obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/upper/u_a_p) "qDN" = ( /obj/structure/machinery/light{ dir = 8 @@ -61470,6 +61256,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) +"qDS" = ( +/obj/item/stack/tile/carpet{ + amount = 20 + }, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "qEk" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -61528,16 +61323,18 @@ icon_state = "plate" }, /area/almayer/engineering/lower) -"qEW" = ( -/obj/structure/sign/poster/ad{ - pixel_x = 30 +"qEZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/closet, -/obj/item/clothing/mask/cigarette/weed, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_a_s) "qFb" = ( /obj/structure/sign/safety/storage{ pixel_y = -32 @@ -61552,9 +61349,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) -"qFl" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/upper_hull/u_f_p) "qFu" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -61592,15 +61386,16 @@ icon_state = "bluefull" }, /area/almayer/squads/delta) -"qFW" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 +"qFS" = ( +/obj/structure/largecrate/random/barrel/yellow, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_s) "qGc" = ( /turf/open/floor/almayer{ dir = 1; @@ -61624,6 +61419,12 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) +"qGC" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "qGF" = ( /obj/structure/machinery/optable, /turf/open/floor/almayer{ @@ -61636,19 +61437,6 @@ icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south2) -"qHb" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "Saferoom Channel"; - pixel_y = -28 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "qHg" = ( /turf/open/floor/almayer{ dir = 1; @@ -61678,6 +61466,14 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"qHG" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "qHM" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -61688,6 +61484,14 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"qIa" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "qIx" = ( /obj/structure/machinery/door/airlock/almayer/maint{ access_modified = 1; @@ -61768,13 +61572,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) -"qJF" = ( -/obj/structure/largecrate/supply, -/obj/item/tool/crowbar, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) "qJN" = ( /obj/structure/surface/rack, /obj/item/device/radio, @@ -61826,6 +61623,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"qKb" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/lights/tubes{ + pixel_x = -8 + }, +/obj/item/storage/box/lights/tubes{ + pixel_x = 5 + }, +/obj/item/storage/box/lights/tubes{ + pixel_y = 10 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "qKi" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -61838,16 +61648,15 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"qKt" = ( -/obj/structure/closet/emcloset, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +"qKl" = ( +/obj/structure/sign/safety/intercom{ + pixel_x = 32; + pixel_y = 7 }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/shipboard/panic) "qKz" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -61855,13 +61664,15 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"qKF" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/device/radio/headset/almayer/mt, +"qKK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/maint/hull/lower/l_a_p) "qKM" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -61982,15 +61793,13 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"qMf" = ( -/obj/structure/bed/chair, -/turf/open/floor/almayer{ - icon_state = "plate" +"qLY" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 }, -/area/almayer/hull/upper_hull/u_a_p) -"qMu" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "qMD" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/flashbangs, @@ -62032,22 +61841,6 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"qNy" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) -"qNG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "qNI" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -62057,6 +61850,20 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/port) +"qNK" = ( +/obj/structure/largecrate/random/barrel/red, +/obj/structure/sign/safety/high_voltage{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 32; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "qNR" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -62091,19 +61898,20 @@ /obj/structure/disposalpipe/junction, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) -"qOU" = ( -/obj/structure/machinery/door/airlock/almayer/maint, +"qOY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_f_p) -"qPg" = ( -/obj/item/tool/warning_cone{ - pixel_x = -12; - pixel_y = 16 +/area/almayer/maint/hull/upper/u_f_p) +"qPn" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) "qPD" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) @@ -62165,19 +61973,13 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower) -"qQP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/nonpress_ag{ - pixel_x = 15; - pixel_y = -32 - }, -/obj/structure/sign/safety/west{ - pixel_y = -32 +"qQG" = ( +/obj/structure/largecrate/supply/floodlights, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_a_p) "qQS" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -62225,6 +62027,9 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/port_point_defense) +"qSw" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) "qSE" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/cholula, @@ -62279,12 +62084,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"qUj" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "qUp" = ( /obj/structure/surface/table/almayer, /turf/open/shuttle/dropship{ @@ -62324,18 +62123,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"qUE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) -"qUH" = ( -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "qUL" = ( /obj/structure/machinery/landinglight/ds1/delaythree{ dir = 4 @@ -62369,14 +62156,17 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) +"qVE" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "qVF" = ( /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/shipboard/brig/execution) -"qVM" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_m_p) "qVS" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -62390,17 +62180,6 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"qVU" = ( -/obj/structure/surface/rack, -/obj/item/tool/weldingtool, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "qWt" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -62426,6 +62205,13 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"qWL" = ( +/obj/structure/prop/holidays/string_lights{ + pixel_y = 27 + }, +/obj/item/frame/rack, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "qWQ" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -62440,12 +62226,38 @@ dir = 4 }, /area/almayer/medical/containment/cell/cl) -"qWT" = ( -/obj/effect/landmark/yautja_teleport, +"qWS" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/pill/happy{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/prop/helmetgarb/prescription_bottle{ + pixel_x = 9 + }, +/obj/item/tool/surgery/bonegel/empty{ + pixel_y = 15; + pixel_x = 4 + }, +/obj/item/tool/surgery/bonegel/empty{ + pixel_y = 13; + pixel_x = -8 + }, +/obj/item/tool/surgery/bonegel/empty{ + pixel_y = 19; + pixel_x = -5; + layer = 3.01 + }, +/obj/item/storage/box/gloves{ + layer = 3.2; + pixel_x = -5; + pixel_y = 2 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "sterile_green_corner" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/medical/lower_medical_medbay) "qXk" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -62477,14 +62289,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) -"qXM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "qXO" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/mre_pack/xmas3{ @@ -62503,9 +62307,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"qXR" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/stern) "qXS" = ( /obj/structure/stairs{ icon_state = "ramptop" @@ -62594,9 +62395,6 @@ /area/almayer/command/lifeboat) "qYN" = ( /obj/structure/surface/table/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/light{ dir = 1 }, @@ -62619,10 +62417,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) -"qYW" = ( -/obj/item/clothing/shoes/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "qYZ" = ( /obj/structure/sign/safety/security{ pixel_y = -32 @@ -62633,6 +62427,20 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"qZy" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice2"; + pixel_x = 16; + pixel_y = 16 + }, +/obj/structure/largecrate/supply/supplies/flares, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "qZA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -62670,6 +62478,13 @@ icon_state = "greenfull" }, /area/almayer/living/offices) +"qZK" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "qZX" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -62684,18 +62499,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower/engine_core) -"rav" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/item/reagent_container/glass/rag, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "raK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -62708,6 +62511,12 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"raO" = ( +/obj/structure/bed/sofa/south/grey/right, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "rbi" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/ids{ @@ -62724,14 +62533,13 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"rbv" = ( -/obj/structure/machinery/light/small{ +"rbp" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "rby" = ( /obj/structure/machinery/door_control{ id = "ARES Mainframe Left"; @@ -62816,14 +62624,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"rcH" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"rcG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/area/almayer/hull/lower_hull/l_f_p) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "rcS" = ( /obj/structure/machinery/computer/cryopod/eng{ dir = 8 @@ -62844,19 +62651,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"rdr" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/lights/tubes{ - pixel_x = -8 - }, -/obj/item/storage/box/lights/tubes{ - pixel_x = 5 - }, -/obj/item/storage/box/lights/tubes{ - pixel_y = 10 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "rdt" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -62884,9 +62678,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"rdK" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_a_s) "rdM" = ( /obj/structure/machinery/vending/snack, /obj/structure/machinery/status_display{ @@ -62899,6 +62690,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/general_equipment) +"rdN" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "rdS" = ( /obj/structure/machinery/light{ dir = 8 @@ -62942,6 +62739,16 @@ icon_state = "plate" }, /area/almayer/living/gym) +"reH" = ( +/obj/structure/noticeboard{ + pixel_x = -10; + pixel_y = 31 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/squads/req) "reL" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/sliceable/bread{ @@ -62955,6 +62762,24 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"reM" = ( +/obj/structure/machinery/power/smes/buildable, +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/sign/safety/high_voltage{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) +"reN" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "rfa" = ( /obj/effect/landmark/start/marine/medic/alpha, /obj/effect/landmark/late_join/alpha, @@ -62968,17 +62793,11 @@ icon_state = "containment_window_h" }, /area/almayer/medical/containment/cell/cl) -"rfg" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) +"rfB" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "rfI" = ( /obj/structure/sign/safety/airlock{ pixel_y = -32 @@ -63021,18 +62840,20 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) +"rgk" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "rgy" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"rgA" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "rgK" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -63052,6 +62873,9 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) +"rgL" = ( +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_p) "rgW" = ( /turf/open/floor/almayer{ icon_state = "emeraldcorner" @@ -63068,6 +62892,18 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/main_office) +"rhm" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"rht" = ( +/obj/structure/machinery/vending/cola, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "rhy" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp{ @@ -63082,6 +62918,12 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"rhD" = ( +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "rhO" = ( /obj/structure/machinery/vending/cola/research{ pixel_x = 4 @@ -63106,17 +62948,41 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"ril" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = -16; - pixel_y = 17 +"rir" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/s_bow) +"riB" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"riC" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "riE" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -63135,13 +63001,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"riM" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "riP" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/rewire{ @@ -63167,6 +63026,17 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"rjF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "rjG" = ( /obj/structure/pipes/standard/tank/oxygen, /turf/open/floor/almayer{ @@ -63233,20 +63103,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"rku" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/tool/wrench{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/tool/wrench{ - pixel_x = 2; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "rkz" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -63287,21 +63143,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"rlz" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "rlQ" = ( /turf/open/floor/almayer{ dir = 1; @@ -63370,10 +63211,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) -"rmN" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "rna" = ( /turf/closed/wall/almayer/white, /area/almayer/command/airoom) @@ -63403,12 +63240,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"rnM" = ( -/obj/structure/machinery/vending/cigarette, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "rnN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/sign/nosmoking_2{ @@ -63423,15 +63254,12 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) -"rod" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 - }, +"roj" = ( +/obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/p_bow) "rou" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -63502,6 +63330,14 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) +"rpG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "rpK" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -63511,18 +63347,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"rpW" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "rqb" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -63539,6 +63363,10 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"rqv" = ( +/obj/structure/sign/poster/safety, +/turf/closed/wall/almayer, +/area/almayer/maint/lower/s_bow) "rqw" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -63548,6 +63376,34 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"rqz" = ( +/obj/structure/sign/safety/autoopenclose{ + pixel_y = 32 + }, +/obj/structure/sign/safety/water{ + pixel_x = 15; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"rqD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) "rqE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -63574,13 +63430,15 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/evidence_storage) -"rri" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"rrh" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Under Construction Shutters"; + name = "\improper Construction Site" }, -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/living/offices/flight) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) "rrq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63647,20 +63505,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"rsx" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/sign/safety/high_voltage{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 32; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/lower_hull/l_f_s) "rsK" = ( /obj/structure/sign/safety/hvac_old, /turf/closed/wall/almayer, @@ -63678,14 +63522,31 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"rsY" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +"rsP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/autoopenclose{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"rsS" = ( +/obj/structure/machinery/door_control{ + id = "panicroomback"; + name = "\improper Safe Room"; + pixel_x = -25; + req_one_access_txt = "3" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_f_s) +"rsV" = ( +/obj/structure/machinery/light, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "rtd" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -63698,7 +63559,7 @@ "rtj" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/squads/req) "rtA" = ( @@ -63795,18 +63656,31 @@ "rvA" = ( /turf/open/floor/almayer, /area/almayer/living/numbertwobunks) +"rvI" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/obj/structure/largecrate/random, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "rvT" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ icon_state = "emerald" }, /area/almayer/squads/charlie) -"rwb" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" +"rwe" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -16 }, -/area/almayer/hull/upper_hull/u_a_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "rwq" = ( /obj/structure/sign/safety/cryo{ pixel_x = 7; @@ -63831,11 +63705,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower) -"rwS" = ( -/obj/structure/machinery/light/small, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "rwY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -63847,19 +63716,26 @@ }, /turf/open/floor/plating, /area/almayer/living/pilotbunks) -"rxk" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"rwZ" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_f_p) +"rxe" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 +/area/almayer/maint/hull/lower/l_m_p) +"rxq" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_p) "rxG" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -63910,24 +63786,20 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/port) +"rzk" = ( +/obj/item/tool/screwdriver, +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "rzN" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"rzP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_a_s) "rzY" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -63942,6 +63814,28 @@ icon_state = "bluecorner" }, /area/almayer/living/briefing) +"rAo" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"rAw" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 8 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 32; + pixel_y = -7 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_f_s) "rAx" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -64048,6 +63942,12 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"rBD" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_p) "rBH" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_2" @@ -64063,6 +63963,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"rCh" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "rCi" = ( /obj/structure/machinery/camera/autoname/almayer/containment/ares{ dir = 8 @@ -64081,15 +63990,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"rCp" = ( -/obj/structure/largecrate/random/case/small, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "rCw" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_AresDown"; @@ -64176,12 +64076,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"rDi" = ( -/obj/structure/sign/safety/water{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "rDr" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -64230,20 +64124,25 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/engine_core) -"rDI" = ( -/obj/structure/largecrate/supply, -/obj/structure/sign/safety/bulkhead_door{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) +"rDH" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "rDQ" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"rDR" = ( +/obj/structure/machinery/vending/coffee, +/obj/item/toy/bikehorn/rubberducky{ + desc = "You feel as though this rubber duck has been here for a long time. It's Mr. Quackers! He loves you!"; + name = "Quackers"; + pixel_x = 5; + pixel_y = 17 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "rDV" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -64264,11 +64163,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/chief_mp_office) -"rEb" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/stern) "rEf" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -64285,17 +64179,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower) -"rEn" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/adv{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/firstaid/regular, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "rEr" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer3" @@ -64304,6 +64187,17 @@ icon_state = "outerhull_dir" }, /area/space) +"rEs" = ( +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/maint/hull/upper/u_a_s) +"rEt" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "rEu" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -64323,6 +64217,19 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"rEK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "rEL" = ( /obj/structure/machinery/cm_vending/gear/intelligence_officer, /turf/open/floor/almayer{ @@ -64423,13 +64330,18 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"rGl" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, +"rGr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) +"rGz" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_m_s) "rGE" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Conference Room" @@ -64454,6 +64366,15 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"rGL" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "rGU" = ( /obj/structure/machinery/computer/skills{ req_one_access_txt = "200" @@ -64490,10 +64411,13 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) -"rHs" = ( -/obj/item/storage/firstaid, +"rHq" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_m_s) "rHw" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -64505,6 +64429,17 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"rHB" = ( +/obj/item/ammo_box/magazine/misc/mre/empty{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/reagent_container/food/drinks/cans/aspen{ + pixel_x = 11; + pixel_y = -3 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_stern) "rHN" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/plating/plating_catwalk, @@ -64537,12 +64472,27 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_lobby) +"rIw" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/s_bow) "rID" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"rIE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "rIH" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -64550,17 +64500,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"rII" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 2; - id = "OuterShutter"; - name = "\improper Saferoom Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "rIO" = ( /obj/structure/machinery/vending/snack, /obj/item/clothing/head/cmcap/boonie/tan{ @@ -64571,6 +64510,18 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"rIV" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "rIW" = ( /obj/structure/machinery/cm_vending/gear/synth, /obj/effect/decal/cleanable/cobweb2, @@ -64578,13 +64529,12 @@ icon_state = "cargo" }, /area/almayer/living/synthcloset) -"rJb" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +"rJf" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_a_p) "rJh" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -64676,6 +64626,14 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"rJY" = ( +/obj/item/book/manual/medical_diagnostics_manual, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "rKd" = ( /turf/open/floor/almayer/uscm/directional{ dir = 5 @@ -64694,15 +64652,6 @@ icon_state = "rasputin15" }, /area/almayer/powered/agent) -"rKs" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - req_one_access = null; - req_one_access_txt = "2;30;34" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "rKy" = ( /obj/structure/machinery/firealarm{ dir = 1; @@ -64753,6 +64702,30 @@ icon_state = "containment_window_h" }, /area/almayer/medical/containment/cell/cl) +"rLH" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/binoculars{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/device/binoculars, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) +"rLK" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/hvac_old{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "rLP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -64770,6 +64743,14 @@ dir = 8 }, /area/almayer/medical/containment/cell/cl) +"rMO" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/s_bow) "rMT" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -64889,14 +64870,17 @@ icon_state = "plate" }, /area/almayer/living/gym) -"rPt" = ( -/turf/open/floor/wood/ship, -/area/almayer/engineering/ce_room) -"rPC" = ( +"rPq" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/p_stern) +"rPt" = ( +/turf/open/floor/wood/ship, +/area/almayer/engineering/ce_room) "rPE" = ( /obj/structure/bed/chair{ dir = 8; @@ -64933,12 +64917,14 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) -"rQj" = ( -/obj/structure/largecrate/random/barrel/yellow, +"rQs" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_f_p) "rQt" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -64946,6 +64932,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) +"rQw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "rQy" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/hydroponics) @@ -64955,12 +64955,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/delta) -"rQU" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "rQV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64986,6 +64980,12 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"rRb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "rRq" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south2) @@ -65048,6 +65048,18 @@ icon_state = "orangefull" }, /area/almayer/squads/alpha_bravo_shared) +"rSx" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/rods/plasteel{ + amount = 36 + }, +/obj/item/stack/catwalk{ + amount = 60; + pixel_x = 5; + pixel_y = 4 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "rSG" = ( /obj/structure/toilet{ pixel_y = 16 @@ -65062,12 +65074,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"rSK" = ( -/obj/structure/machinery/light/small, +"rSR" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/sign/safety/cryo{ + pixel_x = 36 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/cryo_cells) +"rTe" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/janitorialcart, +/obj/item/tool/mop, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/upper/u_m_p) "rTk" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -65080,12 +65103,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"rTV" = ( -/obj/structure/sign/safety/security{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "rTZ" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -65101,12 +65118,35 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"rUi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "rUk" = ( /obj/structure/bed/chair/wood/normal{ dir = 1 }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"rUq" = ( +/obj/effect/landmark/start/nurse, +/obj/effect/landmark/late_join/nurse, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) +"rUs" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/port_hallway) "rUy" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -65115,20 +65155,15 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"rUU" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - req_access = null; - req_one_access = null - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "panicroomback"; - name = "\improper Safe Room Shutters" +"rVc" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_f_p) "rVm" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -65139,20 +65174,20 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/main_office) -"rVo" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "rVN" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"rWb" = ( +/obj/item/tool/minihoe{ + pixel_x = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "rWn" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -65172,6 +65207,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"rWz" = ( +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_s) "rWF" = ( /obj/structure/machinery/firealarm{ dir = 4; @@ -65227,6 +65265,28 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) +"rXF" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) +"rXH" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"rXQ" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_bow) "rXS" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -65239,6 +65299,14 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"rXU" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "rYh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65306,17 +65374,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"rZF" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/port_hallway) "rZP" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldpack, @@ -65325,6 +65382,11 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"sab" = ( +/obj/effect/landmark/start/doctor, +/obj/effect/landmark/late_join/doctor, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "saL" = ( /obj/structure/machinery/door/airlock/almayer/generic/corporate{ name = "Corporate Liaison's Closet" @@ -65342,18 +65404,23 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) -"sbJ" = ( -/turf/closed/wall/almayer/white/hull, -/area/almayer/powered/agent) -"sbM" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 4 +"sbt" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + dir = 2; + name = "\improper Security Checkpoint" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "safe_armory"; + name = "\improper Hangar Armory Shutters" }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "test_floor4" }, -/area/almayer/squads/req) +/area/almayer/shipboard/panic) +"sbJ" = ( +/turf/closed/wall/almayer/white/hull, +/area/almayer/powered/agent) "sbP" = ( /obj/effect/landmark/start/police, /obj/effect/decal/warning_stripes{ @@ -65362,13 +65429,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cryo) -"scg" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "sco" = ( /obj/structure/sign/prop1{ layer = 3.1 @@ -65426,12 +65486,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"scI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "scN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65454,6 +65508,15 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"scX" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/kitchen/tray, +/obj/item/reagent_container/food/drinks/bottle/whiskey, +/obj/item/toy/deck{ + pixel_x = -9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "sdf" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -65503,12 +65566,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"sdw" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_a_p) "sdC" = ( /obj/structure/bed/chair{ dir = 4 @@ -65526,19 +65583,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"sed" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"seO" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "sfT" = ( /turf/open/floor/almayer, /area/almayer/hallways/upper/port) @@ -65639,16 +65683,6 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) -"sgy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_f_s) "sgD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65684,6 +65718,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"she" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "shh" = ( /obj/structure/machinery/autolathe, /turf/open/floor/almayer, @@ -65723,10 +65763,6 @@ "sht" = ( /turf/open/floor/almayer, /area/almayer/living/pilotbunks) -"shw" = ( -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "shL" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/electrical, @@ -65738,6 +65774,26 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) +"sir" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_access = null; + req_one_access = null + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "panicroomback"; + name = "\improper Safe Room Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_s) +"sit" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "siz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/hangar{ @@ -65769,6 +65825,14 @@ icon_state = "plate" }, /area/almayer/engineering/lower) +"siT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "siW" = ( /obj/structure/machinery/body_scanconsole, /obj/structure/disposalpipe/segment{ @@ -65814,6 +65878,16 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"sjw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) "sjz" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -65913,20 +65987,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"slP" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 8 - }, -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 32; - pixel_y = -7 - }, -/turf/open/floor/almayer, -/area/almayer/hull/lower_hull/l_f_s) "smi" = ( /turf/open/floor/almayer{ icon_state = "green" @@ -65938,6 +65998,58 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"smw" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/med_data/laptop{ + dir = 8 + }, +/obj/item/device/flashlight/lamp{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"smA" = ( +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice10"; + pixel_x = -16; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"smH" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 1; + req_access = null; + req_one_access = null; + req_one_access_txt = "3;22;19" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_s) +"smU" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/panic) "smW" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -66007,6 +66119,10 @@ icon_state = "plate" }, /area/almayer/squads/req) +"snx" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "snE" = ( /obj/structure/machinery/cryopod/right, /obj/effect/decal/warning_stripes{ @@ -66043,18 +66159,24 @@ }, /area/almayer/command/cic) "snM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, /turf/open/floor/almayer{ dir = 8; icon_state = "green" }, /area/almayer/squads/req) +"snN" = ( +/obj/structure/curtain/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "snR" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -66107,14 +66229,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower/engine_core) -"sow" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "soA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -66136,33 +66250,34 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) -"soQ" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) -"soS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 +"soT" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 +/obj/structure/prop/invuln/lattice_prop{ + icon_state = "lattice1"; + pixel_x = 16; + pixel_y = -8 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_p) "soX" = ( /obj/structure/window/reinforced/toughened, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/command/cic) +"spd" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "spF" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -66197,6 +66312,27 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"spT" = ( +/obj/structure/closet/crate{ + desc = "One of those old special operations crates from back in the day. After a leaked report from a meeting of SOF leadership lambasted the crates as 'waste of operational funds' the crates were removed from service."; + name = "special operations crate" + }, +/obj/item/clothing/mask/gas/swat, +/obj/item/clothing/mask/gas/swat, +/obj/item/clothing/mask/gas/swat, +/obj/item/clothing/mask/gas/swat, +/obj/item/attachable/suppressor, +/obj/item/attachable/suppressor, +/obj/item/attachable/suppressor, +/obj/item/attachable/suppressor, +/obj/item/explosive/grenade/smokebomb, +/obj/item/explosive/grenade/smokebomb, +/obj/item/explosive/grenade/smokebomb, +/obj/item/explosive/grenade/smokebomb, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "sqa" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -66232,6 +66368,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"sqP" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "sqW" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/tomatoseed, @@ -66240,6 +66386,16 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) +"srl" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"srO" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) "srT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 8 @@ -66265,6 +66421,28 @@ icon_state = "test_floor4" }, /area/almayer/hallways/repair_bay) +"ssk" = ( +/obj/structure/surface/rack, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/storage/backpack/marine/satchel{ + desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; + icon = 'icons/obj/janitor.dmi'; + icon_state = "trashbag3"; + name = "trash bag"; + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "ssD" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -66318,11 +66496,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"sti" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/balaclavas, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "str" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down3"; @@ -66342,6 +66515,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"stA" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "stO" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine/uscm/brig, @@ -66353,6 +66532,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/perma) +"stP" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "stY" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -66386,10 +66571,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) -"suk" = ( -/obj/item/tool/weldingtool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) "suy" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -66408,16 +66589,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/engine_core) -"suT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "suV" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -66443,18 +66614,30 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"svC" = ( +"svF" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/effect/landmark/yautja_teleport, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"svV" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/smg/m39{ +/obj/item/weapon/gun/rifle/l42a{ pixel_y = 6 }, -/obj/item/weapon/gun/smg/m39{ - pixel_y = -6 - }, +/obj/item/weapon/gun/rifle/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_m_s) "swn" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -66477,6 +66660,12 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"swG" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "swH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/radio/intercom{ @@ -66512,15 +66701,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering) -"sxe" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "sxu" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -66542,7 +66722,7 @@ name = "\improper Officer's Bunk" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/living/bridgebunks) "sxE" = ( @@ -66558,17 +66738,10 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"sxT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/m41a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +"sxS" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "sxW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66653,18 +66826,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/numbertwobunks) -"szX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/hull/upper_hull/u_a_s) "sAc" = ( /obj/structure/bed/chair{ dir = 8; @@ -66674,12 +66835,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"sAm" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "sAz" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -66689,30 +66844,21 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"sAA" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "sAC" = ( /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/engineering/ce_room) +"sAS" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "sBg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/general_equipment) -"sBo" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "sBL" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/light, @@ -66720,6 +66866,14 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"sBY" = ( +/obj/item/tool/wet_sign, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "sCA" = ( /obj/structure/bed/chair/comfy/delta{ dir = 4 @@ -66728,14 +66882,6 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"sCC" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "sCD" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -66765,6 +66911,12 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"sCT" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_f_s) "sCV" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -66778,18 +66930,17 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"sCW" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/surface/table/almayer, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "sDu" = ( /obj/item/clothing/under/marine/dress, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"sDy" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "sDA" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/bed/chair/comfy/charlie{ @@ -66845,6 +66996,15 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"sEg" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "sEi" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -66898,6 +67058,13 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"sEu" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "sEK" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -66925,6 +67092,15 @@ icon_state = "plate" }, /area/almayer/command/cic) +"sER" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "sEZ" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_y = 26 @@ -66962,43 +67138,15 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/main_office) -"sFF" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/item/stack/tile/carpet{ - amount = 20 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"sFR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_p) -"sFZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"sGe" = ( -/obj/structure/ladder{ - height = 2; - id = "ForePortMaint" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = -17 - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_f_p) "sGh" = ( /turf/open/floor/almayer/uscm/directional, /area/almayer/command/lifeboat) +"sGw" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_f_s) +"sGK" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "sGL" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -67015,6 +67163,12 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) +"sGQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "sGU" = ( /obj/structure/mirror, /turf/closed/wall/almayer, @@ -67025,28 +67179,10 @@ icon_state = "silverfull" }, /area/almayer/command/airoom) -"sHg" = ( -/obj/structure/surface/rack, -/obj/item/storage/backpack/marine/satchel{ - desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; - icon = 'icons/obj/janitor.dmi'; - icon_state = "trashbag3"; - name = "trash bag"; - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/storage/backpack/marine/satchel{ - desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; - icon = 'icons/obj/janitor.dmi'; - icon_state = "trashbag3"; - name = "trash bag"; - pixel_x = 3; - pixel_y = -2 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) +"sHe" = ( +/obj/structure/largecrate/supply/supplies/tables_racks, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "sHm" = ( /obj/structure/disposalpipe/up/almayer{ id = "almayerlink_OT_req" @@ -67106,22 +67242,16 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"sIk" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "sIr" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) -"sIx" = ( -/obj/effect/landmark/yautja_teleport, +"sIu" = ( +/obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/p_bow) "sIA" = ( /obj/structure/sign/poster{ desc = "This poster features Audrey Rainwater standing in a jacuzzi. She was the July 2182 centerfold in House Bunny Gentleman's Magazine. Don't ask how you know that."; @@ -67140,24 +67270,18 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) -"sIT" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/hull/lower_hull/l_f_s) "sIU" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/hangar) -"sIV" = ( -/obj/structure/largecrate/random/barrel/yellow, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"sJa" = ( +/obj/structure/sign/safety/cryo{ + pixel_y = -26 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "sJm" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -67231,6 +67355,13 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"sLk" = ( +/obj/structure/ladder{ + height = 2; + id = "cicladder4" + }, +/turf/open/floor/plating/almayer, +/area/almayer/medical/medical_science) "sLo" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -67241,6 +67372,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"sLx" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "sLA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67254,14 +67394,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"sMs" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "sMu" = ( /obj/item/trash/uscm_mre, /obj/structure/bed/chair/comfy/charlie{ @@ -67313,6 +67445,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"sNP" = ( +/obj/structure/largecrate/supply/floodlights, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "sNR" = ( /turf/closed/wall/almayer/research/containment/wall/corner, /area/almayer/medical/containment/cell/cl) @@ -67326,15 +67464,22 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) -"sOm" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"sOr" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + req_access = null; + req_one_access = null; + req_one_access_txt = "3;22;19" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hallways/starboard_hallway) +/area/almayer/maint/hull/lower/l_f_s) "sOt" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/status_display{ @@ -67378,6 +67523,22 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"sOD" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) +"sOL" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "sOZ" = ( /obj/structure/sign/safety/ammunition{ pixel_y = 32 @@ -67427,21 +67588,20 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"sQU" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"sRM" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"sRI" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wirecutters/clippers, -/obj/item/handcuffs/zip, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_s) +"sRP" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) "sSa" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ dir = 2; @@ -67463,24 +67623,6 @@ icon_state = "tcomms" }, /area/almayer/shipboard/weapon_room) -"sSe" = ( -/obj/structure/sign/poster/blacklight{ - pixel_y = 35 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/reagent_dispensers/beerkeg/alt_dark{ - anchored = 1; - chemical = null; - density = 0; - pixel_x = -7; - pixel_y = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "sSl" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -67517,12 +67659,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"sSP" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliaison) "sSY" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -67557,12 +67693,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"sTB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "sTV" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; @@ -67580,6 +67710,12 @@ icon_state = "silverfull" }, /area/almayer/shipboard/brig/cic_hallway) +"sUi" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_p) "sUj" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -67648,13 +67784,6 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"sVi" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "sVT" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/mechanical, @@ -67675,12 +67804,23 @@ "sVV" = ( /turf/open/floor/almayer, /area/almayer/hallways/upper/starboard) -"sWs" = ( -/obj/structure/closet/emcloset, +"sWp" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -12; + pixel_y = 13 + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_a_s) +"sWw" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "sWC" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -67720,20 +67860,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"sXs" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - layer = 3.1; - pixel_x = 7; - pixel_y = 10 - }, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "plate" +"sXq" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "sXt" = ( /obj/structure/machinery/cm_vending/clothing/tl/alpha{ density = 0; @@ -67770,14 +67902,6 @@ icon_state = "test_floor4" }, /area/almayer/living/auxiliary_officer_office) -"sXK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "sXQ" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/appleseed, @@ -67828,17 +67952,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"sYC" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Hangar Lockdown"; - name = "\improper Hangar Lockdown Blast Door" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) "sYD" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -67881,6 +67994,13 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/upper_medical) +"sZc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "sZq" = ( /obj/structure/machinery/cm_vending/sorted/marine_food{ density = 0; @@ -67914,13 +68034,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"sZF" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "sZH" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/bronze{ @@ -68013,6 +68126,9 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/perma) +"taw" = ( +/turf/closed/wall/almayer, +/area/almayer/maint/hull/upper/u_a_s) "taA" = ( /obj/structure/machinery/light{ dir = 4 @@ -68061,17 +68177,26 @@ icon_state = "plate" }, /area/almayer/hallways/upper/starboard) -"tbD" = ( -/obj/structure/ladder{ - height = 2; - id = "AftPortMaint" +"tcd" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/radio{ + pixel_x = -6; + pixel_y = 3 }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/upper_hull/u_a_p) -"tbK" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"tcm" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) +"tcO" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_a_p) "tcZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -68148,6 +68273,16 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"tdH" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/obj/item/bedsheet/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "tdI" = ( /turf/open/floor/almayer{ icon_state = "sterile_green_corner" @@ -68197,6 +68332,10 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"tey" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "tez" = ( /obj/effect/landmark/ert_spawns/distress_cryo, /obj/effect/landmark/late_join, @@ -68212,8 +68351,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "teH" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/sign/safety/maint{ pixel_y = 32 }, @@ -68276,6 +68413,10 @@ dir = 1 }, /area/almayer/medical/containment/cell) +"tfQ" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "tge" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -68287,6 +68428,13 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"tgm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "tgK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68365,27 +68513,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"thR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/secure{ - pixel_x = -5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"thT" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "thV" = ( /turf/open/floor/almayer{ dir = 1; @@ -68400,6 +68527,12 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) +"tih" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "tii" = ( /obj/structure/machinery/firealarm{ pixel_x = 6; @@ -68469,12 +68602,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"tiM" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "tiR" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ @@ -68494,6 +68621,28 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"tiX" = ( +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_x = -1; + pixel_y = 13 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) +"tiY" = ( +/obj/structure/closet, +/obj/item/reagent_container/food/drinks/bottle/sake, +/obj/item/newspaper, +/obj/item/clothing/gloves/yellow, +/obj/item/stack/tile/carpet{ + amount = 20 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "tjj" = ( /turf/open/floor/almayer{ dir = 5; @@ -68518,6 +68667,30 @@ }, /turf/open/floor/almayer, /area/almayer/living/tankerbunks) +"tjz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"tjH" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/device/radio/headset/almayer/mt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"tjO" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/maint/hull/lower/l_m_s) "tki" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -68608,14 +68781,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) -"tly" = ( -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "tlA" = ( /obj/effect/decal/medical_decals{ icon_state = "docdecal2" @@ -68624,11 +68789,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"tlI" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/surface/table/almayer, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "tmg" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/hypospray, @@ -68640,6 +68800,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"tml" = ( +/obj/structure/largecrate/supply/supplies/mre, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tmB" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -68679,24 +68843,32 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) +"tmQ" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) +"tmX" = ( +/obj/effect/landmark/start/professor, +/obj/effect/landmark/late_join/cmo, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/offices) "tnb" = ( /obj/structure/bed/chair/comfy/black, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) -"tng" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" +"tne" = ( +/obj/structure/machinery/door_control/cl/quarter/backdoor{ + pixel_x = -25; + pixel_y = 23 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_m_p) "tni" = ( /turf/open/floor/almayer{ dir = 1; @@ -68724,6 +68896,9 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"tob" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "tos" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68735,6 +68910,12 @@ icon_state = "plate" }, /area/almayer/engineering/lower/engine_core) +"tot" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "tou" = ( /obj/structure/bed/chair{ dir = 4 @@ -68750,15 +68931,17 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"toE" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"toD" = ( +/obj/structure/largecrate/supply/generator, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + layer = 2.9; + pixel_x = -10; + pixel_y = 3 }, -/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_a_p) "toO" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/engineering_construction, @@ -68795,27 +68978,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"tpg" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "tpn" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/evidence_storage) -"tps" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "tpD" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -68826,37 +68991,6 @@ icon_state = "silver" }, /area/almayer/living/bridgebunks) -"tpK" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/effect/spawner/random/toolbox, -/obj/item/stack/sheet/metal{ - desc = "Semiotic Standard denoting the nearby presence of coffee: the lifeblood of any starship crew."; - icon = 'icons/obj/structures/props/semiotic_standard.dmi'; - icon_state = "coffee"; - name = "coffee semiotic"; - pixel_x = 20; - pixel_y = 12; - singular_name = "coffee semiotic" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"tqd" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/item/weapon/gun/rifle/l42a{ - pixel_x = 17; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "tqg" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -68887,19 +69021,6 @@ icon_state = "silverfull" }, /area/almayer/hallways/repair_bay) -"tqk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "tqE" = ( /obj/structure/machinery/light{ dir = 8 @@ -68922,6 +69043,34 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) +"tqV" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/electrical{ + pixel_y = 9 + }, +/obj/item/storage/toolbox/mechanical/green, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"tra" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 2; + req_one_access = null; + req_one_access_txt = "19;34;30" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) "trb" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -68938,16 +69087,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"trD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "trF" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -69001,15 +69140,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) -"trW" = ( -/obj/item/stack/tile/carpet{ - amount = 20 - }, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "tsa" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/suit/chef/classic, @@ -69017,6 +69147,9 @@ /obj/item/clothing/suit/chef/classic, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"tsr" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/upper/mess) "tst" = ( /obj/structure/machinery/cryopod/right, /obj/effect/decal/warning_stripes{ @@ -69057,6 +69190,10 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) +"tsE" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "tsM" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -69089,6 +69226,24 @@ }, /turf/open/floor/plating, /area/almayer/powered/agent) +"tty" = ( +/obj/structure/surface/table/almayer, +/obj/item/clipboard, +/obj/item/paper, +/obj/item/clothing/glasses/mgoggles, +/obj/item/clothing/glasses/mgoggles, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"ttB" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"ttD" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "ttE" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin{ @@ -69183,6 +69338,19 @@ "tuA" = ( /turf/closed/wall/almayer/outer, /area/almayer/shipboard/port_missiles) +"tuJ" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/item/tool/shovel/spade{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "tuN" = ( /turf/open/floor/almayer{ icon_state = "orange" @@ -69195,6 +69363,19 @@ icon_state = "redcorner" }, /area/almayer/shipboard/weapon_room) +"tvr" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"tvt" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_f_s) "tvw" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -69203,6 +69384,13 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"tvA" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tvM" = ( /obj/structure/bed/chair{ dir = 1 @@ -69234,6 +69422,21 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"tvS" = ( +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_s) +"twp" = ( +/obj/structure/ladder{ + height = 1; + id = "AftStarboardMaint" + }, +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/almayer, +/area/almayer/maint/hull/lower/l_a_s) "twq" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/hand_labeler{ @@ -69278,6 +69481,13 @@ icon_state = "cargo" }, /area/almayer/command/cic) +"twQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "twT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -69322,6 +69532,24 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"txp" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"txy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"txH" = ( +/obj/structure/bed/stool, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "txO" = ( /obj/structure/machinery/landinglight/ds1{ dir = 4 @@ -69345,14 +69573,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"tyz" = ( -/obj/item/book/manual/medical_diagnostics_manual, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "tyD" = ( /turf/open/floor/almayer/research/containment/corner_var1{ dir = 4 @@ -69380,30 +69600,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"tzi" = ( -/obj/structure/flora/pottedplant{ - desc = "Life is underwhelming, especially when you're a potted plant."; - icon_state = "pottedplant_22"; - name = "Jerry"; - pixel_y = 8 - }, -/obj/item/clothing/glasses/sunglasses/prescription{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "tzx" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ unacidable = 1; unslashable = 1 }, +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -69424,15 +69626,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"tAi" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "tAq" = ( /obj/structure/surface/table/reinforced/black, /obj/item/clothing/mask/breath{ @@ -69468,13 +69661,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"tAR" = ( -/obj/effect/spawner/random/toolbox, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "tAU" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -69483,10 +69669,6 @@ icon_state = "cargo" }, /area/almayer/medical/lower_medical_medbay) -"tAV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "tBq" = ( /obj/item/tool/crowbar, /turf/open/floor/plating/plating_catwalk, @@ -69519,24 +69701,42 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"tBP" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"tBU" = ( +/obj/structure/platform, +/obj/structure/largecrate/random/case/double{ + layer = 2.98 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"tCb" = ( -/obj/structure/surface/rack, -/obj/item/device/radio{ - pixel_x = 5; - pixel_y = 4 +/obj/structure/sign/safety/life_support{ + pixel_x = 32 }, -/obj/item/device/radio, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_a_s) +"tBY" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/mess) +"tCd" = ( +/obj/item/folder/red{ + desc = "A red folder. The previous contents are a mystery, though the number 28 has been written on the inside of each flap numerous times. Smells faintly of cough syrup."; + name = "folder: 28"; + pixel_x = -4; + pixel_y = 5 + }, +/obj/structure/surface/table/almayer, +/obj/item/toy/crayon{ + pixel_x = 9; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "tCx" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/maint{ @@ -69555,6 +69755,15 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/port) +"tCC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/maint/hull/upper/u_a_s) "tCN" = ( /turf/open/floor/almayer{ dir = 8; @@ -69569,13 +69778,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"tDx" = ( -/obj/item/tool/wet_sign, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "tDZ" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -69609,6 +69811,15 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"tEu" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "tEB" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -69684,12 +69895,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"tGf" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "tGh" = ( /obj/structure/sign/nosmoking_2{ pixel_x = -28 @@ -69728,6 +69933,13 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"tGH" = ( +/obj/structure/sign/safety/restrictedarea, +/obj/structure/sign/safety/security{ + pixel_x = 15 + }, +/turf/closed/wall/almayer, +/area/almayer/shipboard/panic) "tGO" = ( /obj/effect/projector{ name = "Almayer_Up3"; @@ -69736,6 +69948,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"tGT" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/photocopier{ + anchored = 0 + }, +/obj/structure/sign/poster/art{ + pixel_y = 32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "tHh" = ( /obj/structure/sign/safety/ladder{ pixel_x = 8; @@ -69745,6 +69969,14 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"tHk" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "tHr" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/status_display{ @@ -69813,6 +70045,12 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) +"tIF" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "tIK" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -69824,6 +70062,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"tIN" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tIQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -69839,22 +70085,17 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"tIU" = ( -/obj/structure/platform, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 +"tIX" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/adv{ + pixel_x = 6; + pixel_y = 6 }, +/obj/item/storage/firstaid/regular, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/upper/u_f_p) "tJi" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper_bin/uscm, @@ -69863,6 +70104,12 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"tJq" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "tJz" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -69981,12 +70228,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"tLM" = ( -/obj/structure/sign/safety/storage{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "tMc" = ( /obj/structure/machinery/chem_master/industry_mixer, /turf/open/floor/almayer{ @@ -70015,6 +70256,22 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/chief_mp_office) +"tMT" = ( +/obj/item/tool/weldingtool, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/maint/hull/upper/u_a_p) +"tMU" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "tMW" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -70024,6 +70281,19 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"tNw" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/pouch/tools/full, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) +"tNB" = ( +/obj/structure/bed/sofa/south/grey/left, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "tNP" = ( /obj/structure/sign/safety/debark_lounge{ pixel_x = 15; @@ -70042,14 +70312,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"tNT" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "tOr" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -70084,6 +70346,17 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"tPc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "tPj" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ access_modified = 1; @@ -70096,6 +70369,12 @@ }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -70159,41 +70438,22 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) +"tQA" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_s) "tQL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"tQM" = ( -/obj/structure/sign/poster{ - desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; - icon_state = "poster12"; - name = "Beach Babe Pinup"; - pixel_x = -30; - pixel_y = 6; - serial_number = 12 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/command/corporateliaison) "tQV" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south1) -"tRc" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/obj/item/bedsheet/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "tRs" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/spray/cleaner, @@ -70213,23 +70473,15 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) -"tRV" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"tRX" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"tSm" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool{ + pixel_x = 6; + pixel_y = -16 }, -/area/almayer/hull/upper_hull/u_f_s) +/obj/item/clothing/head/welding, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tSp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -70240,15 +70492,6 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"tSr" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "tSw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -70289,6 +70532,9 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"tTC" = ( +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tTD" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/box/uscm_mre, @@ -70302,6 +70548,13 @@ icon_state = "kitchen" }, /area/almayer/living/captain_mess) +"tTG" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tUh" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -70318,10 +70571,6 @@ "tUx" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"tUI" = ( -/obj/item/tool/wet_sign, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "tUN" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ access_modified = 1; @@ -70347,14 +70596,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"tVf" = ( -/obj/structure/sign/safety/restrictedarea{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "tVh" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -70366,6 +70607,12 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) +"tVn" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "tVq" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -70375,18 +70622,62 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"tVB" = ( -/obj/structure/closet/emcloset, +"tVs" = ( +/obj/structure/closet, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/upper/u_m_s) +"tVx" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) +"tWd" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "tWi" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"tWl" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Disposals" + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_p) +"tWp" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) +"tWF" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_one_access = null; + req_one_access_txt = "2;30;34" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) +"tWM" = ( +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/maint/upper/u_m_s) "tWY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -70486,10 +70777,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"tXW" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "tYi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70501,6 +70788,15 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tYr" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "tYw" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -70516,29 +70812,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"tYB" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "tYM" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"tYW" = ( -/obj/structure/bed/chair/bolted{ - dir = 1 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"tYV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 }, -/area/almayer/shipboard/brig/perma) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "tYX" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -70550,23 +70835,6 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"tZe" = ( -/obj/item/trash/USCMtray{ - pixel_x = -4; - pixel_y = 10 - }, -/obj/structure/surface/table/almayer, -/obj/item/tool/kitchen/utensil/pfork{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "tZg" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/maint{ @@ -70584,20 +70852,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/port) -"tZm" = ( -/obj/structure/closet/crate/freezer{ - desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." - }, -/obj/item/storage/beer_pack, -/obj/item/reagent_container/food/drinks/cans/beer, -/obj/item/reagent_container/food/drinks/cans/beer, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"tZM" = ( +/obj/structure/sink{ + pixel_y = 24 }, -/area/almayer/hull/upper_hull/u_a_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "tZP" = ( /obj/structure/surface/rack, /obj/item/clothing/glasses/meson, @@ -70623,9 +70883,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) -"uaa" = ( -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_m_p) "uac" = ( /obj/structure/machinery/light{ dir = 1 @@ -70634,6 +70891,12 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"uag" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/mess) "uah" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -70667,6 +70930,12 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) +"uaA" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) "uaI" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/processor{ @@ -70693,27 +70962,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"uaX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"uaZ" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"ubd" = ( -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "ubA" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -70746,6 +70994,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"ucy" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/l_a_p) "ucz" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/overwatch/almayer{ @@ -70854,20 +71110,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/port_point_defense) -"ueh" = ( -/obj/structure/surface/rack, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/ob_ammo/ob_fuel, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "uek" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -70879,6 +71121,12 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"uew" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "ueG" = ( /obj/item/bedsheet/orange, /obj/structure/bed{ @@ -70919,14 +71167,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"ufp" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/sign/safety/bulkhead_door{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "ufx" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -70951,6 +71191,12 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) +"ugj" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/hull/lower/l_m_s) "ugu" = ( /obj/structure/machinery/cm_vending/sorted/marine_food, /turf/open/floor/almayer, @@ -70971,15 +71217,21 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"ugV" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/kitchen/tray, -/obj/item/reagent_container/food/drinks/bottle/whiskey, -/obj/item/toy/deck{ - pixel_x = -9 +"ugZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/l_a_s) +"uhh" = ( +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "uhl" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -71014,35 +71266,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/main_office) -"uia" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "uif" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"uig" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"uim" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "uiC" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -71058,6 +71287,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"uiK" = ( +/obj/item/ammo_box/magazine/misc/mre, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "uiR" = ( /obj/structure/prop/invuln{ desc = "An inflated membrane. This one is puncture proof. Wow!"; @@ -71086,6 +71321,12 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"ujf" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "ujz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -71098,13 +71339,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"ujA" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_m_p) "ujV" = ( /obj/structure/machinery/vending/dinnerware, /turf/open/floor/almayer{ @@ -71121,27 +71355,18 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"ukt" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/green, +"ukC" = ( +/obj/effect/decal/cleanable/blood/drip, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/upper/u_m_p) "ukP" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) -"ukU" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "ukV" = ( /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep, /obj/structure/machinery/light{ @@ -71197,6 +71422,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"umk" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "umm" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light/small, @@ -71204,16 +71438,6 @@ icon_state = "rasputin15" }, /area/almayer/powered/agent) -"umv" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - dir = 8; - req_one_access = list(2,34,30) - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_s) "umy" = ( /obj/structure/machinery/light{ dir = 1 @@ -71223,12 +71447,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"umC" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) "umS" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -71238,14 +71456,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"umT" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "Brig" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_p) "umW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -71289,12 +71499,13 @@ icon_state = "orange" }, /area/almayer/engineering/lower) -"unJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 +"unQ" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/upper/u_a_p) "unT" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/crowbar, @@ -71310,7 +71521,7 @@ /obj/structure/machinery/light{ dir = 4 }, -/obj/structure/machinery/cm_vending/sorted/medical, +/obj/structure/machinery/cm_vending/sorted/medical/bolted, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" @@ -71337,6 +71548,12 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"uoj" = ( +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "uoA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -71352,21 +71569,13 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"uoS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light/small{ - dir = 4 +"uoO" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"upt" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/lower/p_bow) "upM" = ( /obj/structure/machinery/light{ dir = 4 @@ -71394,13 +71603,10 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"uqa" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) +"upS" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "uqd" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/warning_stripes{ @@ -71431,6 +71637,13 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"uqg" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "uqh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -71464,16 +71677,50 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"uqH" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "uqI" = ( /obj/structure/machinery/light{ pixel_x = 16 }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"uqJ" = ( +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/maint/hull/upper/u_a_s) +"urg" = ( +/obj/docking_port/stationary/escape_pod/east, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) +"ury" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"urL" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_s) "urM" = ( /obj/structure/machinery/light{ dir = 8 @@ -71496,12 +71743,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/engine_core) -"usi" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "usm" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/waterhazard{ @@ -71512,13 +71753,19 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"uso" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light/small, +"usq" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redfull" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/shipboard/panic) "usy" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71580,6 +71827,15 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering) +"utC" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_a_s) "utK" = ( /obj/structure/machinery/light{ dir = 4 @@ -71677,16 +71933,15 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"uvs" = ( -/obj/structure/machinery/conveyor{ - id = "lower_garbage" +"uvp" = ( +/obj/structure/largecrate/supply, +/obj/structure/sign/safety/bulkhead_door{ + pixel_y = 32 }, -/obj/structure/machinery/recycler, /turf/open/floor/almayer{ - dir = 4; - icon_state = "plating_striped" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/s_bow) "uvt" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -71739,6 +71994,10 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) +"uwf" = ( +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "uws" = ( /obj/structure/machinery/light{ dir = 4 @@ -71803,6 +72062,18 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"uxb" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) +"uxl" = ( +/obj/item/cell/high/empty, +/obj/item/cell/high/empty, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) "uxp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -71819,6 +72090,12 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"uxs" = ( +/obj/structure/machinery/pipedispenser/orderable, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "uxC" = ( /obj/structure/machinery/light{ dir = 4 @@ -71893,6 +72170,13 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) +"uzv" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) "uzy" = ( /obj/item/reagent_container/glass/bucket, /obj/effect/decal/cleanable/blood/oil, @@ -71931,15 +72215,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"uAs" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "uAC" = ( /obj/item/bedsheet/purple{ layer = 3.2 @@ -72013,6 +72288,30 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"uBx" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -16; + pixel_y = 13 + }, +/obj/structure/sign/safety/water{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "uBz" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -72062,6 +72361,13 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"uCw" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_container/food/snacks/tomatomeat, +/obj/item/reagent_container/food/snacks/tomatomeat, +/obj/item/reagent_container/food/snacks/tomatomeat, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "uCM" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -72080,6 +72386,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/charlie) +"uCR" = ( +/obj/item/tool/warning_cone{ + pixel_y = 13 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "uCW" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -72087,6 +72399,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) +"uDg" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/s_bow) "uDn" = ( /obj/structure/ladder{ height = 1; @@ -72104,15 +72419,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) -"uDB" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "uDW" = ( /obj/structure/machinery/cm_vending/clothing/tl/delta{ density = 0; @@ -72122,12 +72428,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"uEv" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "uFd" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -72158,6 +72458,12 @@ icon_state = "sterile_green" }, /area/almayer/medical/lockerroom) +"uFp" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "uFq" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -72168,12 +72474,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/lobby) -"uFt" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "uFH" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -72217,14 +72517,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"uGw" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/drinks/cans/souto/diet/lime{ - pixel_x = 7; - pixel_y = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "uGN" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -72235,12 +72527,38 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"uGU" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) +"uHk" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/cryo_cells) "uHr" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"uHT" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "uId" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -72251,18 +72569,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"uIp" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "uIv" = ( /turf/open/floor/almayer{ icon_state = "orange" @@ -72302,27 +72608,6 @@ icon_state = "outerhull_dir" }, /area/space) -"uJl" = ( -/obj/structure/surface/table/almayer, -/obj/item/pizzabox/meat, -/obj/item/reagent_container/food/drinks/cans/souto/diet/peach{ - pixel_x = -4; - pixel_y = -3 - }, -/obj/item/reagent_container/food/drinks/cans/souto/diet/cherry{ - pixel_x = 8; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"uJo" = ( -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "uJs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72332,13 +72617,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) -"uJB" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/hull/lower_hull/l_m_s) "uJU" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -72372,19 +72650,12 @@ icon_state = "plate" }, /area/almayer/living/gym) -"uKk" = ( -/obj/structure/surface/table/almayer, -/obj/item/circuitboard/airlock, -/obj/item/circuitboard/airlock{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/stack/cable_coil{ - pixel_x = -7; - pixel_y = 11 +"uKl" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_a_s) "uKv" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/multitool{ @@ -72402,6 +72673,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"uKH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "uKV" = ( /obj/structure/sign/safety/storage{ pixel_x = 32; @@ -72433,20 +72710,26 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"uLW" = ( -/obj/item/tool/mop{ - pixel_x = -6; - pixel_y = 24 +"uLG" = ( +/obj/structure/closet/crate/freezer{ + desc = "A freezer crate. Someone has written 'open on christmas' in marker on the top." }, -/obj/item/reagent_container/glass/bucket, +/obj/item/reagent_container/food/snacks/mre_pack/xmas2, +/obj/item/reagent_container/food/snacks/mre_pack/xmas1, +/obj/item/reagent_container/food/snacks/mre_pack/xmas3, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/s_stern) "uMc" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/starboard) +"uMf" = ( +/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) "uMj" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -72503,6 +72786,10 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) +"uNz" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "uNB" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -72510,15 +72797,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"uNF" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) -"uNL" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_s) "uNM" = ( /turf/open/floor/almayer{ dir = 8; @@ -72539,14 +72817,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"uNW" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "uOc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -72560,6 +72830,14 @@ "uOi" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south2) +"uOE" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "uOJ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ @@ -72580,6 +72858,12 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) +"uPN" = ( +/obj/item/tool/wirecutters/clippers, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "uPP" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -72590,6 +72874,13 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower) +"uPQ" = ( +/obj/item/weapon/dart/green, +/obj/structure/dartboard{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "uPW" = ( /obj/structure/bed/chair{ dir = 4 @@ -72698,13 +72989,14 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) -"uRQ" = ( -/obj/item/storage/firstaid/fire, -/obj/structure/surface/rack, +"uRR" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "Brig" + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/s_bow) "uRY" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -72718,16 +73010,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"uSq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "uSB" = ( /obj/structure/machinery/keycard_auth{ pixel_x = 25 @@ -72754,6 +73036,10 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) +"uSU" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "uSW" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -72768,12 +73054,21 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) -"uTa" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"uTk" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"uTs" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/stern) +/obj/structure/machinery/door/airlock/almayer/maint/reinforced, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/p_bow) "uTv" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -72782,6 +73077,13 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) +"uTE" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "uTN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, @@ -72894,13 +73196,6 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) -"uVb" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/hull/lower_hull/l_m_s) "uVc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -72921,6 +73216,15 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"uVp" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "uVv" = ( /obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 1 @@ -73024,6 +73328,16 @@ icon_state = "plate" }, /area/almayer/engineering/lower/engine_core) +"uXm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "uXu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73042,6 +73356,13 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) +"uXU" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, +/obj/item/reagent_container/food/snacks/sliceable/pizza/mushroompizza, +/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "uYa" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -73133,6 +73454,22 @@ }, /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) +"vaQ" = ( +/obj/structure/machinery/door/airlock/almayer/medical{ + dir = 1; + name = "Medical Storage" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/lower_medical_medbay) +"vaV" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "vaZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -73154,6 +73491,16 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vbu" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldpack, +/obj/item/storage/toolbox/mechanical, +/obj/item/reagent_container/spray/cleaner, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/maint/hull/upper/u_a_s) "vbB" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) @@ -73188,13 +73535,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"vbP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "vbR" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -73223,10 +73563,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"vce" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_m_p) "vcm" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_x = -30 @@ -73257,10 +73593,13 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"vcK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +"vcI" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "vdl" = ( /obj/structure/window/reinforced/ultra{ pixel_y = -12 @@ -73326,6 +73665,14 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"vdT" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) "vdW" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -73341,6 +73688,12 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"veq" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "veu" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -73351,6 +73704,27 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"veO" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) +"veW" = ( +/obj/structure/machinery/door/airlock/almayer/generic/glass{ + name = "\improper Passenger Cryogenics Bay" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_p) "vfa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73403,20 +73777,21 @@ dir = 4 }, /area/almayer/command/airoom) -"vfJ" = ( -/obj/structure/surface/rack, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/frame/table, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "vfP" = ( /turf/open/floor/almayer/research/containment/corner{ dir = 1 }, /area/almayer/medical/containment/cell) +"vfS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "vgi" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -73542,15 +73917,6 @@ "vgO" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell) -"vgQ" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "vgW" = ( /obj/structure/sign/safety/security{ pixel_x = 15; @@ -73582,18 +73948,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"vhq" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) -"vht" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "vhw" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -73601,10 +73955,10 @@ /obj/structure/machinery/disposal, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"vhI" = ( -/obj/structure/closet/firecloset, +"vhA" = ( +/obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/p_bow) "vhR" = ( /obj/structure/flora/pottedplant{ desc = "It is made of Fiberbush(tm). It contains asbestos."; @@ -73762,12 +74116,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) -"vjx" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "vjC" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -73784,22 +74132,26 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"vjD" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "vjK" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/shipboard/port_missiles) +"vjS" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + layer = 5.1; + name = "water pipe" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Hangar Lockdown"; + name = "\improper Hangar Lockdown Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/lower/constr) "vjW" = ( /obj/structure/reagent_dispensers/watertank{ anchored = 1 @@ -73834,23 +74186,27 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"vkD" = ( -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 +"vky" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -16; - pixel_y = 13 +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 +/area/almayer/maint/hull/upper/p_bow) +"vkI" = ( +/obj/item/coin/silver{ + desc = "A small coin, bearing the falling falcons insignia."; + name = "falling falcons challenge coin" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "vkM" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ dir = 1; @@ -73864,6 +74220,20 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/general_equipment) +"vkO" = ( +/obj/structure/closet, +/obj/item/stack/sheet/glass/large_stack, +/obj/item/device/lightreplacer, +/obj/item/reagent_container/spray/cleaner, +/obj/item/stack/rods{ + amount = 40 + }, +/obj/item/tool/weldingtool, +/obj/item/clothing/glasses/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/lower/s_bow) "vkR" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -73874,6 +74244,10 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"vkV" = ( +/obj/effect/landmark/start/liaison, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "vlk" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/gas, @@ -73970,6 +74344,15 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) +"vmq" = ( +/turf/open/floor/almayer, +/area/almayer/maint/hull/lower/l_m_s) +"vmu" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "vmE" = ( /turf/open/floor/almayer{ icon_state = "orangecorner" @@ -73983,16 +74366,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/port) -"vmK" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) "vmN" = ( /obj/structure/machinery/light, /obj/structure/surface/table/almayer, @@ -74027,54 +74400,13 @@ icon_state = "plate" }, /area/almayer/living/gym) -"vnV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"vnY" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"vot" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"vox" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/radio{ - pixel_x = -6; - pixel_y = 3 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"voA" = ( -/obj/structure/platform_decoration, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, +"vor" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/prop/broken_arcade, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) -"voQ" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_m_p) "vpe" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/engineering/reinforced/OT{ @@ -74085,6 +74417,11 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/workshop/hangar) +"vpf" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "vpn" = ( /turf/open/floor/almayer{ dir = 9; @@ -74102,6 +74439,22 @@ /obj/item/clothing/mask/cigarette/weed, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"vpI" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) +"vpT" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "vpV" = ( /turf/open/floor/almayer{ dir = 10; @@ -74157,14 +74510,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"vqO" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "vqW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -74211,27 +74556,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"vrB" = ( -/obj/structure/closet/crate{ - desc = "One of those old special operations crates from back in the day. After a leaked report from a meeting of SOF leadership lambasted the crates as 'waste of operational funds' the crates were removed from service."; - name = "special operations crate" - }, -/obj/item/clothing/mask/gas/swat, -/obj/item/clothing/mask/gas/swat, -/obj/item/clothing/mask/gas/swat, -/obj/item/clothing/mask/gas/swat, -/obj/item/attachable/suppressor, -/obj/item/attachable/suppressor, -/obj/item/attachable/suppressor, -/obj/item/attachable/suppressor, -/obj/item/explosive/grenade/smokebomb, -/obj/item/explosive/grenade/smokebomb, -/obj/item/explosive/grenade/smokebomb, -/obj/item/explosive/grenade/smokebomb, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "vrI" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -74281,6 +74605,19 @@ icon_state = "bluecorner" }, /area/almayer/living/briefing) +"vrZ" = ( +/obj/structure/largecrate/machine/bodyscanner, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"vsd" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_m_s) "vse" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -74294,6 +74631,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) +"vsi" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/stern) "vsz" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -74324,20 +74668,6 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) -"vsV" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "vta" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -74407,6 +74737,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) +"vtJ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) "vub" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/sea_office) @@ -74415,9 +74751,6 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"vuv" = ( -/turf/closed/wall/almayer, -/area/almayer/hull/upper_hull/u_a_p) "vuA" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -74464,9 +74797,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"vuR" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "vuZ" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -74521,6 +74851,26 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"vvH" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"vvX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 2; + id = "OuterShutter"; + name = "\improper Saferoom Shutters" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/panic) "vvY" = ( /obj/structure/sink{ dir = 1; @@ -74574,22 +74924,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"vwN" = ( -/obj/item/clothing/gloves/botanic_leather{ - name = "leather gloves" - }, -/obj/item/clothing/gloves/botanic_leather{ - name = "leather gloves" - }, -/obj/item/clothing/gloves/botanic_leather{ - name = "leather gloves" - }, -/obj/structure/closet/crate, -/obj/item/clothing/suit/storage/hazardvest/black, +"vwJ" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/upper/u_m_p) "vwP" = ( /obj/structure/surface/table/almayer, /obj/item/prop/helmetgarb/prescription_bottle{ @@ -74612,6 +74953,10 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) +"vwU" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "vwV" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors{ dir = 4 @@ -74681,6 +75026,14 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"vyh" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "vyi" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -74702,6 +75055,12 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"vyr" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_p) "vyu" = ( /obj/structure/bed/sofa/south/white/right, /turf/open/floor/almayer{ @@ -74735,14 +75094,6 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"vzl" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "vzp" = ( /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell/cl) @@ -74768,9 +75119,24 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) +"vzB" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "vzK" = ( /turf/open/floor/almayer, /area/almayer/engineering/ce_room) +"vzO" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_one_access = null; + req_one_access_txt = "2;30;34" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_m_s) "vzP" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/cups, @@ -74790,6 +75156,17 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"vAg" = ( +/obj/structure/largecrate/random/barrel/blue, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = -32 + }, +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "vAq" = ( /obj/structure/bed/chair{ dir = 1 @@ -74799,6 +75176,20 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"vAx" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"vAz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "vAE" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -74868,6 +75259,10 @@ icon_state = "silver" }, /area/almayer/living/briefing) +"vBC" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "vBJ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, @@ -74928,6 +75323,10 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) +"vCE" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "vCO" = ( /obj/effect/landmark/start/bridge, /turf/open/floor/plating/plating_catwalk, @@ -74940,6 +75339,40 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) +"vDh" = ( +/obj/structure/largecrate/random, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) +"vDt" = ( +/obj/item/stool, +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/upper/u_m_s) +"vDz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) +"vDN" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"vDR" = ( +/obj/structure/surface/rack, +/obj/item/tool/wet_sign, +/obj/item/tool/wet_sign, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "vEf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -74988,6 +75421,10 @@ /obj/structure/machinery/vending/coffee, /turf/open/floor/almayer, /area/almayer/living/briefing) +"vEI" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "vEV" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -74998,17 +75435,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"vFb" = ( -/obj/structure/surface/table/almayer, -/obj/item/attachable/lasersight, -/obj/item/reagent_container/food/drinks/cans/souto/vanilla{ - pixel_x = 10; - pixel_y = 11 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "vFn" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -75037,21 +75463,19 @@ icon_state = "plate" }, /area/almayer/engineering/lower) -"vGk" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) -"vGr" = ( -/obj/structure/closet/firecloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, +"vFI" = ( +/obj/structure/largecrate/random/secure, +/obj/item/weapon/baseballbat/metal{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/clothing/glasses/sunglasses{ + pixel_y = 5 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) -"vGy" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_f_p) "vGA" = ( /obj/structure/bed/sofa/south/grey/right, /turf/open/floor/almayer{ @@ -75096,6 +75520,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"vHn" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_m_s) "vHq" = ( /obj/item/device/assembly/mousetrap/armed, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -75209,6 +75636,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"vIg" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_a_s) "vIm" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -75226,17 +75659,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cichallway) -"vIA" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "vIN" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 15; @@ -75267,30 +75689,10 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"vJy" = ( -/obj/structure/machinery/vending/cigarette{ - density = 0; - pixel_y = 18 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"vJM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) +"vJR" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_stern) "vJV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -75333,16 +75735,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"vKf" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "InnerShutter"; - name = "\improper Saferoom Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "vKB" = ( /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, /obj/structure/machinery/light/small{ @@ -75367,6 +75759,12 @@ allow_construction = 0 }, /area/almayer/hallways/aft_hallway) +"vKI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "vLg" = ( /obj/item/trash/uscm_mre, /obj/structure/bed/chair/comfy/charlie, @@ -75374,14 +75772,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"vLh" = ( -/obj/item/roller, -/obj/structure/surface/rack, -/obj/item/roller, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_s) "vLj" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -75397,15 +75787,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) -"vLv" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "vLA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -75420,15 +75801,13 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) -"vMn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/blue, -/turf/open/floor/almayer{ - icon_state = "plate" +"vMb" = ( +/obj/item/stool{ + pixel_x = -15; + pixel_y = 6 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "vMo" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_four) @@ -75482,6 +75861,10 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"vMQ" = ( +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_p) "vNp" = ( /obj/structure/sign/safety/three{ pixel_x = -17 @@ -75508,9 +75891,30 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) +"vOw" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/tool, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_m_s) "vOy" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/medical_science) +"vOG" = ( +/obj/structure/largecrate/supply/ammo/m41a/half, +/obj/structure/largecrate/supply/ammo/pistol/half{ + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/p_bow) +"vOM" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "vON" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -75529,6 +75933,21 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) +"vOY" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + req_one_access = null; + req_one_access_txt = "2;7" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "CIC Lockdown"; + name = "\improper Combat Information Center Blast Door" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/mess) "vPf" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/locked{ @@ -75538,39 +75957,10 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/perma) -"vPj" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/device/flashlight/lamp{ - pixel_y = 8 - }, -/obj/structure/pipes/vents/pump{ - dir = 4 - }, -/obj/item/clothing/glasses/science{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/device/flash, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) "vPm" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) -"vPr" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "vPv" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -75700,9 +76090,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"vRz" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_f_p) +"vRJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1; + name = "\improper Emergency Air Storage" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) "vRR" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -75729,15 +76126,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) -"vSg" = ( -/obj/structure/machinery/light/small, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "vSl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -75760,6 +76148,21 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"vSr" = ( +/obj/structure/largecrate/random/case/double, +/obj/item/tool/wet_sign{ + pixel_y = 18 + }, +/obj/item/trash/cigbutt/ucigbutt{ + desc = "A handful of rounds to reload on the go."; + icon = 'icons/obj/items/weapons/guns/handful.dmi'; + icon_state = "bullet_2"; + name = "handful of pistol bullets (9mm)"; + pixel_x = -8; + pixel_y = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) "vSE" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/almayer{ @@ -75773,15 +76176,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"vSH" = ( -/obj/structure/platform{ - dir = 8 - }, -/obj/item/stack/sheet/metal, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "vSK" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -75834,9 +76228,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"vTK" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_a_p) "vTS" = ( /obj/structure/machinery/light{ pixel_x = 16 @@ -75886,29 +76277,21 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"vUi" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"vUk" = ( -/obj/item/storage/toolbox/mechanical{ - pixel_y = 13 +"vUJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/area/almayer/hull/upper_hull/u_m_s) -"vUI" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = 32 +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 }, -/obj/structure/sign/safety/restrictedarea{ - pixel_y = 32 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/lower/l_a_p) "vUP" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/cic_hallway) @@ -75948,13 +76331,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) -"vVh" = ( -/obj/item/weapon/dart/green, -/obj/structure/dartboard{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "vVs" = ( /turf/open/floor/almayer{ icon_state = "sterile_green" @@ -76005,10 +76381,10 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) +"vVY" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/upper/u_m_s) "vWc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/surface/table/almayer, /obj/item/device/radio/intercom/normandy{ layer = 3.5 @@ -76039,17 +76415,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"vWx" = ( -/obj/structure/largecrate/random/barrel/blue, -/obj/structure/sign/safety/restrictedarea{ - pixel_y = -32 - }, -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "vWA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -76163,26 +76528,18 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower) -"vXX" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) -"vXY" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ +"vXv" = ( +/obj/structure/machinery/light{ dir = 1 }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10"; + pixel_y = 14 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/medical/upper_medical) "vYi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -76274,15 +76631,6 @@ "vZw" = ( /turf/open/floor/almayer/research/containment/floor2, /area/almayer/medical/containment/cell/cl) -"vZA" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/hvac_old{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "vZU" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/power/apc/almayer{ @@ -76302,6 +76650,15 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"wac" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "wan" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/brown, @@ -76343,13 +76700,18 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) -"wbx" = ( -/obj/structure/sign/safety/hazard{ - desc = "A sign that warns of a hazardous environment nearby"; - name = "\improper Warning: Hazardous Environment" +"wby" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper Starboard Viewing Room" }, -/turf/closed/wall/almayer, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_f_s) "wbC" = ( /obj/structure/machinery/atm{ pixel_y = 32 @@ -76403,6 +76765,15 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_four) +"wbV" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/living/cryo_cells) "wbX" = ( /obj/structure/closet/secure_closet/cmdcabinet{ pixel_y = 24 @@ -76422,9 +76793,6 @@ icon_state = "redfull" }, /area/almayer/lifeboat_pumps/south2) -"wcn" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "wct" = ( /obj/structure/closet/radiation, /turf/open/floor/almayer{ @@ -76432,6 +76800,14 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"wcJ" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/s_bow) "wcN" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -76526,10 +76902,14 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"wdH" = ( -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +"wdG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_f_p) "wdI" = ( /turf/open/floor/almayer{ dir = 1; @@ -76544,6 +76924,12 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"wdW" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "wed" = ( /obj/structure/surface/table/almayer, /obj/item/storage/belt/utility/full, @@ -76570,6 +76956,16 @@ icon_state = "test_floor4" }, /area/almayer/medical/hydroponics) +"wes" = ( +/obj/structure/machinery/cm_vending/sorted/medical/marinemed, +/obj/structure/sign/safety/medical{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "wex" = ( /obj/structure/sign/safety/bathunisex{ pixel_x = 8; @@ -76602,14 +76998,6 @@ icon_state = "cargo" }, /area/almayer/living/offices) -"weU" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "wfn" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ @@ -76701,14 +77089,13 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"wgo" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"wgO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_p) "wgR" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/technology_scanner, @@ -76719,20 +77106,14 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"wgU" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +"whm" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"whc" = ( -/obj/structure/closet, -/obj/item/clothing/glasses/welding, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_m_s) "whA" = ( /turf/open/floor/almayer/uscm/directional, /area/almayer/living/briefing) @@ -76751,6 +77132,9 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"wid" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/p_bow) "wiz" = ( /obj/structure/bed/chair{ dir = 4 @@ -76792,6 +77176,17 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"wiO" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldingtool, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "wiW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -76848,6 +77243,33 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/starboard) +"wjP" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) +"wjQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = -14; + pixel_y = 13 + }, +/obj/structure/prop/invuln/overhead_pipe{ + dir = 4; + pixel_x = 12; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/mess) "wjY" = ( /obj/structure/closet/secure_closet/warrant_officer, /turf/open/floor/wood/ship, @@ -76904,17 +77326,6 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wkL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "wkM" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "ARES StairsLower"; @@ -76976,14 +77387,22 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/execution) -"wlp" = ( +"wlh" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/squads/req) +"wlB" = ( +/obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_m_p) +/area/almayer/maint/hull/upper/u_m_p) "wlE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -77010,12 +77429,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"wlL" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "wmg" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -77127,16 +77540,9 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"woG" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"woM" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) +"woU" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/u_m_p) "wpg" = ( /obj/structure/machinery/blackbox_recorder, /turf/open/shuttle/dropship{ @@ -77153,6 +77559,20 @@ }, /turf/open/floor/carpet, /area/almayer/command/corporateliaison) +"wpu" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/device/flashlight/lamp{ + pixel_y = 8 + }, +/obj/item/clothing/glasses/science{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/device/flash, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) "wpw" = ( /obj/structure/bed/chair/comfy/ares{ dir = 1 @@ -77192,6 +77612,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"wpT" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "wqc" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -77235,10 +77661,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"wqE" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) "wqW" = ( /obj/structure/closet/secure_closet/CMO, /obj/structure/machinery/light{ @@ -77249,6 +77671,14 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) +"wra" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "wrC" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -77321,6 +77751,23 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"wsw" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) +"wsz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "wsD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -77333,16 +77780,31 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"wtd" = ( -/obj/structure/machinery/vending/coffee, -/obj/item/toy/bikehorn/rubberducky{ - desc = "You feel as though this rubber duck has been here for a long time. It's Mr. Quackers! He loves you!"; - name = "Quackers"; - pixel_x = 5; - pixel_y = 17 +"wtk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"wtn" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/item/storage/firstaid{ + pixel_x = -13; + pixel_y = 13 + }, +/obj/item/clipboard, +/obj/item/paper, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "wty" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -77352,6 +77814,14 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/delta) +"wtD" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "Brig" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/p_bow) "wtM" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -77377,6 +77847,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"wub" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) "wuc" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ name = "\improper Brig Medbay"; @@ -77402,12 +77880,26 @@ icon_state = "orangefull" }, /area/almayer/engineering/lower/workshop) -"wul" = ( -/obj/structure/machinery/light/small{ +"wuh" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/autoopenclose{ + pixel_y = 32 + }, +/obj/structure/sign/safety/water{ + pixel_x = 15; + pixel_y = 32 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +/area/almayer/maint/hull/lower/l_f_p) "wup" = ( /obj/structure/supply_drop/echo, /turf/open/floor/almayer, @@ -77430,13 +77922,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop) -"wuH" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, -/obj/item/reagent_container/food/snacks/sliceable/pizza/mushroompizza, -/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_p) "wuT" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -77522,12 +78007,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"wwD" = ( -/obj/structure/bed/chair/comfy/orange, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "wwJ" = ( /obj/structure/surface/table/almayer, /obj/item/paper, @@ -77575,6 +78054,16 @@ icon_state = "plate" }, /area/almayer/medical/lower_medical_medbay) +"wxu" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) +"wxy" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/p_stern) "wxU" = ( /obj/item/ashtray/bronze{ pixel_x = 7; @@ -77599,18 +78088,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"wya" = ( -/obj/structure/platform, -/obj/structure/largecrate/random/case/double{ - layer = 2.98 - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "wyt" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/microwave{ @@ -77621,17 +78098,22 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wyO" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +"wyz" = ( +/obj/structure/bed/chair{ + dir = 4 }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) +"wyG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/lower/l_m_s) "wyQ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door_control{ @@ -77644,14 +78126,6 @@ icon_state = "plating" }, /area/almayer/command/airoom) -"wzg" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "wzZ" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ dir = 1; @@ -77662,7 +78136,7 @@ req_one_access = null }, /turf/open/floor/almayer{ - icon_state = "sterile_green" + icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) "wAR" = ( @@ -77697,19 +78171,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/upper/starboard) -"wBY" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"wCh" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "wCk" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/wooden_tv/ot{ @@ -77748,17 +78209,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"wCZ" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/obj/structure/machinery/door/airlock/almayer/maint/reinforced, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "wDg" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -77769,31 +78219,25 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"wDm" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "wDp" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/device/camera_film{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/item/device/camera_film, +/obj/structure/machinery/photocopier, /turf/open/floor/almayer{ dir = 10; icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"wDq" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"wDr" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/lower/stairs) "wDs" = ( /obj/structure/machinery/seed_extractor, /obj/structure/sign/safety/terminal{ @@ -77858,15 +78302,14 @@ "wDM" = ( /turf/closed/wall/almayer/reinforced/temphull, /area/almayer/engineering/upper_engineering) -"wDR" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"wDP" = ( +/obj/structure/sign/safety/storage{ + pixel_x = -17 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_s) +/area/almayer/maint/hull/lower/l_f_p) "wEd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -77878,39 +78321,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"wEe" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/liaison_suit/formal, -/obj/item/clothing/under/liaison_suit, -/obj/item/clothing/under/liaison_suit/outing, -/obj/item/clothing/under/liaison_suit/suspenders, -/obj/item/clothing/under/blackskirt{ - desc = "A stylish skirt, in a business-black and red colour scheme."; - name = "liaison's skirt" - }, -/obj/item/clothing/under/suit_jacket/charcoal{ - desc = "A professional black suit and blue tie. A combination popular among government agents and corporate Yes-Men alike."; - name = "liaison's black suit" - }, -/obj/item/clothing/under/suit_jacket/navy{ - desc = "A navy suit and red tie, intended for the Almayer's finest. And accountants."; - name = "liaison's navy suit" - }, -/obj/item/clothing/under/suit_jacket/trainee, -/obj/item/clothing/under/liaison_suit/charcoal, -/obj/item/clothing/under/liaison_suit/outing/red, -/obj/item/clothing/under/liaison_suit/blazer, -/obj/item/clothing/suit/storage/snow_suit/liaison, -/obj/item/clothing/gloves/black, -/obj/item/clothing/gloves/marine/dress, -/obj/item/clothing/glasses/sunglasses/big, -/obj/item/clothing/accessory/blue, -/obj/item/clothing/accessory/red, -/obj/structure/machinery/status_display{ - pixel_x = -32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliaison) "wEg" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "agentshuttle"; @@ -77952,12 +78362,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"wFm" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "wFn" = ( /obj/structure/surface/rack, /obj/item/clothing/suit/storage/marine/light/vest, @@ -77985,9 +78389,34 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"wFN" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "OfficeSafeRoom"; + name = "\improper Office Safe Room" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "wFR" = ( /turf/open/floor/almayer, /area/almayer/living/gym) +"wFX" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"wGa" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_s) "wGb" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -78003,14 +78432,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"wGi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"wGe" = ( +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/maint/hull/lower/l_f_p) "wGA" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -78025,13 +78452,6 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"wGI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "wGX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -78094,6 +78514,12 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"wIu" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "wIC" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/chief_mp_office) @@ -78162,6 +78588,10 @@ icon_state = "cargo" }, /area/almayer/command/airoom) +"wJC" = ( +/obj/structure/largecrate/random/barrel/yellow, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "wJD" = ( /obj/structure/bed/chair{ dir = 8; @@ -78183,13 +78613,12 @@ "wJH" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell/cl) -"wKn" = ( -/obj/structure/surface/rack, -/obj/item/facepaint/sniper, -/turf/open/floor/almayer{ - icon_state = "plate" +"wKb" = ( +/obj/structure/bed/chair{ + dir = 8 }, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_f_s) "wKF" = ( /obj/structure/machinery/power/apc/almayer{ cell_type = /obj/item/cell/hyper; @@ -78232,18 +78661,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"wLk" = ( -/obj/item/coin/silver{ - desc = "A small coin, bearing the falling falcons insignia."; - name = "falling falcons challenge coin" - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) "wLm" = ( /turf/open/floor/almayer{ dir = 4; @@ -78320,15 +78737,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) -"wMm" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "wMv" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -78337,6 +78745,12 @@ icon_state = "dark_sterile" }, /area/almayer/living/auxiliary_officer_office) +"wMF" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_bow) "wMG" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -78378,14 +78792,6 @@ icon_state = "orange" }, /area/almayer/living/port_emb) -"wNm" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull) "wNt" = ( /turf/open/floor/almayer{ dir = 1; @@ -78417,6 +78823,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) +"wOv" = ( +/obj/structure/platform, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "wOK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -78426,6 +78838,18 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"wPa" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/item/reagent_container/glass/rag, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "wPf" = ( /obj/structure/sign/safety/reception{ pixel_x = 32; @@ -78461,21 +78885,21 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wPR" = ( +/obj/structure/closet, +/obj/item/clothing/under/marine, +/obj/item/clothing/suit/storage/marine, +/obj/item/clothing/head/helmet/marine, +/obj/item/clothing/head/beret/cm, +/obj/item/clothing/head/beret/cm, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) "wQg" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "greencorner" }, /area/almayer/hallways/aft_hallway) -"wQx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_a_s) "wQA" = ( /obj/structure/pipes/standard/simple/visible{ dir = 5 @@ -78489,15 +78913,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower/engine_core) -"wRa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/safety/bulkhead_door{ - pixel_y = -34 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "wRN" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/goldappleseed, @@ -78570,6 +78985,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/lobby) +"wSx" = ( +/obj/structure/platform_decoration, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "wSK" = ( /obj/structure/janitorialcart, /obj/item/tool/mop, @@ -78633,6 +79057,23 @@ icon_state = "red" }, /area/almayer/living/briefing) +"wTn" = ( +/obj/structure/machinery/light/small{ + dir = 1; + pixel_y = 20 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_s) +"wTu" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/extinguisher, +/obj/item/tool/extinguisher, +/obj/item/tool/crowbar, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/maint/upper/mess) "wTw" = ( /obj/structure/machinery/cm_vending/sorted/attachments/squad{ req_access = null; @@ -78685,27 +79126,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"wUJ" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "wUK" = ( /turf/open/floor/almayer{ dir = 8; icon_state = "orangecorner" }, /area/almayer/engineering/lower/workshop/hangar) -"wUN" = ( -/obj/structure/machinery/optable, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"wUO" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "InnerShutter"; - name = "\improper Saferoom Shutters" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_f_s) "wUP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -78721,15 +79153,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"wUS" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "wUX" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/snacks/sliceable/cheesewheel/mature{ @@ -78744,9 +79167,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"wVb" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_a_s) "wVt" = ( /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/plating/plating_catwalk, @@ -78793,30 +79213,17 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"wVD" = ( +"wVN" = ( +/obj/item/roller, /obj/structure/surface/rack, -/obj/item/tool/wirecutters, -/obj/item/tool/shovel/snow, +/obj/item/roller, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) -"wVP" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/shipboard/panic) "wVW" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/cic) -"wWf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/yautja_teleport, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "wWg" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -78857,15 +79264,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"wWL" = ( -/obj/item/tool/screwdriver, -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "wWP" = ( /obj/structure/prop/cash_register/broken, /obj/structure/machinery/light/small, @@ -78890,11 +79288,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"wWT" = ( -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_f_p) "wWX" = ( /obj/effect/landmark/start/marine/engineer/delta, /obj/effect/landmark/late_join/delta, @@ -78908,6 +79301,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) +"wXl" = ( +/obj/structure/platform, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "wXH" = ( /obj/structure/bed/chair{ dir = 1 @@ -78920,6 +79319,12 @@ icon_state = "greencorner" }, /area/almayer/living/grunt_rnr) +"wXJ" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "wXT" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ name = "\improper Engineering Storage" @@ -78934,24 +79339,29 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north2) -"wYj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/obj/structure/bed/sofa/south/white/left{ - pixel_y = 16 +"wYd" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" }, +/area/almayer/maint/hull/lower/l_a_p) +"wYr" = ( +/obj/structure/machinery/gel_refiller, /turf/open/floor/almayer{ - dir = 9; - icon_state = "silver" + icon_state = "sterile_green_side" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/medical/lower_medical_medbay) "wYA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"wYG" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/lower/l_m_s) "wYK" = ( /obj/structure/barricade/handrail/medical, /turf/open/floor/almayer{ @@ -79005,14 +79415,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"wZH" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "wZL" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -79037,18 +79439,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/execution) -"wZT" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "wZX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -79066,13 +79456,12 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"xae" = ( -/obj/structure/surface/table/almayer, -/obj/item/organ/lungs/prosthetic, +"xas" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/p_bow) "xaC" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/kitchen/utensil/pfork{ @@ -79138,11 +79527,24 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"xbg" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) "xbk" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/gym) +"xbI" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "xbN" = ( /obj/structure/surface/rack{ density = 0; @@ -79158,13 +79560,38 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/starboard) -"xct" = ( -/obj/item/reagent_container/food/snacks/wrapped/barcardine, -/obj/structure/surface/rack, +"xcs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) +"xcI" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/p_bow) +"xcV" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "OfficeSafeRoom"; + name = "\improper Office Safe Room" + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_a_p) +/area/almayer/shipboard/panic) "xdx" = ( /obj/structure/surface/rack, /obj/item/storage/firstaid/regular/empty, @@ -79204,41 +79631,64 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) -"xeG" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_p) -"xfc" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/sign/safety/cryo{ - pixel_x = 36 +"xee" = ( +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull) -"xfh" = ( -/obj/structure/largecrate/supply/floodlights, +/area/almayer/maint/hull/lower/l_f_p) +"xef" = ( +/obj/structure/surface/table/almayer, +/obj/item/folder/yellow, +/obj/structure/machinery/keycard_auth{ + pixel_x = -8; + pixel_y = 25 + }, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 26 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) -"xfk" = ( +/area/almayer/engineering/lower/workshop) +"xer" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) +"xew" = ( /obj/structure/surface/rack, -/obj/item/stack/cable_coil, -/obj/item/attachable/flashlight/grip, -/obj/item/ammo_box/magazine/l42a{ - pixel_y = 14 - }, +/obj/item/facepaint/sniper, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/maint/hull/upper/u_m_s) "xfm" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/cafeteria_officer) +"xfq" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/item/clipboard, +/obj/item/paper, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "xfK" = ( /obj/structure/machinery/light{ dir = 1 @@ -79282,6 +79732,17 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_one) +"xfW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/m41a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_s) "xgh" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -79291,22 +79752,22 @@ }, /area/almayer/medical/lower_medical_lobby) "xgm" = ( -/obj/structure/reagent_dispensers/oxygentank, +/obj/structure/reagent_dispensers/fueltank/oxygentank, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"xgn" = ( +"xgr" = ( /obj/structure/ladder{ height = 1; - id = "ForePortMaint" + id = "AftPortMaint" }, /obj/structure/sign/safety/ladder{ pixel_x = 8; pixel_y = -32 }, /turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_f_p) +/area/almayer/maint/hull/lower/l_a_p) "xgx" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -79327,28 +79788,15 @@ /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) "xgJ" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/machinery/cm_vending/sorted/medical/blood/bolted, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"xgL" = ( -/obj/item/clothing/head/welding{ - pixel_y = 6 - }, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "xgN" = ( /obj/structure/bed/chair/comfy/bravo{ dir = 1 @@ -79362,12 +79810,33 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"xgZ" = ( -/obj/structure/largecrate/random/case/small, +"xgP" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) +"xgS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/stern) +/area/almayer/maint/hull/lower/l_m_p) "xhn" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -79387,32 +79856,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) -"xhM" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig"; - closeOtherId = "brigmaint_n" - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, +"xhO" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/maint/hull/lower/l_a_p) "xhQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/squads/bravo) -"xhU" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "xhZ" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 @@ -79427,13 +79881,18 @@ /obj/structure/window/reinforced, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"xiz" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = -16 +"xiH" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_f_s) +"xiP" = ( +/obj/structure/closet/secure_closet/engineering_welding{ + req_one_access_txt = "7;23;27" }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/lower/s_bow) "xiU" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/tool/minihoe{ @@ -79448,6 +79907,9 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) +"xiV" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/maint/hull/upper/p_bow) "xjb" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ access_modified = 1; @@ -79540,6 +80002,21 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/shipboard/starboard_point_defense) +"xkb" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) +"xkc" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "xkd" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/cells) @@ -79574,14 +80051,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/ce_room) -"xlD" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "xlO" = ( /obj/structure/filingcabinet, /obj/item/folder/yellow, @@ -79593,9 +80062,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) -"xlX" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "xmg" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -79608,15 +80074,21 @@ icon_state = "silverfull" }, /area/almayer/shipboard/brig/cic_hallway) -"xmv" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/cameras/almayer{ - dir = 1 +"xmn" = ( +/obj/structure/surface/rack, +/obj/item/tool/weldpack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/item/storage/toolbox/mechanical/green{ + pixel_x = 1; + pixel_y = -1 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_f_p) "xmJ" = ( /obj/structure/closet, /obj/structure/sign/safety/bathunisex{ @@ -79681,10 +80153,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"xnY" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "xoe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -79700,16 +80168,12 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"xoh" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "xoj" = ( /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop) +"xoB" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/u_f_s) "xoJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -79724,23 +80188,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"xpd" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) -"xpf" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "xpi" = ( /obj/structure/sink{ dir = 8; @@ -79775,12 +80222,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) -"xpt" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "xpI" = ( /obj/structure/stairs{ dir = 4 @@ -79794,6 +80235,12 @@ allow_construction = 0 }, /area/almayer/hallways/starboard_hallway) +"xpL" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_p) "xpT" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -79873,6 +80320,19 @@ icon_state = "plate" }, /area/almayer/command/corporateliaison) +"xrg" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/airlock{ + pixel_x = 32; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "xrq" = ( /obj/structure/closet/firecloset, /obj/item/clothing/mask/gas, @@ -79921,13 +80381,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) -"xrN" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hull/upper_hull/u_a_p) "xsg" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -79941,6 +80394,22 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"xss" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/lower/cryo_cells) +"xsv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "xsw" = ( /turf/open/floor/almayer{ dir = 6; @@ -79956,22 +80425,26 @@ icon_state = "plating" }, /area/almayer/medical/upper_medical) +"xsQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/dart, +/obj/item/weapon/dart, +/obj/item/weapon/dart, +/obj/item/weapon/dart/green, +/obj/item/weapon/dart/green, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "xsW" = ( /obj/structure/machinery/cm_vending/gear/vehicle_crew, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) -"xtD" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldpack, -/obj/item/storage/toolbox/mechanical, -/obj/item/reagent_container/spray/cleaner, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/hull/upper_hull/u_a_s) "xtM" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -79979,36 +80452,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"xtQ" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = 9 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = -3 - }, -/obj/structure/noticeboard{ - desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "xuc" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -80016,12 +80459,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"xuB" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "xuE" = ( /obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ dir = 1; @@ -80047,13 +80484,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell) -"xuI" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "xuQ" = ( /obj/structure/bed/chair{ dir = 4 @@ -80121,6 +80551,15 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"xwd" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "xwl" = ( /obj/structure/window/reinforced{ dir = 4; @@ -80157,10 +80596,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"xwq" = ( -/obj/structure/largecrate/supply/supplies/mre, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "xwE" = ( /obj/structure/bed/chair/comfy/alpha, /obj/effect/decal/cleanable/dirt, @@ -80185,15 +80620,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"xxe" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "xxh" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -80266,6 +80692,19 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"xxG" = ( +/obj/structure/prop/holidays/string_lights{ + pixel_y = 27 + }, +/obj/structure/largecrate/random/barrel/red, +/obj/item/reagent_container/food/drinks/cans/cola{ + pixel_x = -2; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "xxI" = ( /obj/structure/cargo_container/wy/mid, /obj/structure/sign/poster{ @@ -80306,20 +80745,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"xxJ" = ( -/obj/structure/platform, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"xxT" = ( -/obj/structure/surface/table/almayer, -/obj/item/frame/table, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "xxZ" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -80369,12 +80794,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/port) -"xyE" = ( -/obj/structure/toilet{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "xyL" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -80395,6 +80814,11 @@ icon_state = "green" }, /area/almayer/squads/req) +"xyZ" = ( +/obj/structure/machinery/light/small, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/s_bow) "xzf" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -80405,13 +80829,12 @@ icon_state = "blue" }, /area/almayer/living/basketball) -"xzo" = ( -/obj/item/stack/catwalk, -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/plating, -/area/almayer/hull/upper_hull/u_a_p) +"xzh" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/upper/u_m_p) +"xzB" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_s) "xzO" = ( /obj/structure/closet/secure_closet{ name = "\improper Execution Firearms" @@ -80444,6 +80867,13 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"xAu" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/s_bow) "xAB" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -80488,6 +80918,12 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) +"xBK" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/maint/hull/upper/u_f_p) "xBQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -80495,6 +80931,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"xBS" = ( +/obj/structure/bed/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "xBV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -80524,39 +80968,17 @@ }, /turf/open/floor/carpet, /area/almayer/command/corporateliaison) -"xCj" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) -"xCm" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"xCN" = ( -/obj/structure/prop/holidays/string_lights{ - pixel_y = 27 - }, -/obj/structure/largecrate/random/barrel/red, -/obj/item/reagent_container/food/drinks/cans/cola{ - pixel_x = -2; - pixel_y = 16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"xCR" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_s) -"xCX" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 +"xCy" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -19; + pixel_y = -6 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/sign/safety/bulkhead_door{ + pixel_x = -19; + pixel_y = 6 }, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "xDe" = ( /obj/effect/projector{ name = "Almayer_Down4"; @@ -80567,31 +80989,12 @@ allow_construction = 0 }, /area/almayer/hallways/upper/port) -"xDj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "xDn" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"xDp" = ( -/obj/structure/surface/rack, -/obj/item/paper{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/folder/yellow, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_s) "xDC" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer/no_build{ @@ -80605,6 +81008,15 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) +"xDG" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/hull/upper/u_a_s) "xDV" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -80615,6 +81027,14 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) +"xEe" = ( +/obj/structure/prop/invuln/joey, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"xEs" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_p) "xEz" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/surgery, @@ -80626,9 +81046,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) -"xEF" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/upper_hull/u_f_p) "xEO" = ( /turf/open/floor/prison{ icon_state = "kitchen" @@ -80640,6 +81057,9 @@ icon_state = "plate" }, /area/almayer/living/offices) +"xFt" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "xFw" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -80650,17 +81070,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"xFD" = ( -/obj/structure/ladder{ - height = 1; - id = "ForeStarboardMaint" - }, -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/almayer, -/area/almayer/hull/lower_hull/l_f_s) "xFP" = ( /turf/open/floor/almayer{ dir = 5; @@ -80694,6 +81103,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"xGm" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "xGo" = ( /obj/structure/machinery/autolathe, /turf/open/floor/almayer{ @@ -80721,6 +81136,15 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) +"xGF" = ( +/obj/structure/machinery/vending/snack{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_f_p) "xGJ" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -80731,19 +81155,53 @@ icon_state = "red" }, /area/almayer/living/briefing) +"xGK" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/storage/box/lights/tubes{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/ash{ + pixel_y = 19 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) +"xGT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"xHa" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_p) "xHp" = ( /turf/open/floor/almayer{ icon_state = "orange" }, /area/almayer/squads/alpha_bravo_shared) -"xHG" = ( -/obj/structure/surface/rack, +"xHD" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 10; + icon_state = "silver" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/upper/u_m_p) "xHS" = ( -/obj/structure/reagent_dispensers/oxygentank{ +/obj/structure/reagent_dispensers/fueltank/oxygentank{ anchored = 1 }, /obj/effect/decal/warning_stripes{ @@ -80754,18 +81212,15 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) -"xHW" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "cargo" +"xHX" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = 32 }, -/area/almayer/hull/upper_hull/u_f_p) -"xIb" = ( -/obj/structure/closet/emcloset, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/maint/hull/lower/p_bow) "xId" = ( /obj/structure/surface/rack, /obj/item/mortar_shell/he, @@ -80774,26 +81229,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"xIi" = ( -/obj/item/stool{ - pixel_x = 15; - pixel_y = 6 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"xIj" = ( -/obj/structure/largecrate/random/secure, -/obj/item/weapon/baseballbat/metal{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/clothing/glasses/sunglasses{ - pixel_y = 5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "xIk" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -80840,6 +81275,9 @@ }, /turf/open/floor/almayer, /area/almayer/living/offices) +"xIV" = ( +/turf/open/floor/almayer, +/area/almayer/maint/upper/mess) "xIW" = ( /obj/structure/machinery/light{ dir = 4 @@ -80874,12 +81312,12 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"xJi" = ( -/obj/structure/disposalpipe/segment, +"xJp" = ( +/obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/maint/hull/lower/l_m_s) "xJH" = ( /turf/open/floor/almayer{ icon_state = "cargo" @@ -80901,6 +81339,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"xKG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door_control{ + id = "Under Construction Shutters"; + name = "shutter-control"; + pixel_x = -25 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "xKM" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -80920,24 +81370,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/synthcloset) -"xKW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = -14; - pixel_y = 13 - }, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_x = 12; - pixel_y = 13 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "xLi" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -80965,24 +81397,22 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/general_equipment) +"xLn" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/s_stern) +"xLu" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "xMf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/shipboard/port_point_defense) -"xMh" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = -16; - pixel_y = 17 - }, -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_p) "xMj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -81020,6 +81450,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower) +"xMm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/largecrate/random/barrel/green, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_p) "xMs" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_two) @@ -81048,6 +81487,26 @@ dir = 6 }, /area/almayer/command/cic) +"xMG" = ( +/obj/structure/machinery/door_control{ + id = "OuterShutter"; + name = "Outer Shutter"; + pixel_x = 5; + pixel_y = -2; + req_one_access_txt = "1;3" + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "OfficeSafeRoom"; + name = "Office Safe Room"; + pixel_x = 5; + pixel_y = 5; + req_one_access_txt = "1;3" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "xML" = ( /obj/structure/machinery/computer/cameras/wooden_tv/prop{ pixel_x = -4; @@ -81167,6 +81626,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/vehiclehangar) +"xOs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sign/poster/pinup{ + pixel_x = -30 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/command/corporateliaison) "xOL" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -81204,10 +81675,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) -"xPE" = ( -/obj/structure/largecrate/random/barrel/white, +"xPu" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/maint/hull/upper/u_a_p) "xPZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -81223,6 +81696,24 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) +"xQd" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_p) +"xQe" = ( +/obj/structure/machinery/vending/cigarette{ + density = 0; + pixel_y = 18 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_p) "xQg" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -81232,6 +81723,13 @@ icon_state = "bluecorner" }, /area/almayer/living/pilotbunks) +"xQj" = ( +/obj/item/pipe{ + dir = 4; + layer = 3.5 + }, +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "xQm" = ( /turf/open/floor/almayer/research/containment/floor2{ dir = 1 @@ -81243,32 +81741,14 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"xRc" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/door_control{ - id = "Under Construction Shutters"; - name = "shutter-control"; - pixel_x = -25 - }, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) -"xRh" = ( -/obj/structure/bed, -/obj/item/bedsheet/green, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/machinery/cm_vending/clothing/senior_officer{ - density = 0; - pixel_y = 30 +"xQW" = ( +/obj/structure/sign/safety/bathunisex{ + pixel_x = -18 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/medical/upper_medical) +/area/almayer/maint/hull/upper/p_stern) "xRj" = ( /obj/structure/bed/chair{ dir = 8; @@ -81307,15 +81787,6 @@ dir = 1 }, /area/almayer/living/briefing) -"xRE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "xRH" = ( /obj/structure/sign/safety/fibre_optics{ pixel_y = 32 @@ -81345,12 +81816,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"xSb" = ( -/obj/structure/largecrate/random/barrel/red, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_f_p) "xSw" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -81428,6 +81893,17 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) +"xTx" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/upper/u_f_p) +"xTG" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "xTH" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -81492,6 +81968,13 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) +"xUy" = ( +/obj/item/reagent_container/food/snacks/wrapped/barcardine, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/p_stern) "xUA" = ( /obj/structure/surface/table/almayer, /obj/item/storage/pouch/tools/tank, @@ -81508,23 +81991,25 @@ icon_state = "silver" }, /area/almayer/command/cic) -"xUI" = ( -/obj/structure/largecrate/random/barrel/red, -/obj/structure/machinery/light/small{ - dir = 8 +"xUV" = ( +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) -"xUV" = ( -/obj/structure/bed/chair{ +/area/almayer/command/combat_correspondent) +"xUY" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/combat_correspondent) +/area/almayer/maint/hull/lower/l_f_p) "xVc" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door_control{ @@ -81550,15 +82035,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"xVj" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool{ - pixel_x = 6; - pixel_y = -16 - }, -/obj/item/clothing/head/welding, -/turf/open/floor/plating, -/area/almayer/hull/lower_hull/l_f_p) "xVk" = ( /turf/open/space, /area/space/almayer/lifeboat_dock) @@ -81609,7 +82085,7 @@ req_one_access_txt = "19;21" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/squads/req) "xWp" = ( @@ -81621,12 +82097,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) -"xWF" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "xWO" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 @@ -81705,11 +82175,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"xYe" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "xYf" = ( /obj/structure/machinery/cm_vending/clothing/sea, /turf/open/floor/almayer{ @@ -81717,6 +82182,12 @@ icon_state = "plating" }, /area/almayer/shipboard/sea_office) +"xYr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/p_bow) "xYB" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -81724,14 +82195,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/starboard_point_defense) -"xYN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"xYE" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 }, -/area/almayer/hull/lower_hull/l_f_s) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "xYP" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) @@ -81787,6 +82256,10 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"xZz" = ( +/obj/item/paper/almayer_storage, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_a_p) "xZG" = ( /obj/structure/machinery/light{ dir = 4 @@ -81795,23 +82268,12 @@ /obj/structure/bed, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"xZI" = ( -/obj/structure/prop/invuln/lattice_prop{ - dir = 1; - icon_state = "lattice-simple"; - pixel_x = 16; - pixel_y = -16 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) -"xZK" = ( -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "plate" +"xZH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/almayer, +/area/almayer/maint/hull/upper/u_f_p) "xZU" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -81832,13 +82294,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"yal" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "yaz" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ name = "\improper Officer's Study" @@ -81865,10 +82320,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower) -"yaG" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) "yaQ" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 9 @@ -81895,15 +82346,23 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"ybr" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 +"ybm" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/hardhat{ + pixel_x = 10; + pixel_y = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/clothing/suit/storage/hazardvest/yellow, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = 8; + pixel_y = 7 }, -/area/almayer/hull/lower_hull/l_a_p) +/turf/open/floor/plating, +/area/almayer/maint/lower/constr) "ybz" = ( /obj/structure/machinery/brig_cell/cell_4{ pixel_x = 32; @@ -81911,23 +82370,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) -"ybO" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/stack/sheet/mineral/phoron/medium_stack, -/obj/item/stack/sheet/mineral/phoron/medium_stack{ - pixel_y = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) -"ybS" = ( -/obj/structure/prop/invuln/lattice_prop{ - icon_state = "lattice12"; - pixel_y = 16 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) "ybU" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -81966,6 +82408,9 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"ycl" = ( +/turf/open/floor/plating, +/area/almayer/maint/hull/lower/l_m_s) "ycm" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -81997,10 +82442,14 @@ icon_state = "green" }, /area/almayer/squads/req) -"ycV" = ( -/obj/structure/curtain/red, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) +"ycM" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_m_p) "ycZ" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -82010,6 +82459,15 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"ydf" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/largecrate/random/case, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/upper/u_a_s) "ydh" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -82020,15 +82478,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"ydx" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "ydz" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -82123,13 +82572,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"yeP" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "yeR" = ( /obj/structure/machinery/cm_vending/clothing/senior_officer{ req_access = null; @@ -82175,25 +82617,6 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) -"yfy" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/crushed_cup, -/obj/item/reagent_container/food/drinks/cup{ - pixel_x = -5; - pixel_y = 9 - }, -/obj/item/spacecash/c10{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/ashtray/plastic{ - pixel_x = 5; - pixel_y = -10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_m_s) "yfG" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -82206,6 +82629,19 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"yfL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/bed/sofa/south/white/left{ + pixel_y = 16 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "silver" + }, +/area/almayer/maint/hull/upper/u_m_p) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -82222,21 +82658,19 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"ygy" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"ygv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_f_p) -"ygK" = ( -/obj/structure/prop/almayer/computers/sensor_computer3, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/safety/nonpress_ag{ + pixel_x = 15; + pixel_y = -32 }, -/area/almayer/hull/lower_hull/l_m_s) +/obj/structure/sign/safety/west{ + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_f_p) "yhg" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -82245,15 +82679,42 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"yht" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/living/cryo_cells) "yhI" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"yhQ" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/hull/lower_hull/l_m_p) +"yhR" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_m_s) +"yhZ" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/maint/hull/lower/p_bow) +"yia" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/lower/l_a_s) +"yih" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_m_s) "yiq" = ( /obj/structure/sign/safety/north{ pixel_x = -17; @@ -82275,16 +82736,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"yiC" = ( -/obj/structure/surface/table/almayer, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - pixel_y = 11 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_f_p) "yiW" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -82316,10 +82767,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"yji" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) "yjq" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ icon_state = "almayer_pdoor"; @@ -82329,6 +82776,15 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) +"yjE" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/stern) "yjG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -82363,23 +82819,15 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) -"yky" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "cargo" +"ykv" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "InnerShutter"; + name = "\improper Saferoom Shutters" }, -/area/almayer/hull/lower_hull/l_m_s) -"ykF" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" + icon_state = "test_floor4" }, -/area/almayer/hull/lower_hull/l_m_s) +/area/almayer/shipboard/panic) "ykI" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -82402,6 +82850,61 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/main_office) +"ykY" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/maint/hull/upper/u_m_s) "ylc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -82446,33 +82949,16 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"ylY" = ( -/obj/structure/largecrate/random/case/double, -/obj/item/tool/wet_sign{ - pixel_y = 18 - }, -/obj/item/trash/cigbutt/ucigbutt{ - desc = "A handful of rounds to reload on the go."; - icon = 'icons/obj/items/weapons/guns/handful.dmi'; - icon_state = "bullet_2"; - name = "handful of pistol bullets (9mm)"; - pixel_x = -8; - pixel_y = 10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_m_s) -"ymi" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - req_one_access = null; - req_one_access_txt = "2;30;34" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"ymg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/maint/hull/lower/l_f_p) (1,1,1) = {" aaa @@ -90228,8 +90714,8 @@ aaa aaa aaa aad -pCi -pCi +uDg +uDg hPI pQr rib @@ -90247,8 +90733,8 @@ jNT jNT wSK feb -xEF -xEF +xiV +xiV ajZ aaa aaa @@ -90430,9 +90916,9 @@ aaf aaf aaf aaf -pCi -pCi -sBo +uDg +uDg +lHk naB wnw pHp @@ -90450,9 +90936,9 @@ xzO pNk jIH mtl -gbO -xEF -xEF +igS +xiV +xiV aaf aaf aaf @@ -90626,19 +91112,19 @@ aaa aaa aaa aad -pCi -pCi -pCi -pCi -pCi -pCi -pCi -pCi -cpf -cHP +uDg +uDg +uDg +uDg +uDg +uDg +uDg +uDg +aPN +lSJ naB pQr -tYW +jeR wvI vPf fvA @@ -90653,16 +91139,16 @@ mtl mtl mtl mtl -dgq -sGe -xEF -xEF -xEF -xEF -xEF -xEF -xEF -xEF +iuf +pnh +xiV +xiV +xiV +xiV +xiV +xiV +xiV +xiV ajZ aaa aaa @@ -90829,16 +91315,16 @@ aaa aaa aaa aad -pCi -mUQ -rPC -wcn -eEf -xhM -wcn -tng -hGD -qUE +uDg +cth +gkr +xkc +oGj +hSj +xkc +mph +nlh +rGr naB naB naB @@ -90854,18 +91340,18 @@ rdA alF sql alF -dTQ -kIV -iYi -gSs -eyd -kIV -kQz -jjX -kIV -kIV -flP -xEF +rwe +pdp +hZw +xYr +mjs +pdp +ohu +iUh +pdp +pdp +kSn +xiV ajZ bdH bdH @@ -91032,19 +91518,19 @@ bdH aac aaf aag -pCi -rPC -wcn -rPC -vWx -age -aNk -rTV -wcn -tYB +uDg +gkr +xkc +gkr +vAg +gxI +kqC +bBU +xkc +eeA naB pQr -cjz +ggS wvI piK fvA @@ -91060,15 +91546,15 @@ xkd xkd xkd xkd -shw -ecP -nxc -qFl -vUI -mnm -mnm -kIV -xEF +lRt +tsE +iVG +hmA +hmZ +oDh +oDh +pdp +xiV aag aaf ajY @@ -91234,10 +91720,10 @@ bdH bdH aad aag -pCi -pCi -rPC -wcn +uDg +uDg +gkr +xkc vBm vBm vBm @@ -91269,10 +91755,10 @@ xkd xkd xkd xkd -kIV -mnm -xEF -xEF +pdp +oDh +xiV +xiV aag ajZ bdH @@ -91437,10 +91923,10 @@ bdH bdH aad aag -pCi -ext -rPC -mUQ +uDg +pOp +gkr +cth vBm rBV oPk @@ -91472,10 +91958,10 @@ uns vCy eyV xkd -dAb -mnm -kIV -xEF +mkF +oDh +pdp +xiV aag ajZ bdH @@ -91640,10 +92126,10 @@ bdH bdH aad aag -pCi -oCL -wcn -fuB +uDg +lDT +xkc +xyZ vBm ldu wgi @@ -91675,10 +92161,10 @@ xGh jVa wDs xkd -ukt -mnm -kIV -xEF +oHf +oDh +pdp +xiV aag ajZ bdH @@ -91843,9 +92329,9 @@ bdH bdH aad aag -pCi -wcn -rPC +uDg +xkc +gkr vBm vBm sFC @@ -91855,7 +92341,7 @@ vBm lOI pJv jLM -tak +btn cMb rbi wDp @@ -91879,9 +92365,9 @@ tUx wRN xkd xkd -kIV -mnm -xEF +pdp +oDh +xiV aag ajZ bdH @@ -91949,10 +92435,10 @@ aaa bdH aad aag -nXP -nXP -nXP -nXP +nBJ +nBJ +nBJ +nBJ aag dqw uwv @@ -91974,10 +92460,10 @@ dqw aag aag aag -vRz -vRz -vRz -vRz +wid +wid +wid +wid aag ajZ bdH @@ -92046,9 +92532,9 @@ bdH bdH aad aag -ahE -wcn -rPC +lrE +xkc +gkr vBm ykP xAj @@ -92082,9 +92568,9 @@ tUx xJe qLt xkd -kIV -mnm -ils +pdp +oDh +cPj aag etE bdH @@ -92152,9 +92638,9 @@ aaa bdH aad aag -nXP -xFD -ntA +nBJ +kJc +jFt bAs bAs bAs @@ -92178,9 +92664,9 @@ bTT bTT bTT bAs -vIA -xgn -vRz +kOR +jYM +wid aag ajZ bdH @@ -92249,9 +92735,9 @@ bdH bdH aad aag -ahE -rPC -wcn +lrE +gkr +xkc vBm ykP xjG @@ -92285,9 +92771,9 @@ ycm qCo pWr xkd -uqa -mnm -ils +aGa +oDh +cPj aag ajZ bdH @@ -92355,9 +92841,9 @@ aaa bdH aad aag -nXP -xYN -jup +nBJ +rUi +grv bBA bAK bCY @@ -92381,9 +92867,9 @@ acr bPG acN bBA -qXM -gUv -vRz +gTK +fWg +wid aag ajZ bdH @@ -92452,9 +92938,9 @@ bdH bdH aad aag -ahE -nBc -wcn +lrE +vDh +xkc lrq lrq lrq @@ -92488,9 +92974,9 @@ cyZ jVa fJT xkd -ipT -kIV -ils +rfB +pdp +cPj aag eSU bdH @@ -92558,9 +93044,9 @@ aaa bdH aad aag -nXP -ewT -sIT +nBJ +uRR +mFQ bBA hWJ bCY @@ -92584,9 +93070,9 @@ bHP bPG hpk bBA -fTu -umT -vRz +yhZ +wtD +wid aag ajZ bdH @@ -92655,9 +93141,9 @@ bdH bdH aad aag -pCi -mUQ -aou +uDg +cth +qsp lrq kEc chv @@ -92691,9 +93177,9 @@ dfk vzz moB xkd -lmk -kIV -xEF +gNZ +pdp +xiV aag ajZ bdH @@ -92761,9 +93247,9 @@ aaa bdH aad aag -nXP -thT -mGL +nBJ +ecS +eQR gol akb bCY @@ -92787,9 +93273,9 @@ bPn bPG ald gol -nqU -pch -vRz +sGK +hLu +wid aag ajZ bdH @@ -92858,9 +93344,9 @@ bdH bdH aad aag -pCi -hKi -rPC +uDg +cUl +gkr lrq heo nqe @@ -92894,9 +93380,9 @@ eZH tUx cXi xkd -irr -kIV -xEF +ttB +pdp +xiV aag twB bdH @@ -92964,9 +93450,9 @@ aaa bdH aad aag -nXP -mGL -fEV +nBJ +eQR +xAu bBA bAN bCY @@ -92990,9 +93476,9 @@ bPo bPG acs bBA -lZB -nqU -vRz +xHX +sGK +wid aag ajZ bdH @@ -93061,9 +93547,9 @@ bdH bdH aad aag -ahE -nnF -rPC +lrE +vOM +gkr lrq kui uqo @@ -93097,9 +93583,9 @@ nYd thL jVa fgR -hPT -mnm -ils +nEc +oDh +cPj aag ajZ bdH @@ -93167,9 +93653,9 @@ aaa bdH aad aag -nXP -tRV -hJp +nBJ +ldF +eox bBA bAO bCZ @@ -93193,9 +93679,9 @@ bDW bPJ iuz bBA -vhq -orv -vRz +mVh +uMf +wid aag ajZ bdH @@ -93264,9 +93750,9 @@ bdH bdH aad aag -ahE -hUg -wcn +lrE +etN +xkc lrq sEZ nqe @@ -93300,9 +93786,9 @@ liZ rUk jVa fgR -evl -uNF -ils +azg +gKv +cPj aag rEr bdH @@ -93370,9 +93856,9 @@ aaa bdH aad aag -nXP -hJp -mGL +nBJ +ldF +eQR bBA bAP aqu @@ -93396,9 +93882,9 @@ aqu aqu bQz bBA -nqU -cEY -vRz +sGK +vOG +wid aag ajZ bdH @@ -93467,9 +93953,9 @@ bdH bdH aad aag -ahE -rPC -wcn +lrE +gkr +xkc lrq dEX fxJ @@ -93503,9 +93989,9 @@ uaU rUk xaM fgR -fQk -kIV -ils +hIG +pdp +cPj aag ajZ bdH @@ -93573,9 +94059,9 @@ aaa bdH aad aag -nXP -fNg -hJp +nBJ +vCE +ldF bBA bBu amg @@ -93599,9 +94085,9 @@ amg amg rAD bBA -nqU -vhq -vRz +sGK +mVh +wid aag ajZ bdH @@ -93670,9 +94156,9 @@ bdH bdH aad aag -pCi -wcn -wcn +uDg +xkc +xkc lrq iwV iwV @@ -93706,9 +94192,9 @@ uxa iZU nhG xkd -mnm -hgH -xEF +oDh +uqg +xiV aag uJk bdH @@ -93776,9 +94262,9 @@ aaa bdH aad aag -nXP -gjv -mGL +nBJ +amu +eQR bBA bBu amg @@ -93802,9 +94288,9 @@ amg amg rAD bBA -rpW -kAs -vRz +ozH +flr +wid aag ajZ bdH @@ -93873,9 +94359,9 @@ bdH bdH aad aag -pCi -rPC -rwS +uDg +gkr +old cQv oVf rmx @@ -93909,9 +94395,9 @@ tov thL sUs xkd -lmk -kIV -xEF +gNZ +pdp +xiV aag ajZ bdH @@ -93979,9 +94465,9 @@ aaa bdH aad aag -nXP -oZd -mGL +nBJ +kMW +eQR bBA bBv aqu @@ -94005,9 +94491,9 @@ tkq aqu bQG bBA -vht -vhq -vRz +uoO +mVh +wid aag ajZ bdH @@ -94076,9 +94562,9 @@ bdH bdH aad aag -ahE -rPC -nfI +lrE +gkr +wJC cQv cBw kde @@ -94112,9 +94598,9 @@ tov thL xhx fgR -mnm -kIV -ils +oDh +pdp +cPj aag scz bdH @@ -94182,9 +94668,9 @@ aaa bdH aad aag -nXP -lAP -mGL +nBJ +iWJ +eQR bBA bBx amg @@ -94208,9 +94694,9 @@ bPq amg rAD bBA -nqU -rSK -vRz +sGK +nhV +wid aag ajZ bdH @@ -94279,9 +94765,9 @@ bdH bdH aad aag -ahE -rPC -heV +lrE +gkr +wMF cQv eaf bEv @@ -94315,9 +94801,9 @@ iFc thL tUx fgR -kIV -fQk -ils +pdp +hIG +cPj aag ajZ bdH @@ -94385,9 +94871,9 @@ aaa aac aag aag -nXP -tpg -vmK +nBJ +dKS +ffN bBA bBy amg @@ -94411,9 +94897,9 @@ aoa amg bQE bBA -bVL -nqU -vRz +bME +sGK +wid aag aag ajY @@ -94482,9 +94968,9 @@ bdH bdH aad aag -ahE -wcn -nBc +lrE +xkc +vDh cQv eaf bEv @@ -94518,9 +95004,9 @@ thL thL tUx fgR -kIV -mKf -ils +pdp +aCA +cPj aag okD bdH @@ -94587,10 +95073,10 @@ aaa aaa aad aag -nXP -nXP -mGL -mGL +nBJ +nBJ +eQR +bTW bBA bBz aqu @@ -94614,10 +95100,10 @@ bEx aqu bQI bBA -ueh -nqU -vRz -vRz +gsy +sGK +wid +wid aag ajZ aaa @@ -94685,9 +95171,9 @@ bdH bdH aad aag -pCi -wcn -wcn +uDg +xkc +xkc cQv eaf bEv @@ -94721,9 +95207,9 @@ thL thL tUx xkd -kIV -hFW -xEF +pdp +vhA +xiV aag ajZ bdH @@ -94790,10 +95276,10 @@ aaa aaa aad aag -nXP -tRV -hJp -mmC +nBJ +ldF +ldF +xiP bBA lsV amg @@ -94817,10 +95303,10 @@ bPC amg pyL bBA -jNq -nqU -rSK -vRz +cDb +sGK +nhV +wid aag ajZ bdH @@ -94888,9 +95374,9 @@ bdH bdH aad aag -pCi -oCL -wcn +uDg +lDT +xkc cQv eaf bEv @@ -94924,9 +95410,9 @@ thL thL tUx xkd -kIV -mnm -xEF +pdp +oDh +xiV aag ajZ bdH @@ -94992,11 +95478,11 @@ aaf aaf aaf aag -nXP -nXP -hJp -mGL -fmS +nBJ +nBJ +ldF +eQR +uFp bBA bBA tiR @@ -95020,11 +95506,11 @@ jAi aib jAi jAi -nrz -vhq -nqU -vRz -vRz +ipB +mVh +sGK +wid +wid aag aaf aaf @@ -95091,9 +95577,9 @@ bdH bdH aad aag -pCi -rPC -aou +uDg +gkr +qsp cQv xLl bEv @@ -95127,9 +95613,9 @@ tUx vsz oEE xkd -lmk -kIV -xEF +gNZ +pdp +xiV aag ajZ bdH @@ -95192,18 +95678,18 @@ aaa aaa aad aag -nXP -nXP -nXP -nXP -hJp -hJp -uNL -uNL -uNL -tVf -mGL -oxp +nBJ +nBJ +nBJ +nBJ +ldF +ldF +bos +bos +bos +haR +uHT +jHn kcp bWJ nar @@ -95225,12 +95711,12 @@ dRw bzy bzy bzy -vhq -nqU -vRz -vRz -vRz -vRz +mVh +sGK +wid +wid +wid +wid aag ajZ aaa @@ -95293,10 +95779,10 @@ aaa bdH bdH aad -pCi -pCi -wcn -tYB +uDg +uDg +xkc +eeA cQv dzG kde @@ -95330,10 +95816,10 @@ smZ wIC tMH wIC -xCj -kIV -xEF -xEF +pRs +pdp +xiV +xiV ajZ bdH bdH @@ -95395,18 +95881,18 @@ aaa aaa aad aag -nXP -jpN -hJp -mGL -hJp -iBE -uNL -hJp -mGL -poR -mGL -pNp +nBJ +fUz +ldF +eQR +ldF +ikA +bos +gpO +uHT +bKP +uHT +sGQ kcp wMv nCR @@ -95428,12 +95914,12 @@ pqQ bzA rEu bzy -vhq -nEz -vhq -ioj -mjR -vRz +mVh +fJu +mVh +roj +qzA +wid aag ajZ aaa @@ -95496,10 +95982,10 @@ aaa bdH bdH aad -pCi -msV -rPC -naf +uDg +hzN +gkr +krG cQv rdM gUg @@ -95533,10 +96019,10 @@ crp dco dqZ wIC -lTK -mnm -kIV -xEF +uxb +oDh +pdp +xiV ajZ bdH bdH @@ -95598,14 +96084,14 @@ aaa aaa aad aag -nXP -bwF -hJp -mGL -hJp -oPI -uNL -hJp +nBJ +lJM +ldF +eQR +ldF +lyP +bos +gpO kcp kcp iqp @@ -95631,12 +96117,12 @@ uOc uOc bPj bzy -piO -vhq -nqU -nqU -rSK -vRz +mXm +mVh +sGK +sGK +nhV +wid aag ajZ aaa @@ -95699,9 +96185,9 @@ aaa bdH bdH aad -pCi -dSA -rPC +uDg +fHb +gkr vxM vxM vxM @@ -95737,9 +96223,9 @@ vAG jIo wIC wIC -mnm -kIV -xEF +oDh +pdp +xiV ajZ bdH bdH @@ -95801,14 +96287,14 @@ aaa aaa aad aag -nXP -mGL -mGL -hJp -mGL -dqd -uNL -hJp +nBJ +eQR +eQR +ldF +eQR +sxS +bos +gpO kcp bBD bTS @@ -95838,8 +96324,8 @@ bSv bSv bSv bSv -nqU -vRz +sGK +wid aag ajZ aaa @@ -95902,9 +96388,9 @@ aaa bdH bdH aad -pCi -wcn -rPC +uDg +xkc +gkr vxM rfY kGu @@ -95940,9 +96426,9 @@ sJm dqZ rDY wIC -kIV -lre -xEF +pdp +kIf +xiV ajZ bdH bdH @@ -96004,14 +96490,14 @@ aaa aaa aad aag -nXP -hJp -hJp -mGL -pzZ -ijp -uNL -mGL +nBJ +ldF +ldF +wcJ +jCr +nQn +bos +uHT kcp bTR iEg @@ -96041,8 +96527,8 @@ bTH foN cDZ bSv -pch -vRz +hLu +wid aag ajZ aaa @@ -96105,9 +96591,9 @@ aaa bdH aac aag -pCi -mNR -wcn +uDg +kac +xkc vxM tQi wee @@ -96143,9 +96629,9 @@ rWF uSB lzY wIC -kIV -rQU -xEF +pdp +ome +xiV aag ajY bdH @@ -96207,14 +96693,14 @@ aaa aaa aad aag -nXP -thT -hJp -uNL -uNL -uNL -uNL -mGL +nBJ +ecS +ldF +bos +bos +bos +bos +uHT kcp lxW hPh @@ -96244,8 +96730,8 @@ tjw bTH bTV bSv -nqU -vRz +sGK +wid aag ajZ aaa @@ -96308,9 +96794,9 @@ bdH bdH aad aag -pCi -tCb -aou +uDg +fco +qsp vxM jvP rDQ @@ -96346,9 +96832,9 @@ wIC wIC wHM wIC -inC -mKf -xEF +dJy +aCA +xiV aag ajZ bdH @@ -96410,14 +96896,14 @@ aaa aaa aad aag -nXP -mGL -hJp -uNL -qDv -aLk -uNL -xCR +nBJ +eQR +ldF +bos +vkO +ibf +bos +rIw kcp wTN kZN @@ -96447,8 +96933,8 @@ ifb bTH bSv xVT -kAs -vRz +flr +wid aag ajZ aaa @@ -96511,9 +96997,9 @@ bdH bdH aad aag -pCi -oCL -wcn +uDg +lDT +xkc vxM sbP sbP @@ -96549,9 +97035,9 @@ wIC xgI dBQ wIC -bIi -fQk -xEF +oLf +hIG +xiV aag ajZ bdH @@ -96613,14 +97099,14 @@ aaa aaa aad aag -nXP -tRV -mGL -uNL -kmM -eqk -uNL -hJp +nBJ +ldF +eQR +bos +lBl +nEO +bos +gpO kcp oMi bAZ @@ -96649,9 +97135,9 @@ bSv aIX aIX bSv -oES -eXo -vRz +xcI +sIu +wid aag ajZ aaa @@ -96714,9 +97200,9 @@ bdH bdH aad aag -pCi -wcn -rPC +uDg +xkc +gkr vxM pas ncf @@ -96752,9 +97238,9 @@ wIC qqV nNg wIC -mnm -sIk -xEF +oDh +xas +xiV aag ajZ bdH @@ -96816,14 +97302,14 @@ aaa aaa aad aag -nXP -hJp -mGL -hKe -hJp -hJp -uNL -hJp +nBJ +ldF +eQR +rqv +gpO +gpO +bos +gpO kcp kcp kcp @@ -96852,9 +97338,9 @@ bSv cop cop bSv -vhq -nqU -vRz +kxe +sGK +wid aag ajZ aaa @@ -96917,9 +97403,9 @@ bdH bdH aad aag -pCi -wcn -rPC +uDg +xkc +gkr vxM vxM vxM @@ -96955,9 +97441,9 @@ wIC wIC wIC wIC -mnm -hPT -xEF +oDh +nEc +xiV aag ajZ bdH @@ -97019,15 +97505,15 @@ aaa aaa aad aag -nXP -hJp -mGL -uNL -aSY -hJp -uNL -hJp -dqd +nBJ +ldF +eQR +bos +iWH +gpO +bos +gpO +nEZ kcp bTU gZK @@ -97055,9 +97541,9 @@ bSv kBY bTn bSv -vhq -vhq -vRz +mVh +mVh +wid aag ajZ aaa @@ -97120,12 +97606,12 @@ aaf aaf aag aag -pCi -hKi -wcn -kEU -wcn -cXZ +uDg +cUl +xkc +ode +xkc +gNg vBm tJM viH @@ -97155,12 +97641,12 @@ jhI jfY bra wIC -kIV -hUc -pre -mnm -kIV -xEF +eQm +rXQ +vky +oDh +pdp +xiV aag aag aaf @@ -97218,19 +97704,19 @@ aaa aaa aaa aaa -nXP -nXP -nXP -nXP -nXP -lgY -uNL -uNL -uNL -lgY -uNL -mGL -hJp +nBJ +nBJ +nBJ +nBJ +nBJ +eQR +ldF +bos +bos +olW +bos +uHT +gUi kcp onY wdf @@ -97258,13 +97744,13 @@ bSv bSv bSv bSv -mzo -qOU -vRz -vRz -vRz -vRz -vRz +sGK +mVh +wid +wid +wid +wid +wid aaa aaa aaa @@ -97324,11 +97810,11 @@ adG adG adG adG -gqq -iCz -kEU -rPC -rPC +rvI +cYo +ode +gkr +gkr vBm vBm vBm @@ -97358,11 +97844,11 @@ jES vBJ qTQ wIC -mnm -kIV -pre -kIV -mrB +oDh +pdp +vky +pdp +paJ tuA tuA tuA @@ -97421,19 +97907,19 @@ aaa aaa aaa aaa -nXP -hJp -dPU -hJp -mGL -mGL -khS -hJp -crc -hJp -qee -mGL -hzM +nBJ +ldF +jsE +rdN +eQR +eQR +eQR +ldF +sXq +rdN +rMO +uHT +hfv kcp xNz utK @@ -97458,16 +97944,16 @@ bBB bzA cBl bRU -vhq -eJh -nqU -rcH -vhq -vhq -nqU -jTu -nqU -vRz +mVh +iBu +sGK +mVh +mVh +mVh +sGK +gDX +sGK +wid aaa aaa aaa @@ -97530,8 +98016,8 @@ akC akC akC akC -rDI -rPC +uvp +gkr vBm mvE tak @@ -97561,8 +98047,8 @@ vAG opF pDW wIC -mnm -wRa +oDh +lhj kCi kCi kCi @@ -97733,8 +98219,8 @@ sFf bbV bzz akC -cRc -rPC +pzc +gkr vBm qkn eRL @@ -97764,8 +98250,8 @@ vzj wIC wIC wIC -mnm -dGc +oDh +nYi kCi sDD kOv @@ -97936,8 +98422,8 @@ nIt adu aHZ akC -oCL -rPC +lDT +gkr vBm rJN nJz @@ -97967,8 +98453,8 @@ aTg rFg kkv wIC -kIV -kIV +pdp +pdp kCi uAj qfa @@ -98139,8 +98625,8 @@ nkx bbZ btv akC -dDC -rPC +lCm +gkr vBm vBm knO @@ -98170,8 +98656,8 @@ aTg wIC wIC wIC -kIV -bbR +pdp +iEa kCi eqI ssZ @@ -98342,9 +98828,9 @@ pvP adu aHZ akC -eKM -ake -kif +jdn +lgk +hMM vBm rRr dFU @@ -98372,9 +98858,9 @@ wtY aTg jIT wIC -mKf -kIV -kIV +aCA +pdp +pdp kCi nwW btD @@ -98545,9 +99031,9 @@ adu adu aHZ akC -lUz -tRX -lUz +pek +rir +pek vBm hqU gcT @@ -98575,9 +99061,9 @@ yeR aTg nNg wIC -pUJ -wCZ -pUJ +pjz +uTs +pjz kCi nRR btD @@ -98748,9 +99234,9 @@ nIt adu hxG akC -bVT -wcn -avl +ibP +loE +cmr vBm vBm vBm @@ -98778,9 +99264,9 @@ wIC wIC wIC wIC -gpe -mnm -dXO +hrI +ioM +xCy kCi nNt vqC @@ -98951,10 +99437,10 @@ wmg adu cqQ afT -agU -dIl -xpd -mlp +txy +rbp +cri +euL hiM hiM qRj @@ -98980,10 +99466,10 @@ xuZ pcj hXm fZq -dVm -qkb -vnY -vnY +iFA +sLx +twQ +twQ bpd bqT vZv @@ -99083,13 +99569,13 @@ xyw bHB xyw bcm -mzo -mzo -mzo -mzo -mzo -mzo -mzo +hOV +hOV +hOV +hOV +hOV +hOV +hOV cjK bSg aaa @@ -99154,10 +99640,10 @@ pvP adu frF akC -fRN -avl -lFb -ail +oUt +cmr +iPq +aMf vka vka mPj @@ -99183,10 +99669,10 @@ inh ewr lPC mgy -wWT -xuB -vcK -czJ +qoN +tVx +feG +pPy kCi nRR btM @@ -99248,16 +99734,16 @@ aaa aaa aaa aaa -nXP -ndx -uNL -nDd -soS -sgy -nsu -iyQ -rod -psy +sGw +nmp +eWs +usq +rQw +pOH +sbt +smU +nZR +lpl xyw bHB gjm @@ -99286,15 +99772,15 @@ bcb bHB btO bcm -tlI -jEs -kCT -lsb -fcG -ufp -mzo -qQP -vRz +sCW +nvX +tTC +jdu +tWd +aPe +hOV +ygv +kyP aaa aaa aaa @@ -99358,10 +99844,10 @@ tyK iKI akC akC -ail -lGG -age -age +aMf +hSv +xoB +xoB kzy wIQ jHh @@ -99385,11 +99871,11 @@ vka jHh lnt ckP -qFl -qFl -lIV -gsH -qFl +xTx +xTx +cyv +eKZ +xTx kCi cfk uws @@ -99451,16 +99937,16 @@ aaa aaa aaa aaa -nXP -hJp -uNL -gka -bwQ -oNf -uNL -aNw -kXJ -kVX +sGw +klT +eWs +njO +riC +eqd +goY +fqJ +nOX +xcV xyw bHB wqh @@ -99489,15 +99975,15 @@ bcc bHB aYt bcm -dqH -kCT -kCT -kCT -kCT -kCT -bLb -dQH -vRz +xsQ +tTC +tTC +tTC +tTC +tTC +iho +uKH +kyP aaa aaa aaa @@ -99560,12 +100046,12 @@ akC akC akC akC -fcF -avl -lFb -fvu -age -age +ehM +cmr +iPq +oQJ +xoB +xoB vSN jHh lnt @@ -99587,12 +100073,12 @@ sTo wIQ jHh jUY -qFl -qFl -gpe -xuB -vcK -mBA +xTx +xTx +hrI +tVx +feG +bxY kCi kCi kCi @@ -99654,16 +100140,16 @@ aaa aaa aaa aaa -nXP -hJp -sIT -sIT -sIT -sIT -sIT -aNj -xmv -kVX +sGw +xzB +bfs +bYW +bYW +bYW +bYW +kNf +vpT +xcV xyw bHB sXB @@ -99692,15 +100178,15 @@ fVz bHB bBN bcm -vVh -kCT -kCT -kCT -kCT -wgU -mzo -kWY -vRz +uPQ +tTC +tTC +tTC +tTC +gzN +hOV +uXm +kyP aaa aaa aaa @@ -99760,15 +100246,15 @@ adG adG adG adG -puK -avl -dUI -avl -avl -lFb -fvu -xDp -age +ltw +cmr +oRm +cmr +cmr +iPq +oQJ +pcc +xoB xDn uwN wiN @@ -99790,15 +100276,15 @@ awz oWg uwN jUY -qFl -rnM -gpe -sDy -ukU -bfP -fvv -vcK -wGI +xTx +lym +hrI +lIQ +noy +rcG +lwY +feG +kfB tuA tuA tuA @@ -99857,16 +100343,16 @@ aaa aaa aaa aaa -nXP -tRV -sIT -jNt -iNZ -lQj -sIT -obG -kdt -kVX +sGw +xzB +bfs +qfQ +cJm +jwi +bYW +phw +xMG +xcV xyw bHB aZO @@ -99895,15 +100381,15 @@ bGF bHB aYt bcm -iQx -kCT -iuu -fHc -kpY -hTu -mzo -bRF -vRz +vKI +tTC +hhd +ybm +ffq +rsV +hOV +mLN +kyP aaa aaa aaa @@ -99962,16 +100448,16 @@ aag aag aag aag -pCi -avl -nMc -ayP -iJf -iJf -sFZ -avl -tCb -age +cZe +cmr +lSX +uaA +snx +snx +fLt +cmr +fYr +xoB pNa iCu awz @@ -99993,16 +100479,16 @@ awz ceE eMP faX -qFl -rEn -mnm -mYs -mnm -sDy -cUv -cNe -pLZ -xEF +xTx +tIX +ioM +abn +ioM +lIQ +qOY +xZH +mSr +nLp aag aag aag @@ -100060,16 +100546,16 @@ aaa aaa aaa aaa -nXP -hJp -sIT -vLh -mGL -qHb -sIT -hdR -hdR -hJz +sGw +xzB +bfs +wVN +qxI +qmM +bYW +wFN +wFN +tGH hmy bHB aZP @@ -100098,15 +100584,15 @@ bGG bHB btO bcm -lyi -kCT -kCT -kCT -kCT -kCT -mzo -dQH -vRz +kQr +tTC +tTC +tTC +tTC +tTC +hOV +uKH +kyP aaa aaa aaa @@ -100165,9 +100651,9 @@ aag aag aag aag -pCi -dRV -bZg +cZe +cCL +vDz kcH kcH kcH @@ -100203,9 +100689,9 @@ aES aES aES aES -sDy -cNe -xEF +lIQ +xZH +nLp aag aag aag @@ -100263,16 +100749,16 @@ aaa aaa aaa aaa -nXP -mfe -sIT -eNx -mGL -mGL -vKf -mGL -mGL -rII +sGw +onv +bfs +pjh +qxI +qxI +iXm +qxI +qxI +vvX xyw bHB aZQ @@ -100301,15 +100787,15 @@ bGH bHB btO bcm -ksP -gdi -piX -kCT -kCT -kCT -mzo -dQH -vRz +qhG +krJ +jOt +tTC +tTC +tTC +hOV +uKH +kyP aaa aaa aaa @@ -100365,12 +100851,12 @@ aaa aad aag aag -pCi -pCi -pCi -pCi -lFb -avl +cZe +cZe +cZe +cZe +iPq +cmr kcH kcH kcH @@ -100406,12 +100892,12 @@ tKr uNg cLN aES -gpe -xuB -xEF -xEF -xEF -xEF +hrI +tVx +nLp +nLp +nLp +nLp aag aag ajZ @@ -100466,16 +100952,16 @@ aaa aaa aaa aaa -nXP -hJp -sIT -mIB -mGL -fGY -wUO -gYB -pXQ -kYa +sGw +xzB +bfs +wes +qxI +dKO +ykv +jPu +qKl +pPd xyw bHB aZR @@ -100504,15 +100990,15 @@ bGI bHB xyw bcm -fAt -kCT -kCT -kCT -kCT -iRS -mzo -oFG -vRz +gOk +tTC +tTC +tTC +tTC +bjg +hOV +siT +kyP aaa aaa aaa @@ -100568,12 +101054,12 @@ aaa aad aag aag -pCi -fqu -kTM -puK -lFb -avl +cZe +ivu +gSy +ltw +iPq +cmr kcH rlf soq @@ -100609,12 +101095,12 @@ iTD vCO vCO jxB -gpe -xuB -gpe -gpe -gpe -xEF +hrI +tVx +hrI +hrI +hrI +nLp aag aag ajZ @@ -100669,16 +101155,16 @@ aaa aaa aaa aaa -nXP -mGL -sIT -sIT -rUU -sIT -sIT -uNL -uNL -uNL +sGw +dvD +bfs +bfs +sir +bfs +bfs +eWs +eWs +eWs xyw bHB aZO @@ -100706,16 +101192,16 @@ baI bGF bHB eEc -mzo -mzo -kCT -xVj -vox -kCT -hTu -mzo -oFG -vRz +hOV +hOV +tTC +tSm +tcd +tTC +rsV +hOV +siT +kyP aaa aaa aaa @@ -100771,12 +101257,12 @@ aaa aad aag aag -pCi -huX -unJ -iJf -mBk -nUy +cZe +nHu +sit +snx +oVY +cGA kcH rBa nPs @@ -100812,12 +101298,12 @@ vCO vCO vCO jxB -xDj -boc -eXS -bGr -hnV -xEF +gUu +dWc +lVW +kcs +rDH +nLp aag aag ajZ @@ -100872,16 +101358,16 @@ aaa aaa aaa aaa -nXP -rxk -uNL -aqc -hJp -qbd -cQF -hqs -jFh -uNL +sGw +fea +eWs +rsS +xzB +mKs +sCT +rXU +rEt +eWs wlb bHB aZP @@ -100909,16 +101395,16 @@ baI bGG bHB bGK -meN -xRc -qPg -oas -mni -kCT -fIf -mzo -oFG -vRz +rrh +xKG +gyH +rSx +dCz +tTC +lDA +hOV +siT +kyP aaa aaa aaa @@ -100974,18 +101460,18 @@ aaa aad aag aag -pCi -nMc -tGf -avl -avl -qtS +cZe +lSX +nRE +cmr +cmr +sWw kcH rIW oGx wvU yiX -lIa +nrb hyQ aic aov @@ -101015,12 +101501,12 @@ wmT jhW mWD jxB -gvW -sWs -imJ -xuB -gpe -xEF +xBK +moc +pYQ +tVx +hrI +nLp aag aag ajZ @@ -101075,16 +101561,16 @@ aaa aaa aaa aaa -nXP -mGL -qee -hJp -mGL -qaZ -mGL -hJp -mGL -mBb +sGw +dvD +kWI +xzB +dvD +ipk +dvD +xzB +dvD +meT wqh bHB aZQ @@ -101112,16 +101598,16 @@ baI bGH bHB cuy -meN -dNe -pzO -kCT -kCT -kCT -eKg -pcD -lZO -vRz +rrh +iNR +uCR +tTC +tTC +tTC +fca +vjS +xee +kyP aaa aaa aaa @@ -101175,12 +101661,12 @@ aaa aaa aaa aad -aai -aai -pCi -pmI -avl -avl +nTT +nTT +cZe +vfS +cmr +cmr agj agj agj @@ -101220,12 +101706,12 @@ aES aES aES aES -vbP -uEv -gpe -xEF -xEF -xEF +nVn +cZO +hrI +nLp +nLp +nLp ajZ aaa aaa @@ -101278,16 +101764,16 @@ aaa aac aaf aaf -nXP -hJp -uNL -afd -hJp -slP -rsx -jFh -cQF -uNL +sGw +xzB +eWs +omx +xzB +rAw +qNK +rEt +sCT +eWs pyC bHB aZR @@ -101315,16 +101801,16 @@ baI bGI bHB kwQ -meN -dNe -pzO -wtd -kCT -nLa -wgU -mzo -dQH -vRz +rrh +iNR +uCR +rDR +tTC +wyz +gzN +hOV +uKH +kyP aaf aaf ajY @@ -101378,11 +101864,11 @@ aaa aaa aaa aad -ahE -qKt -dKa -hdb -avl +tvt +fRg +peM +jUV +cmr agj agj jbN @@ -101424,11 +101910,11 @@ bhJ bHG aES aES -mtE -gpe -cEg -hgm -ils +fMU +hrI +dPd +rLH +rwZ ajZ aaa aaa @@ -101480,17 +101966,17 @@ aaa aaa aad aag -nXP -nXP -tRV -uNL -uNL -agi -uNL -uNL -uNL -uNL -uNL +sGw +sGw +xzB +eWs +eWs +sOr +eWs +eWs +eWs +eWs +eWs cCE bHB aZO @@ -101518,17 +102004,17 @@ baI bGF bHB iAw -mzo -mzo -kCT -kCT -kCT -dlp -hTu -mzo -vot -vRz -aKQ +hOV +hOV +tTC +tTC +tTC +jRp +rsV +hOV +kzs +kyP +kyP aag ajZ aaa @@ -101581,11 +102067,11 @@ aaa aaa aaa aad -ahE -ooo -uaX -kfR -avl +tvt +jhR +fix +pfL +cmr agj kyR agc @@ -101627,11 +102113,11 @@ bpe brS rOs aES -kwz -gpe -gpe -gAd -ils +dWA +hrI +hrI +dPO +rwZ ajZ aaa aaa @@ -101683,10 +102169,10 @@ aaa aaa aad aag -nXP -mGL -hJp -uNL +sGw +dvD +xzB +eWs aas alI agw @@ -101722,16 +102208,16 @@ bGG bHB btO xjW -gks -kCT -kCT -kCT -mQW -kCT -mzo -gJd -mjR -aKQ +uTk +tTC +tTC +tTC +cyR +tTC +hOV +qpV +hSb +kyP aag ajZ aaa @@ -101784,11 +102270,11 @@ aaa aaa aaa aad -ahE -aiV -wBY -hJJ -qCi +tvt +oyX +vBC +rhm +she agj ogK qgr @@ -101830,11 +102316,11 @@ aES aES aES aES -gxk -hiQ -wVP -sed -ils +tPc +jwq +vwU +uew +rwZ ajZ aaa aaa @@ -101886,10 +102372,10 @@ aaa aaa aad aag -nXP -mGL -hJp -uNL +sGw +dvD +xzB +eWs aga alQ amR @@ -101925,16 +102411,16 @@ bGH bHB btO bcm -hit -kCT -kCT -fjO -kCT -vGy -mzo -dQH -nnc -vRz +gBU +tTC +tTC +efJ +tTC +sHe +hOV +uKH +vyr +kyP aag ajZ aaa @@ -101987,11 +102473,11 @@ aaa aaa aaa aad -pCi -kwS -avl -avl -mRp +cZe +kwg +cmr +cmr +jkq agj nCx tYM @@ -102033,11 +102519,11 @@ bhJ bHG nis aES -nSU -xuB -lrb -hnV -xEF +xGF +tVx +jne +rDH +nLp ajZ aaa aaa @@ -102089,10 +102575,10 @@ aaa aaa aad aag -nXP -nun -mzb -uNL +sGw +fzx +dWJ +eWs aav amj agG @@ -102101,9 +102587,9 @@ adg ajB bJo xjK -rgy -bvf -anS +bHB +btO +bdU aog bdU bfV @@ -102128,16 +102614,16 @@ bcb bHB aYt bcm -uKk -kCT -kCT -kCT -kCT -xwq -mzo -dQH -gMx -vRz +ohI +tTC +tTC +tTC +tTC +tml +hOV +uKH +hZZ +kyP aag ajZ aaa @@ -102190,11 +102676,11 @@ bdH aaa aaa aad -ahE -avr -avl -hCo -lIh +tvt +gJf +cmr +hYE +vAz agj nXO hvH @@ -102236,11 +102722,11 @@ bpe brS cpj aES -fxO -xuB -cKt -mnm -ils +hro +tVx +tNB +ioM +rwZ ajZ aaa aaa @@ -102292,10 +102778,10 @@ aaa aaa aad aag -nXP -mGL -pGP -uNL +sGw +dvD +nsd +eWs aay adg amU @@ -102307,7 +102793,7 @@ bwl bHB xyw puI -aol +aYt aYt aYt puI @@ -102331,16 +102817,16 @@ bcc bHB xyw bcm -oqD -kCT -kCT -ePk -kCT -hTu -mzo -oFG -vhq -vRz +grT +tTC +tTC +ove +tTC +rsV +hOV +siT +bUQ +kyP aag ajZ aaa @@ -102393,11 +102879,11 @@ bdH aaa aaa aad -ahE -aOg -avl -hMI -lFb +tvt +hsu +cmr +pFq +iPq agj dyj fnv @@ -102439,11 +102925,11 @@ aES aES aES aES -gKJ -uEv -ofZ -mnm -ils +uhh +cZO +ppG +ioM +rwZ ajZ aaa aaa @@ -102495,10 +102981,10 @@ aaa aaa aad aag -nXP -mGL -lqI -uNL +sGw +dvD +kFU +eWs aaD ahB ahB @@ -102510,7 +102996,7 @@ wqh bHB vpW eXq -rri +aho aho aho eXq @@ -102534,16 +103020,16 @@ fVz bHB vpW bcm -hEt -kCT -xIi -kCT -kCT -eNL -mzo -oFG -nqU -vRz +cKm +tTC +cOh +tTC +tTC +dPq +hOV +siT +xFt +kyP aag ajZ aaa @@ -102596,11 +103082,11 @@ bdH aaa aaa aad -ahE -bEo -avl -iDT -tDx +tvt +hJD +cmr +fFQ +pMH agj mXj mXj @@ -102642,11 +103128,11 @@ bhJ bHG brS aES -rlz -xuB -iVo -mnm -ils +jrI +tVx +raO +ioM +rwZ ajZ aaa aaa @@ -102698,10 +103184,10 @@ aaa aaa aad aag -nXP -hJp -hJp -uNL +sGw +xzB +xer +eWs aaK cfN afe @@ -102737,16 +103223,16 @@ jSo bHB xyw bcm -rdr -kCT -poq -kCT -kCT -gks -mzo -oFG -nqU -vRz +qKb +tTC +xQj +tTC +tTC +uTk +hOV +siT +xFt +kyP aag ajZ aaa @@ -102799,11 +103285,11 @@ aaa aaa aaa aad -pCi -bVF -dTt -jgM -lFb +cZe +bLc +fOK +pWd +iPq agj mXj pjR @@ -102845,11 +103331,11 @@ tJi ivf bpe aES -lGu -xuB -yiC -sXs -xEF +pok +tVx +kzc +gen +nLp ajZ aaa aaa @@ -102901,10 +103387,10 @@ aaa aaa aad aag -nXP -fpd -mGL -uNL +sGw +nkj +dvD +eWs ceQ ceU aff @@ -102940,16 +103426,16 @@ xyw bHB aYt bcm -sti -kCT -iTN -kCT -kOk -fIf -mzo -oFG -pch -vRz +jNG +tTC +vMb +xYE +iuI +lDA +hOV +siT +fFU +kyP aag ajZ aaa @@ -103002,11 +103488,11 @@ aaa bdH aaa aad -ahE -fHO -avl -jpJ -lzH +tvt +nCM +cmr +wKb +pri agj qlI cdB @@ -103048,11 +103534,11 @@ aES aES aES aES -xpt -xuB -xHW -qJF -ils +gBd +tVx +fjz +hPu +rwZ ajZ aaa aaa @@ -103104,10 +103590,10 @@ aac aaf aag aag -nXP -dUF -mGL -uNL +sGw +vEI +dvD +eWs ceR ceU aff @@ -103116,10 +103602,10 @@ ajx tqg bJo mVE -bHB -xyw +rgy +baN anU -aeJ +gEg imy gEg dRD @@ -103147,12 +103633,12 @@ bcm bcm bcm bcm -mzo -sYC -mzo -gJd -eXo -vRz +hOV +pIC +hOV +qpV +nGk +kyP aag aag aaf @@ -103205,11 +103691,11 @@ bdH bdH aaa aad -ahE -cjh -avl -llM -lGL +tvt +mPw +cmr +wGa +bAy agj eBE hvH @@ -103251,11 +103737,11 @@ bhJ bHG gCP aES -izx -mQV -hRi -gpe -ils +imt +noE +dcT +hrI +rwZ ajZ aaa aaa @@ -103307,10 +103793,10 @@ aad aag aag aag -nXP -fQF -mGL -uNL +sGw +oGf +dvD +eWs abd adk afu @@ -103350,12 +103836,12 @@ lRX rux sEt bcm -wbx -vhq -vhq -oFG -vhq -vRz +qyG +bUQ +bUQ +siT +bUQ +kyP aag aag aag @@ -103408,11 +103894,11 @@ bdH bdH bdH aad -ahE -cJB -avl -avl -mrc +tvt +qwY +cmr +cmr +mVA agj kSH hvH @@ -103454,11 +103940,11 @@ mhm brS bpe aES -mnm -uEv -nLK -nLK -ils +ioM +cZO +pfD +pfD +rwZ ajZ aaa aaa @@ -103510,10 +103996,10 @@ aad aag aag aag -nXP -wVD -mGL -uNL +sGw +fzT +dvD +eWs uZQ uZQ bJo @@ -103553,12 +104039,12 @@ myo dtH eyR bcm -wgo -nqU -vhq -dQH -xpf -vRz +rQs +xFt +bUQ +uKH +gsp +kyP aag aag aag @@ -103611,11 +104097,11 @@ bdH bdH bdH aad -pCi -pCi -pCi -jTi -nRq +cZe +cZe +cZe +tiX +vcI agj ikQ hvH @@ -103657,11 +104143,11 @@ aES aES aES aES -dYh -uEv -xEF -xEF -xEF +ied +cZO +nLp +nLp +nLp ajZ aaa aaa @@ -103713,10 +104199,10 @@ aad aag aag aag -nXP -mNf -hJp -uNL +sGw +iPf +klT +eWs cdE xSI uZQ @@ -103728,7 +104214,7 @@ wqh bHB vpW eXq -rri +aho aho aho eXq @@ -103756,12 +104242,12 @@ mhd aYt tuN fPn -nqU -nqU -vhq -dQH -hYc -vRz +xFt +xFt +bUQ +uKH +eLC +kyP aag aag aag @@ -103816,9 +104302,9 @@ aaa aad aag aag -pCi -avl -myn +cZe +cmr +iNk agj muV hvH @@ -103860,9 +104346,9 @@ bhJ bHG cWy aES -gpe -xuB -xEF +hrI +tVx +nLp aag aag ajZ @@ -103916,10 +104402,10 @@ aad aag aag aag -nXP -bvO -hJp -ahd +sGw +cqp +xzB +smH adg amp uZQ @@ -103931,7 +104417,7 @@ vPM bHB xyw anW -aol +aYt aYt aYt anW @@ -103959,12 +104445,12 @@ omP aYt bOC bcm -vhq -nqU -vhq -dQH -jhA -vRz +bUQ +xFt +bUQ +uKH +rVc +kyP aag aag aag @@ -104019,9 +104505,9 @@ aaa aad aag aag -pCi -cnX -lIh +cZe +huD +vAz agj mXj fnv @@ -104029,7 +104515,7 @@ hvH hvH iNY hvH -jhB +hmV mXj agj aic @@ -104063,9 +104549,9 @@ eBd brS cpj aES -fgx -dEV -xEF +luE +wgO +nLp aag aag ajZ @@ -104119,10 +104605,10 @@ aad aag aag aag -nXP -dNB -hJp -uNL +sGw +jOq +xzB +eWs hSL agn afx @@ -104131,9 +104617,9 @@ ajy vwP bJo kCm -rgy -bvf -aof +bHB +btO +bea aoN bea bfZ @@ -104162,12 +104648,12 @@ ivg llO kSv bcm -mzo -puR -aKI -dQH -nqU -vRz +emC +dZZ +xmn +uKH +xFt +kyP aag aag aag @@ -104222,9 +104708,9 @@ aaa aad aag aag -pCi -anI -lIh +cZe +pcf +vAz agj agj agj @@ -104266,9 +104752,9 @@ aES aES aES aES -gaO -vnV -xEF +hXD +tYV +nLp aag aag ajZ @@ -104322,10 +104808,10 @@ aad aag aag aag -nXP -mGL -iBE -uNL +sGw +dvD +qig +eWs eXq adR eXq @@ -104366,11 +104852,11 @@ wXT cdA bcm bcm -mzo -mzo -wWf -nqU -vRz +emC +emC +mTL +xFt +kyP aag aag aag @@ -104425,9 +104911,9 @@ aaa aad aag aag -pCi -ifR -jMt +cZe +uTE +fZy gpY uBi wYA @@ -104469,9 +104955,9 @@ baw oaK nUn pgD -xuB -gpe -xEF +tVx +hrI +nLp aag aag ajZ @@ -104525,10 +105011,10 @@ aad aag aag aag -nXP -mGL -mGL -uNL +sGw +dvD +dvD +eWs abG aeh afy @@ -104570,10 +105056,10 @@ aYt aYt lrX bcm -kGt -oFG -pch -vRz +jGQ +siT +fFU +kyP aag aag aag @@ -104628,9 +105114,9 @@ bdH aad aag aag -pCi -avl -lIh +cZe +cmr +vAz gpY uac vFw @@ -104672,9 +105158,9 @@ aZz wUP lrF pgD -uEv -gpe -xEF +cZO +hrI +nLp aag aag ajZ @@ -104728,10 +105214,10 @@ aad aag aag aag -nXP -rbv -hJp -uNL +sGw +dvD +klT +eWs abH aer agf @@ -104773,10 +105259,10 @@ btO btO uII fPn -cQN -oFG -eXo -vRz +htq +siT +nGk +kyP aag aag aag @@ -104831,9 +105317,9 @@ abs abs abs abs -pCi -ail -gwY +cZe +aMf +wby gpY mto acW @@ -104875,9 +105361,9 @@ baw sgU baw pgD -lIV -gsH -xEF +cyv +eKZ +nLp tQV tQV tQV @@ -104931,10 +105417,10 @@ aag aag aag aag -nXP -mGL -pwK -pJW +sGw +dvD +sZc +dGP acq aeJ azl @@ -104976,10 +105462,10 @@ aYt puI iWx bcm -uSq -dQH -vhq -vRz +ymg +uKH +bUQ +kyP aag aag aag @@ -105134,10 +105620,10 @@ aag aag aag aag -nXP -mGL -fJX -uNL +sGw +dvD +iQJ +eWs acu aeh afF @@ -105179,10 +105665,10 @@ cdA bcm bcm bcm -mzo -mxL -kAs -vRz +emC +wuh +fgU +kyP aag aag aag @@ -105337,10 +105823,10 @@ aag aag aag aag -nXP -tpg -vJM -uNL +sGw +nHX +cEA +eWs acM aer agf @@ -105380,12 +105866,12 @@ apE icp fER bcm -mzo -xSb -vhq -dQH -mjR -vRz +emC +hVL +bUQ +uKH +hSb +kyP aag aag aag @@ -105540,10 +106026,10 @@ aag aag aag aag -nXP -hJp -dpy -uNL +sGw +xzB +hRA +eWs acZ aeN azl @@ -105583,12 +106069,12 @@ uiT aYt jyR bcm -ioj -nqU -vhq -dQH -fIH -vRz +fUZ +xFt +bUQ +uKH +eyM +kyP aag aag aag @@ -105743,10 +106229,10 @@ aag aag aag aag -nXP -hJp -fkW -uNL +sGw +xzB +ghA +eWs vhw khD azw @@ -105786,12 +106272,12 @@ apL aYt iKb bcm -ygy -nqU -vhq -oFG -qUj -vRz +umk +xFt +bUQ +siT +qBl +kyP aag aag aag @@ -105946,10 +106432,10 @@ aag aag aag aag -nXP -fpd -nVS -uNL +sGw +nkj +rjF +eWs eXq eXq eXq @@ -105989,12 +106475,12 @@ uiT aYt xNj bcm -mjR -nqU -vhq -dQH -gWR -vRz +hSb +xFt +bUQ +uKH +pTX +kyP aag aag aag @@ -106149,10 +106635,10 @@ aag aag aag aag -nXP -hJp -dnX -uNL +sGw +xzB +oes +eWs aRu aRu aRu @@ -106192,12 +106678,12 @@ fpW llO vml bcm -mzo -jhA -jhA -dQH -wlL -vRz +emC +rVc +rVc +uKH +nBF +kyP aag aag aag @@ -106352,10 +106838,10 @@ aag aag aag aag -nXP -mGL -dnX -uNL +sGw +dvD +oes +eWs aRu aRu aRu @@ -106391,16 +106877,16 @@ bGO bHB uAb bcm -mzo -sYC -mzo -mzo -mzo -mzo -mzo -gJd -vhq -vRz +emC +hvx +emC +emC +emC +emC +emC +qpV +bUQ +kyP aag aag aag @@ -106555,10 +107041,10 @@ aag aag aag aag -nXP -mGL -fJX -uNL +sGw +dvD +iQJ +eWs aRu aRu aRu @@ -106594,16 +107080,16 @@ bcp bHB xAY aYz -mzo -vhq -eJh -eFp -qUH -mzo -qUj -dQH -vhq -vRz +emC +bUQ +wDP +mHF +hhg +emC +qBl +uKH +bUQ +kyP aag aag aag @@ -106758,10 +107244,10 @@ aag aag aag aag -nXP -tRV -dnX -uNL +sGw +xzB +oes +eWs aRu aRu aRu @@ -106797,16 +107283,16 @@ bcc bHB xAY aYz -mzo -xIj -nqU -nqU -vhq -gsL -nqU -oFG -eXo -vRz +emC +vFI +xFt +xFt +bUQ +wdG +xFt +siT +nGk +kyP aag aag aag @@ -106886,12 +107372,12 @@ aiX atV amO oXd -qFl -qFl -qFl -qFl -qFl -qFl +tsr +tsr +tsr +tsr +tsr +tsr aRE qVC qVC @@ -106961,10 +107447,10 @@ aag aag aag aag -nXP -nun -vJM -uNL +sGw +fzx +cEA +eWs aRu aRu aRu @@ -107000,16 +107486,16 @@ fVz bHB uII ruz -mzo -gwm -pEy -nqU -sRI -mzo -fdA -oFG -nqU -vRz +emC +jev +aML +xFt +oFn +emC +jaI +siT +xFt +kyP aag aag aag @@ -107089,12 +107575,12 @@ aiX ayT amO avj -qFl -aFp -aHo -bZH -aQs -qFl +tsr +sOL +jIC +lFr +wTu +tsr aSq aTE aTE @@ -107164,10 +107650,10 @@ aag aag aag aag -nXP -hJp -qNG -uNL +sGw +xzB +rsP +eWs aRu aRu aRu @@ -107203,16 +107689,16 @@ xyw bHB uII wrT -mzo -pVu -eOr -dFV -iVO -mzo -nqU -oFG -pch -vRz +emC +fqb +ury +dFW +mvi +emC +daF +siT +fFU +kyP aag aag aag @@ -107292,12 +107778,12 @@ aiX lzj amO bYe -aTR -gpe -gpe -aIa -ayh -qFl +fyT +xIV +xIV +edV +reM +tsr aSt aTE aTE @@ -107361,16 +107847,16 @@ aaa bdH aaY aad -nXP -nXP -nXP -nXP -nXP -nXP -nXP -mGL -kKG -uNL +sGw +sGw +sGw +sGw +sGw +sGw +sGw +dvD +iOX +eWs aRu aRu aRu @@ -107412,16 +107898,16 @@ lFp lFp lFp lFp -vwN -oFG -nqU -vRz -vRz -vRz -vRz -vRz -vRz -vRz +ljm +siT +xFt +kyP +kyP +kyP +kyP +kyP +kyP +kyP ajZ aaY bdH @@ -107495,12 +107981,12 @@ aiX ukh amO nxK -qFl -aFq -aHB -aIb -aRr -qFl +tsr +iPN +dbX +rGL +cyL +tsr aSx aTE aTG @@ -107564,16 +108050,16 @@ aaa bdH aaY aad -nXP -sAm -mGL -aLl -hJp -hJp -mGL -mGL -eKO -uNL +sGw +lrH +dvD +xzB +xzB +xzB +dvD +dvD +wsz +eWs aRu aRu aRu @@ -107615,16 +108101,16 @@ kjD gHl qoL lFp -mjR -oFG -nqU -vhq -vhq -rcH -vhq -wqE -kwq -vRz +hSb +siT +xFt +bUQ +bUQ +gQQ +bUQ +cOt +uSU +kyP ajZ aaY bdH @@ -107698,19 +108184,19 @@ aiX ayU amO avm -qFl -qFl -aeD -qFl -qFl -qFl -pUJ -mSP -pUJ -pUJ -pUJ -pUJ -pUJ +tsr +tsr +vOY +tsr +tsr +tsr +lIj +mVF +lIj +lIj +lIj +lIj +lIj pgD nUv aJU @@ -107767,16 +108253,16 @@ aaa bdH aaY aad -nXP -hJp -hJp -mGL -mGL -pwK -cmk -xJi -cIi -uNL +sGw +xzB +xzB +dvD +dvD +sZc +abj +mUE +coo +eWs aRu aRu aRu @@ -107818,16 +108304,16 @@ aId aId poA lFp -mjR -bVR -oeo -oeo -gdd -oeo -oeo -bgc -qUj -vRz +hSb +uGU +kGi +kGi +khI +kGi +kGi +kow +qBl +kyP ajZ aaY bdH @@ -107901,19 +108387,19 @@ aiX mQH amT ioX -pUJ -inC -anX -aht -gvC -pTc -bsO -bsO -aal -xKW -aht -aht -gcc +lIj +tBY +gkE +cTM +rqD +pcY +srO +srO +lWO +wjQ +uag +uag +jnh pgD lza gZw @@ -107970,15 +108456,15 @@ aaa bdH aaa aad -nXP -xYN -xYN -uNL -bdi -kKG -hJp -pda -lpS +sGw +dvD +dvD +eWs +jri +iOX +kIl +jmz +hsK wfE wfE wfE @@ -108028,9 +108514,9 @@ nmY nmY nmY nmY -clO -gUv -vRz +siT +bUQ +kyP ajZ aaa bdH @@ -108104,19 +108590,19 @@ aiX nVe akV bRs -pUJ -pUJ -abA -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -pUJ -ymi +lIj +lIj +dvZ +lIj +lIj +lIj +lIj +lIj +lIj +lIj +lIj +lIj +tWF pgD nUv aJU @@ -108173,9 +108659,9 @@ aaa bdH aaa aad -nXP -aMr -aMr +sGw +dvD +dvD wfE wfE rXv @@ -108231,9 +108717,9 @@ xHS tEd vjW nmY -caE -pdk -vRz +siT +bUQ +kyP ajZ aaa bdH @@ -108279,12 +108765,12 @@ adq aei aka aWn -aar -aar -aar -aar -aar -aar +njn +njn +njn +njn +njn +njn oGC awW acW @@ -108326,12 +108812,12 @@ baw sgU baw baw -qVM -qVM -qVM -qVM -qVM -qVM +nIN +nIN +nIN +nIN +nIN +nIN hXV yhI rRz @@ -108376,9 +108862,9 @@ aaa bdH aaa aad -aKW -bdn -bdn +sGw +dvD +dvD wfE mcL jOo @@ -108413,7 +108899,7 @@ qyD omo blZ bqN -gtA +nTo bqN bwR gfW @@ -108434,9 +108920,9 @@ dKK dKK xry nmY -clP -ovF -yhQ +siT +bUQ +kyP ajZ aaa bdH @@ -108482,12 +108968,12 @@ adq apr apr aoV -aar -aIZ -aIZ -aIZ -bWK -aar +njn +rWz +rWz +rWz +tWM +njn aea oGC xjD @@ -108529,12 +109015,12 @@ aZz nsc baw cxk -qVM -iBt -iBt -iBt -vce -qVM +nIN +rgL +rgL +rgL +nTc +nIN wTy wTy wTy @@ -108579,9 +109065,9 @@ aaa bdH aaa aad -aKW -uJo -aLf +sGw +xiH +xzB wfE dgl jOo @@ -108637,9 +109123,9 @@ vXf qGw uZV nmY -scI -oed -yhQ +uKH +bUQ +kyP ajZ aaa bdH @@ -108685,12 +109171,12 @@ adq aub akc euO -aar -aIZ -aIZ -aIZ -aIZ -aar +njn +rWz +rWz +rWz +rWz +njn oGC sHp oGC @@ -108732,12 +109218,12 @@ baw mnA baw baw -qVM -iBt -iBt -iBt -iBt -qVM +nIN +rgL +rgL +rgL +rgL +nIN crh csI nqG @@ -108782,9 +109268,9 @@ aaa bdH aaa aad -aKW -ebD -aLf +sGw +jOq +xzB wfE krp jOo @@ -108840,9 +109326,9 @@ kyh dKK xry nmY -suT -ftl -yhQ +qpV +hNh +kyP ajZ aaa bdH @@ -108889,19 +109375,19 @@ avd akt awW qHq -aIZ -aIZ -aIZ -aIZ -aar -rKs -aar -aar -aar -aar -aar -aar -aar +rWz +rWz +rWz +rWz +njn +vzO +njn +njn +njn +njn +njn +njn +njn dtM aii ajC @@ -108927,19 +109413,19 @@ aoe aEI aii aik -qVM -qVM -qVM -qVM -qVM -qVM -xeG -qVM -qVM -iBt -iBt -iBt -iBt +nIN +nIN +nIN +nIN +nIN +nIN +rBD +nIN +nIN +rgL +rgL +rgL +rgL eOM baw sMM @@ -108985,9 +109471,9 @@ aaa bdH aaa aad -aKW -bPW -aLf +sGw +eoE +xzB wfE eiP qOp @@ -109043,9 +109529,9 @@ hgD pSQ dOe nmY -tqk -iBG -yhQ +rEK +bba +kyP ajZ aaa bdH @@ -109091,20 +109577,20 @@ adq aGP aka aWu -aar -aIZ -aIZ -aIZ -aIZ -aar -uLW -tZe -oQo -dCh -adt -xUI -aOD -aar +njn +rWz +rWz +rWz +rWz +njn +gur +osn +vDt +puJ +deA +olC +ujf +njn mOL aii ajC @@ -109130,20 +109616,20 @@ aoe dtM aii ajC -qVM -gKS -gKS -csz -xCX -csz -vGk -vGk -qVM -iBt -iBt -iBt -iBt -qVM +nIN +cHn +cHn +gNo +aZv +gNo +xzh +dcZ +nIN +rgL +rgL +rgL +rgL +nIN hWB yhI qSX @@ -109188,9 +109674,9 @@ aaa bdH aaa aad -aKW -bPT -aLf +sGw +jIJ +xzB wfE fHz opD @@ -109246,9 +109732,9 @@ smW prP xXl nmY -iTz -vfJ -yhQ +idL +gnM +kyP ajZ aaa bdH @@ -109294,20 +109780,20 @@ adq aGQ akc apg -aar -aIZ -aIZ -aIZ -aIZ -aar -aao -aap -ijU -vkD -ijU -aap -aao -sMs +njn +rWz +rWz +rWz +rWz +njn +jsA +cGR +tey +urL +tey +cGR +jsA +tQA bYe akU ajC @@ -109333,20 +109819,20 @@ aoe ahr akU bYe -xCX -csz -vGk -vGk -qVM -bDe -csz -csz -qVM -iBt -iBt -iBt -iBt -qVM +aZv +gNo +xzh +xzh +nIN +gJY +gNo +gNo +nIN +rgL +rgL +rgL +rgL +nIN wvj csI iPH @@ -109391,9 +109877,9 @@ aaa bdH aaa aad -aKW -aLf -aSm +sGw +xzB +dvD wfE iYx opD @@ -109449,9 +109935,9 @@ oqt oEy qmY tUN -wlp -vXX -yhQ +siT +lZb +kyP ajZ aaa bdH @@ -109497,20 +109983,20 @@ aee avd akt qWI -aar -aar -aar -aar -aar -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA +njn +njn +njn +njn +njn +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm ahr akU ajC @@ -109536,20 +110022,20 @@ aoe dtM akU ajC -czu -czu -czu -czu -czu -czu -czu -czu -czu -qVM -qVM -qVM -qVM -qVM +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +nIN +nIN +nIN +nIN +nIN ehj irS ilJ @@ -109594,9 +110080,9 @@ aaa bdH aaa aad -aKW -aLf -aSm +sGw +xzB +dvD wfE gww opD @@ -109652,9 +110138,9 @@ uxX oZy orN nmY -luu -gNx -yhQ +lQf +tHk +kyP ajZ aaa bdH @@ -109700,12 +110186,12 @@ adq aWm aka kyY -aar -cit -ina -nuY -nuY -lYA +njn +mfR +sqP +tVs +tVs +gxm aax aax aax @@ -109713,7 +110199,7 @@ dkO aps aps aps -lYA +gxm vIm aii ajC @@ -109739,7 +110225,7 @@ aoe dtM aii ajC -czu +gxm aiJ aiJ aiJ @@ -109747,12 +110233,12 @@ qYr atj atj atj -czu -foR -usi -vGk -foR -qVM +gxm +ear +aGm +xzh +ear +nIN rQW yhI tmI @@ -109797,23 +110283,23 @@ aaa bdH aaa aad -aKW -rJb -aSm +sGw +nkj +dvD wfE rYi opD wFR wFR -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr aLG aZi cOM @@ -109841,23 +110327,23 @@ baZ oLv hop vMx -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr iZE oqt oZy qhD nmY -wlp -oDf -yhQ +siT +xFt +kyP ajZ aaa bdH @@ -109903,12 +110389,12 @@ adq apr apr apr -aar -aJL -aYr -aao -aao -lYA +njn +hzl +vdT +jsA +jsA +gxm aax aax aax @@ -109916,7 +110402,7 @@ vQe aps aps aps -lYA +gxm ahq akU ajC @@ -109942,7 +110428,7 @@ ajl dtM akU ajC -czu +gxm aiJ aiJ aiJ @@ -109950,12 +110436,12 @@ str atj atj atj -czu -usi -vGk -vGk -vLv -qVM +gxm +aGm +xzh +xzh +moq +nIN wTy wTy wTy @@ -110000,15 +110486,15 @@ aaa bdH aaa aad -aKW -aLf -aSm +sGw +xzB +dvD wfE cVK opD oRO ren -aKW +wDr aeL aeL aeL @@ -110016,7 +110502,7 @@ aqM arO arO arO -aKW +wDr beB byI beB @@ -110044,7 +110530,7 @@ bCd bJz rrV bJz -yhQ +wDr aue aue aue @@ -110052,15 +110538,15 @@ txi azy azy azy -yhQ +wDr kJH oqt qlm kRD nmY -scI -oDf -yhQ +uKH +xFt +kyP ajZ aaa bdH @@ -110106,12 +110592,12 @@ aet afB akW apu -aar -aar -aao -aap -pDm -lYA +njn +njn +lBB +cGR +mOR +gxm acV acV acV @@ -110119,7 +110605,7 @@ vQe aps aps aps -lYA +gxm dtM nmx cpw @@ -110145,7 +110631,7 @@ ajl aDk akU ajC -czu +gxm aiJ aiJ aiJ @@ -110153,12 +110639,12 @@ str atl atl atl -czu -dQE -vGk -csz -qVM -qVM +gxm +rTe +xzh +gNo +nIN +nIN crh csI qhb @@ -110203,15 +110689,15 @@ aaa bdH aaa aad -aKW -aLf -aMs +sGw +xzB +esm wfE wfE viJ wfE wfE -aKW +wDr aeL aeL aeL @@ -110219,7 +110705,7 @@ kHj arO arO arO -aKW +wDr aLG aZi aLG @@ -110247,7 +110733,7 @@ bCd buH hop buH -yhQ +wDr aue aue aue @@ -110255,15 +110741,15 @@ tGO azy azy azy -yhQ +wDr euW rOI aId hQP nmY -suT -oed -yhQ +qpV +bUQ +kyP ajZ aaa bdH @@ -110310,19 +110796,19 @@ boL akY boL aiH -aiv -aap -uoS -pDm -lYA +hbl +cGR +fwP +mOR +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM ajt pvt @@ -110348,19 +110834,19 @@ ajl ahq aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -usi -foR -csz -xCX +gxm +aGm +ear +gNo +aZv aJU baw sMM @@ -110407,14 +110893,14 @@ aKR aKR aKR aKR -aSm -aLf -vXY -aLf -aLf -jiX -cmq -aKW +dvD +xzB +pIo +xzB +xzB +fQy +nAm +wDr aeL aeL aeL @@ -110422,7 +110908,7 @@ kHj nLg nLg nLg -aKW +wDr aLG aZi bad @@ -110450,7 +110936,7 @@ kan bGe bHL buH -yhQ +wDr auk auk auk @@ -110458,14 +110944,14 @@ tGO azy azy azy -yhQ +wDr sJI aId aId hQP nmY -scI -oed +uKH +bUQ bVU bVU bVU @@ -110512,20 +110998,20 @@ aez boL akY wrQ -aar -aar -aar -aar -aar -lYA +njn +njn +njn +njn +njn +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM akU wgd @@ -110551,20 +111037,20 @@ vEx bYe akU ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -qVM -qVM -qVM -qVM -qVM +gxm +nIN +nIN +nIN +nIN +nIN nTH sMM baw @@ -110610,30 +111096,30 @@ aKS aKU aKS aLL -iIY -bCQ -hhw -gxr -bPW -bbx -bPU -aKW +vtJ +stP +eWs +hKO +eoE +lrH +kdo +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG kan -bFb -bFb -kan -aYm +qWS +oDJ +vaQ +iIH rlZ buu rlZ @@ -110653,22 +111139,22 @@ kan buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr ePN aId aId hQP nmY -nyz -tVB +xUY +wGe bSf bWe bWn @@ -110715,20 +111201,20 @@ aet agS aiP aYq -aar -aIZ -aIZ -aIZ -bWK -lYA +njn +rWz +rWz +rWz +tWM +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM akU ajC @@ -110739,8 +111225,8 @@ fnA jZY jZY sqf -vPj -aot +wpu +cGp ajl ajl ajl @@ -110754,20 +111240,20 @@ ajl hon akU ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -iBt -iBt -iBt -vce -qVM +gxm +rgL +rgL +rgL +nTc +nIN gnv yhI tTu @@ -110820,23 +111306,23 @@ aLL aLL aLL aLL -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG kan -bFb -bFb +kAp +dYU kan -aZM +cWm soK gDW rlZ @@ -110856,15 +111342,15 @@ kan buH hop buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr bSf bSf auW @@ -110918,20 +111404,20 @@ aet agB akW aYs -aar -aIZ -aIZ -aIZ -aIZ -lYA +njn +rWz +rWz +rWz +rWz +gxm vKF adb adb -lYA +gxm asm asm asm -lYA +gxm dtM aii ajC @@ -110942,8 +111428,8 @@ eDo eDo eDo sqf -jUG -awM +vXv +wub gXl ajl wqW @@ -110957,20 +111443,20 @@ ajl wqA aii ajC -czu +gxm alW alW alW -czu +gxm atI atI xMk -czu -iBt -iBt -iBt -iBt -qVM +gxm +rgL +rgL +rgL +rgL +nIN vpn csI goL @@ -111023,15 +111509,15 @@ coT fgh rZP gmj -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr bxD byI beB @@ -111059,15 +111545,15 @@ biA bJz bHT koc -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr wcN nGi bVd @@ -111122,19 +111608,19 @@ boL akY boL avJ -aIZ -aIZ -aIZ -aIZ -lYA +rWz +rWz +rWz +rWz +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM ajt aik @@ -111145,8 +111631,8 @@ xsz jTj jTj sqf -xRh -umC +lmi +xgP dwA wJo cyU @@ -111160,19 +111646,19 @@ gWG dtM aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -iBt -iBt -iBt -iBt +gxm +rgL +rgL +rgL +rgL qxz baw sMM @@ -111226,15 +111712,15 @@ uUt aLW aLW guS -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI vgF -aKW +wDr jgU aZi aLG @@ -111248,8 +111734,8 @@ bJw rlZ hBc hzs +bHg hzs -kDj aZK rlZ hYn @@ -111262,15 +111748,15 @@ biA buH bHL wWQ -yhQ +wDr aun aul aul -yhQ +wDr azD azD azD -yhQ +wDr wgR bTO bTO @@ -111324,20 +111810,20 @@ aez boL akY aqk -aar -aIZ -aIZ -aIZ -aIZ -lYA +njn +rWz +rWz +rWz +rWz +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm dtM aii ajC @@ -111363,20 +111849,20 @@ gWG dtM aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -iBt -iBt -iBt -iBt -qVM +gxm +rgL +rgL +rgL +rgL +nIN xuY sMM baw @@ -111429,15 +111915,15 @@ bbS xka uLn uoA -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG @@ -111465,15 +111951,15 @@ biA buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr hkB bTO qSm @@ -111527,20 +112013,20 @@ aet agS aiP aYq -aar -aIZ -aIZ -aIZ -aIZ -lYA +njn +rWz +rWz +rWz +rWz +gxm adb adb adb -lYA +gxm asm asm asm -lYA +gxm aEI aii ajC @@ -111566,20 +112052,20 @@ ajl ahr aii ajC -czu +gxm alW alW alW -czu +gxm atI atI atI -czu -iBt -iBt -iBt -iBt -qVM +gxm +rgL +rgL +rgL +rgL +nIN gnv yhI tTu @@ -111632,15 +112118,15 @@ rlh aLW aLW gxh -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi mzR @@ -111668,15 +112154,15 @@ biA buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr wjC bTO xMf @@ -111730,20 +112216,20 @@ aet afB akW biT -aar -aar -aar -aar -aar -lYA +njn +njn +njn +njn +njn +gxm adc adc adc -lYA -lYA -lYA -lYA -lYA +gxm +gxm +gxm +gxm +gxm kYU akU rxG @@ -111769,20 +112255,20 @@ ajl aEI akU gMa -czu -czu -czu -czu -czu +gxm +gxm +gxm +gxm +gxm adc adc adc -czu -qVM -qVM -qVM -qVM -qVM +gxm +nIN +nIN +nIN +nIN +nIN crh csI qhb @@ -111835,15 +112321,15 @@ djQ nFs aLW gFa -aKW +wDr aiR aiR aiR -aKW +wDr xpI xpI xpI -aKW +wDr aLG aZi aLG @@ -111871,15 +112357,15 @@ biA buH bHL buH -yhQ +wDr aul aul aul -yhQ +wDr azD azD azD -yhQ +wDr xad roG mZr @@ -112038,15 +112524,15 @@ aLL aLL aLL hrF -aKW -aKW -aKW -aKW -aKW +wDr +wDr +wDr +wDr +wDr kaF jWU jWU -aKW +wDr pGM aZi aLG @@ -112074,15 +112560,15 @@ biA buH bHL bIR -yhQ +wDr cyG cyG sos -yhQ -yhQ -yhQ -yhQ -yhQ +wDr +wDr +wDr +wDr +wDr bSf bSf auX @@ -112234,15 +112720,15 @@ aKS aKV aKS aLL -iIY -bCQ -hhw -bPU -bPS -cDe -ipD -rmN -buq +qVE +iGc +bwG +hCk +nRN +mzI +olQ +oCK +eob lGh aQt lDg @@ -112290,9 +112776,9 @@ ckl ckI cla cly -voQ -bVi -tVB +cDx +ndl +iDk bSf bWe bWp @@ -112437,15 +112923,15 @@ aKR aKR aKR aKR -aSm -aLf -tps -aLf -aLf -xlD -nMz -aSm -hhw +deq +lfx +jgK +lfx +lfx +yih +kgD +deq +bwG aNn aNO asO @@ -112493,9 +112979,9 @@ ckm bHa clb clz -fiq -gqK -oed +mJO +vDN +xbg bVU bVU bVU @@ -112538,7 +113024,7 @@ aaa aaa aaa aaa -lYA +acf aet aet biV @@ -112581,24 +113067,24 @@ sqf kHT pjM aim -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -gMA -qVM -qVM -qVM -qVM -qVM -qVM -czu +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +oiq +mRU +mRU +mRU +mRU +mRU +mRU +woU aaa aaa aaa @@ -112639,10 +113125,10 @@ aaa aaa bdH aad -aKW -aSm -aLf -hhw +kyw +deq +lfx +bwG aQF aQF aQF @@ -112690,16 +113176,16 @@ ssE azG uxZ vgk -fiq -fiq -fiq +mJO +mJO +mJO bTq -fiq -fiq -fiq -oDf -oed -yhQ +mJO +mJO +mJO +mgb +xbg +lyW ajZ bdH aaa @@ -112741,7 +113227,7 @@ aaa aaa aaa aaa -ahx +acv aiH alf arp @@ -112784,24 +113270,24 @@ sqf atL bkQ atL -qVM -iBt -iBt -iBt -iBt -iUZ +mRU +qSw +qSw +qSw +qSw +fHM pBG rLp ttX -qVM -csz -qVM -nLb -pUi -wLk -bIN -lbb -czu +mRU +vpf +mRU +vor +qnA +vkI +gNN +lyz +woU aaa aaa aaa @@ -112842,10 +113328,10 @@ aaa aaa bdH aad -aKW -uDB -aLf -hhw +kyw +xwd +lfx +bwG weR aPE weR @@ -112871,7 +113357,7 @@ vhX gDW rlZ rlZ -pnC +wYr dBH bky ryt @@ -112893,16 +113379,16 @@ bJt bJt bJt bJt -fiq -uaa -uaa -uaa -uaa -cmX -fiq -oDf -oDf -yhQ +mJO +plv +plv +plv +plv +mvg +mJO +mgb +mgb +lyW ajZ bdH aaa @@ -112944,7 +113430,7 @@ aaa aaa aaa aaa -ahx +acv aiH alg bBC @@ -112987,24 +113473,24 @@ asn ago asW cwJ -qVM -iBt -iBt -iBt -iBt -iBt +mRU +qSw +qSw +qSw +qSw +qSw pBG jZU jAe -qVM -vGk -qVM -fdj -qYW -oTz -vGk -xae -czu +mRU +jtU +mRU +tNw +ebI +ukC +jtU +fCi +woU aaa aaa aaa @@ -113045,14 +113531,14 @@ aaa aaa bdH aad -aKW -aSm -aVt -hhw -aNr -aOi -pbb -pbb +kyw +deq +cGY +bwG +rUq +rUq +sab +sab izk aWD cWr @@ -113096,16 +113582,16 @@ eeu gfq eFP gAz -fiq -uaa -uaa -uaa -uaa -uaa -fiq -oed -bxX -yhQ +mJO +plv +plv +plv +plv +plv +mJO +xbg +pgJ +lyW ajZ bdH aaa @@ -113147,7 +113633,7 @@ aaa aaa aaa aaa -lYA +acf aet avx ahN @@ -113190,24 +113676,24 @@ asn ayT akU avj -qVM -iBt -iBt -iBt -iBt -iBt +mRU +qSw +qSw +qSw +qSw +qSw pBG cVq nOb -qVM -oLw -qVM -qVM -qVM -xeG -qVM -qVM -czu +mRU +vpI +mRU +mRU +mRU +gBs +mRU +mRU +woU aaa aaa aaa @@ -113248,12 +113734,12 @@ aaa aaa bdH aad -aKW -bhC -bPT -hhw -jKh -pbb +kyw +deq +veq +bwG +pKh +sab rDv bmW jWu @@ -113299,16 +113785,16 @@ jge bDs bDs hLC -fiq -uaa -uaa -uaa -uaa -uaa -fiq -oed -oDf -yhQ +mJO +plv +plv +plv +plv +plv +mJO +xbg +mgb +lyW ajZ bdH aaa @@ -113350,7 +113836,7 @@ aaa aaa aaa aaa -lYA +acf aet avV uli @@ -113393,24 +113879,24 @@ asn ayT aii avm -qVM -iBt -iBt -iBt -iBt -iBt +mRU +qSw +qSw +qSw +qSw +qSw pBG dzp ngV -qVM -vGk -vGk -gYS -weU -csz -eGz -csz -czu +mRU +jtU +jtU +uBx +fLi +vpf +prf +vpf +woU aaa aac aaf @@ -113451,10 +113937,10 @@ aaa aaa bdH aad -aKW -aSm -xCm -hhw +kyw +deq +deF +bwG mTi lJK kYV @@ -113502,16 +113988,16 @@ bIJ bDs bDs qJS -fiq -uaa -uaa -uaa -uaa -uaa -fiq -oed -oed -yhQ +mJO +plv +plv +plv +plv +plv +mJO +xbg +xbg +lyW ajZ aaa avo @@ -113553,7 +114039,7 @@ aaa aaa aaa aaa -ahx +acv aez uli aIx @@ -113596,7 +114082,7 @@ sqf ybf aii avj -qVM +mRU pBG pBG pBG @@ -113605,15 +114091,15 @@ pBG pBG saL pBG -qVM -qVM -qVM -qVM -qVM -qVM -vGk -csz -czu +mRU +mRU +mRU +mRU +mRU +mRU +jtU +vpf +woU aaa aad aag @@ -113654,15 +114140,15 @@ aaa aaa bdH aad -aKW -aSm -xnY -hhw +kyw +deq +oWq +bwG aQF aQF aPH xIQ -hvQ +tmX aWD rrK aRy @@ -113712,9 +114198,9 @@ bJt bJt bJt bJt -oed -eHf -yhQ +xbg +otW +lyW ajZ avo avo @@ -113756,7 +114242,7 @@ aaa aaa aaa aaa -ahx +acv aez uli uli @@ -113801,7 +114287,7 @@ kSJ avj cGr pBG -hqJ +gqQ cHG nQA wph @@ -113813,10 +114299,10 @@ gel gel gel fkX -qVM -vGk -ofs -czu +mRU +jtU +tMU +woU aaf aag aag @@ -113857,10 +114343,10 @@ bdH bdH bdH aad -aKW -uDB -aLf -hhw +kyw +xwd +lfx +bwG weR aPE izk @@ -113915,9 +114401,9 @@ iIl bDs ujV bJt -oed -oed -yhQ +xbg +xbg +lyW ajZ avo avs @@ -113959,7 +114445,7 @@ aaa aaa aaa aaa -lYA +acf ahy avZ ipK @@ -114016,10 +114502,10 @@ cXF rLU dKp cHu -qVM -vGk -csz -czu +mRU +jtU +vpf +woU aag aag aag @@ -114060,12 +114546,12 @@ bdH bdH bdH aad -aKW -aSm -gfS -hhw -lHc -pbb +kyw +deq +sJa +bwG +pGG +sab izk hds aQF @@ -114118,8 +114604,8 @@ idx hAz gHj bJt -vhI -oed +oqI +xbg avo avo avo @@ -114162,7 +114648,7 @@ aaa aaa aaa aaa -lYA +acf aet aIx ipK @@ -114219,10 +114705,10 @@ bHk vZw bHk cHu -qVM -csz -qVM -czu +mRU +vpf +mRU +woU aag aag aag @@ -114263,10 +114749,10 @@ bdH bdH bdH aad -aKW -aLf -aSm -tps +kyw +lfx +deq +jgK aNs aNs hyw @@ -114321,8 +114807,8 @@ gSk bDs bpI bJt -kTq -oed +jLH +xbg lpy avC avC @@ -114365,7 +114851,7 @@ aaa aaa aaa aaa -lYA +acf aet uli ipK @@ -114422,10 +114908,10 @@ vzp vZw erd cHu -qVM -hoX -qVM -czu +mRU +vzB +mRU +woU aag aag aag @@ -114466,10 +114952,10 @@ bdH bdH bdH aad -aKW -eWY -aSm -hhw +kyw +txp +iGc +bwG vMr vMr izk @@ -114524,8 +115010,8 @@ gSk reL wiI bJt -nnr -eep +tqV +dSm avo avo avo @@ -114568,7 +115054,7 @@ aaa aaa aaa aaa -lYA +acf aet avx ipK @@ -114625,10 +115111,10 @@ bHk vZw bHk cHu -qVM -csz -qVM -czu +mRU +vpf +mRU +woU aah aag aag @@ -114669,10 +115155,10 @@ bdH bdH bdH aad -aKW -wyO -lpX -hhw +kyw +cme +whm +bwG mTi lJK izk @@ -114727,9 +115213,9 @@ gSk bDs vwI bJt -koz -oDf -yhQ +lAa +mgb +lyW ajZ avo avs @@ -114771,7 +115257,7 @@ aaa bdH aaa aaa -ahx +acv aez uli uli @@ -114828,10 +115314,10 @@ pRy wwW mRW cHu -qVM -vGk -csz -czu +mRU +jtU +vpf +woU aaa aad aag @@ -114872,15 +115358,15 @@ bdH bdH bdH aad -aKW -aVt -eZz -hhw +kyw +cGY +ipn +bwG aQF aQF sPc xIQ -pbb +sab aWD olM aRy @@ -114930,9 +115416,9 @@ gSk bDs fUB bJt -oDf -uqH -yhQ +mgb +nhw +lyW ajZ avo avo @@ -114974,7 +115460,7 @@ aaa bdH bdH aaa -ahx +acv aez aIB aKg @@ -115023,7 +115509,7 @@ lPm iZV fdx cuq -edn +eQJ fVF pBG qWR @@ -115031,10 +115517,10 @@ wJH wJH wJH sNR -qVM -vGk -csz -czu +mRU +jtU +vpf +woU aaa aae aah @@ -115075,10 +115561,10 @@ bdH bdH bdH aad -aKW -cmq -aSm -hhw +kyw +oif +deq +bwG weR aPE izk @@ -115133,9 +115619,9 @@ gSk bDs nqO bJt -sIx -bxX -yhQ +nQo +pgJ +lyW ajZ aaa avo @@ -115177,7 +115663,7 @@ aaa bdH aaa aaa -lYA +acf aet aJJ aIB @@ -115230,14 +115716,14 @@ pBG pBG pBG pBG -qVM -qVM -qVM -qVM -qVM -vGk -ofs -czu +mRU +mRU +mRU +mRU +mRU +jtU +tMU +woU bdH bdH bdH @@ -115278,12 +115764,12 @@ bdH bdH bdH aad -aKW -xxe -aLf -hhw -aQI -aQI +kyw +byt +lfx +bwG +iWQ +iWQ uFd mUq qwt @@ -115336,9 +115822,9 @@ cnu bDs knK bJt -oed -vgQ -yhQ +xbg +oUZ +lyW ajZ bdH bdH @@ -115380,7 +115866,7 @@ aaa bdH aaa aaa -lYA +acf aet avx ahN @@ -115429,18 +115915,18 @@ trU oNY fdx pBG -eNw +pVF ppF fiE pBG -vGk -vGk -gYS -vzl -csz -vGk -csz -czu +jtU +jtU +uBx +ycM +vpf +jtU +vpf +woU bdH bdH bdH @@ -115481,14 +115967,14 @@ bdH bdH bdH aad -aKW -dgN -aLf -hhw -aQI -aQI -aQI -hcZ +kyw +jNo +lfx +bwG +iWQ +iWQ +sab +aNr pQY aWD bll @@ -115539,9 +116025,9 @@ gSk ljG tSp bJt -oed -sHg -yhQ +xbg +ssk +lyW ajZ bdH bdH @@ -115583,7 +116069,7 @@ aaa bdH aaa aaa -ahx +acv aiH uli bLO @@ -115636,14 +116122,14 @@ dzp rMT dzp pBG -vGk -qVM -qVM -qVM -qVM -csz -qVM -czu +jtU +mRU +mRU +mRU +mRU +vpf +mRU +woU bdH bdH bdH @@ -115684,10 +116170,10 @@ bdH bdH bdH aad -aKW -bhC -aLf -hhw +kyw +deq +lfx +bwG mTi lJK mTi @@ -115742,9 +116228,9 @@ gSk oDE bJt bJt -oed -oDf -yhQ +xbg +mgb +lyW ajZ bdH bdH @@ -115786,7 +116272,7 @@ aaa aaa aaa aaa -ahx +acv aiH aiH bWd @@ -115839,14 +116325,14 @@ nTR gDp rwq pBG -vGk -qVM -riM -rGl -qVM -hoX -qVM -czu +jtU +mRU +oyO +nve +mRU +vzB +mRU +woU bdH bdH bdH @@ -115887,10 +116373,10 @@ bdH bdH bdH aad -aKW -efU -aLf -hhw +kyw +xbI +lfx +bwG aQF aQF aQF @@ -115900,10 +116386,10 @@ aQF aQF aQF aQF -ktB -gCd -eJg -hhw +wYG +yhR +gHi +bwG aeb alx aeb @@ -115944,10 +116430,10 @@ bDs gSk luS bJt -iGg -oed -oDf -yhQ +uCw +xbg +mgb +lyW ajZ bdH bdH @@ -115989,11 +116475,11 @@ aaa aaa aaa aaa -lYA -aar -tiM -aar -aar +vHn +cGd +moK +cGd +cGd aNi aNi bWr @@ -116042,14 +116528,14 @@ pBG pBG pBG pBG -vGk -xCX -vGk -hoX -qVM -sCC -qVM -czu +jtU +rXF +jtU +vzB +mRU +kuK +mRU +woU aaa aaa aaa @@ -116090,23 +116576,23 @@ bdH aaa bdH aad -aKW -aSm -aSm -hhw -beG -dIR -yky -bfb -baY -hhw -aLF -bPV -yaG -bPU -aSm -bPS -hhw +kyw +deq +deq +bwG +tEu +mUY +vOw +ouU +dro +bwG +gSH +xJp +qxJ +hCk +deq +nRN +bwG bwd auv bwd @@ -116147,10 +116633,10 @@ bDs gSk vSp lHG -qgH -oDf -oDf -yhQ +kOJ +mgb +mgb +lyW ajZ bdH bdH @@ -116192,11 +116678,11 @@ aaf aaf aaf aaf -lYA -aiS -aao -aao -acD +vHn +ejV +hoT +hoT +vyh aNi cYT aNm @@ -116236,23 +116722,23 @@ ajr aii avm pBG -bfO +tGT nQA nQA jDO pBG aYH cHG -wEe +cOY pBG -ieH -qVM -tUI -mcV -qVM -vGk -csz -czu +mSM +mRU +gRc +oOp +mRU +jtU +vpf +woU aaf aaf aaf @@ -116286,32 +116772,32 @@ bdH bdH bdH aac -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aSm -aLf -hhw -beI -bTQ -tBP -jfm -lYu -maw -fAS -jfm -lzn -eDz -jfm -jfm -bUP -aLG -aYO +kyw +kyw +kyw +kyw +kyw +kyw +kyw +kyw +deq +caq +bwG +igb +cpz +ooA +kpj +sBY +wyG +qjL +kpj +rAo +lka +kpj +kpj +mQY +aem +mUa aLG tda mng @@ -116350,17 +116836,17 @@ qxE rui vSp bJt -wuH -oed -uqH -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +uXU +xbg +nhw +lyW +lyW +lyW +lyW +lyW +lyW +lyW +lyW ajY aaa aaa @@ -116395,11 +116881,11 @@ aag aag aag aag -lYA -aiT -aap -aao -aap +vHn +dGg +tob +hoT +tob aNi aZe aNm @@ -116448,14 +116934,14 @@ eAN eAN eAN pBG -csz -qVM -qVM -qVM -qVM -oLw -csz -czu +vpf +mRU +mRU +mRU +mRU +vpI +vpf +woU aag aag aag @@ -116488,22 +116974,22 @@ bdH bdH bdH bdH -aKW -aKW -bPU -lLV -aLf -aLf -aLf -jiX -aSm -aSm -aLf -ahU -aLf -fza -kat -uJB +kyw +kyw +hCk +maK +lfx +lfx +lfx +deq +deq +deq +lfx +eYp +lfx +vmq +cqH +tjO bdd bdd bdd @@ -116514,7 +117000,7 @@ bdd bdd bdd teH -mUa +aYO xNB bdd vuA @@ -116554,17 +117040,17 @@ cDC vuF bJt bJt -oed -oDf -oDf -oDf -qNy -cLV -oDf -oDf -oDf -yhQ -yhQ +xbg +mgb +mgb +mgb +gLm +ttD +mgb +mgb +mgb +lyW +lyW aaa aaa aaa @@ -116598,11 +117084,11 @@ aag aag aag aag -lYA -aiU -aap -aap -aap +vHn +oSG +tob +tob +tob aNi aZr aNm @@ -116651,14 +117137,14 @@ skR oxc nBi pBG -hoX -qVM -oks -wdH -qVM -vGk -ofs -czu +vzB +mRU +pGh +xEs +mRU +jtU +tMU +woU aag aag aag @@ -116691,22 +117177,22 @@ bdH bdH bdH bdH -aKW -bPV -aLf -xlD -aSm -aSm -aSm -aLf -aLf -aLf -aMs -hhw -pgt -ykF -bgH -uVb +kyw +xJp +lfx +deq +yih +deq +deq +lfx +lfx +lfx +rHq +bwG +nPO +cGB +ugj +fbC bdd uvU xZk @@ -116757,17 +117243,17 @@ feq loY aDU bJt -oed -oDf -oed -oDf -mOU -oDf -oDf -oed -oed -oDf -yhQ +vAx +mgb +xbg +mgb +xpL +mgb +mgb +xbg +xbg +mgb +lyW aaa aaa aaa @@ -116801,11 +117287,11 @@ aag aag aag aag -lYA -aiZ -aap -aao -aap +vHn +oeH +tob +hoT +tob aNi aZs aNm @@ -116845,7 +117331,7 @@ aow hee ioX fKh -sSP +lDa eAN eAN vEG @@ -116854,14 +117340,14 @@ pBG pBG pBG pBG -csz -iid -csz -hoX -qVM -noV -csz -czu +vpf +tra +vpf +vzB +mRU +iJT +vpf +woU aag aag aag @@ -116894,9 +117380,9 @@ bdH bdH bdH bdH -aKW -aSm -aLf +kyw +deq +lfx nsY nsY pRT @@ -116906,10 +117392,10 @@ nsY nsY nsY nsY -hhw -hhw -umv -hhw +bwG +bwG +msC +bwG bdd xwE dAQ @@ -116968,9 +117454,9 @@ nsY nsY nsY nsY -upt -oDf -yhQ +kqb +mgb +lyW aaa aaa aaa @@ -117004,11 +117490,11 @@ aag aag aag aag -lYA -adf -aao -aao -aao +vHn +mId +hoT +hoT +hoT aNi jWr aNm @@ -117045,26 +117531,26 @@ vOy asp aii avj -qVM -qVM +mRU +mRU pBG aGs eAN eAN vEG vrJ -tQM +xOs kOH hIs pBG -ieH -qVM -dYK -csz -iid -csz -qVM -czu +mSM +mRU +tCd +vpf +tra +vpf +mRU +woU aag aag aag @@ -117097,9 +117583,9 @@ aaa aaa aaa aaa -aKW -aLf -aSm +kyw +lfx +deq nsY xWT kxd @@ -117109,10 +117595,10 @@ rSG rur oqS nsY -lhu -btk -aSm -eoM +hsh +cPP +deq +eLH bdd eUZ lCr @@ -117171,9 +117657,9 @@ rSG qkP oqS nsY -oDf -oDf -yhQ +mgb +mgb +lyW aaa aaa aaa @@ -117207,11 +117693,11 @@ aag aag aag aag -lYA -fZF -aWs -aar -tiM +vHn +eDq +jFI +cGd +moK aNi aNi aNi @@ -117248,8 +117734,8 @@ vOy meJ amO avj -qVM -csz +mRU +vpf pBG xiU xUa @@ -117260,14 +117746,14 @@ pZH nnL lgt pBG -oLw -qVM -jmR -vGk -qVM -hoX -qVM -czu +vpI +mRU +bhV +jtU +mRU +vzB +mRU +woU aag aag aag @@ -117300,9 +117786,9 @@ aaa aaa aaa aaa -aKW -aLf -aSm +kyw +lfx +deq nsY xWT kxd @@ -117312,10 +117798,10 @@ iIP kxd dDt nsY -xiz -aSm -aSm -kOf +exb +deq +deq +qLY bdd ljW bDP @@ -117374,9 +117860,9 @@ dmR kxd dDt nsY -oDf -oed -yhQ +mgb +xbg +lyW aaa aaa aaa @@ -117410,15 +117896,15 @@ aag aag aag aag -lYA -aar -aar -aar -awJ -bzE -fZF -fZF -fZF +vHn +cGd +cGd +cGd +iTQ +lWt +eDq +eDq +eDq aNi aNi aNi @@ -117445,14 +117931,14 @@ vYz awR uoi vOy -aMh -biB -alH +jyJ +niF +bPF aTL akU avj -qVM -csz +mRU +vpf pBG pBG pBG @@ -117463,14 +117949,14 @@ pBG pBG pBG pBG -vGk -qVM -qVM -qVM -qVM -csz -qVM -czu +jtU +mRU +mRU +mRU +mRU +vpf +mRU +woU aag aag aag @@ -117503,9 +117989,9 @@ aaa aaa aaa aaa -aKW -aLa -aSm +kyw +lfx +deq nsY gsg vHq @@ -117515,10 +118001,10 @@ rNb bxC jiU nsY -glr -mhl -aSm -ylY +jvt +hiu +deq +vSr bdd asr asr @@ -117577,9 +118063,9 @@ iSm bxC jiU nsY -oDf -oed -yhQ +mgb +xbg +lyW aaa aaa aaa @@ -117603,36 +118089,36 @@ aaa aaa aaa aaa -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -aao -aap -aap -aao -aap -aap -ahg -aao -aap -aap -aap -aap -aao -acD -aao -aap -aap -rfg +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +hoT +tob +tob +hoT +tob +tob +hqm +hoT +tob +tob +tob +tob +hoT +vyh +hoT +tob +tob +fkK bYe amO bYe @@ -117648,42 +118134,42 @@ paa sXd gVq vOy -aMi -biB -apI +sLk +niF +cbg bYe akU bYe -xCX -vGk -vGk -csz -vzl -ljt -vGk -vGk -csz -vzl -csz -vGk -vGk -vGk -gYS -weU -vGk -csz -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu +rXF +jtU +jtU +vpf +ycM +tne +jtU +jtU +vpf +ycM +vpf +jtU +jtU +jtU +uBx +fLi +jtU +vpf +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm aaa aaa aaa @@ -117706,9 +118192,9 @@ aaa aac aaf aaf -aKW -aLf -aSm +kyw +lfx +deq nsY nsY qxC @@ -117718,10 +118204,10 @@ nsY ntx nsY nsY -jFe -sxe -xZI -mNZ +qWL +kIk +eXD +kMr bdd bdd bdd @@ -117780,9 +118266,9 @@ nsY gLZ nsY nsY -oDf -uqH -yhQ +mgb +nhw +lyW aaf aaf ajY @@ -117806,7 +118292,7 @@ aaa aaa aaa aaa -lYA +gxm dxF dxF aaH @@ -117817,21 +118303,21 @@ aam aam aam aam -lYA -qsd -aap -aar -aar -aar -aar -aar -aar -aar -aar -aar -aar -aar -aar +gxm +hgk +tob +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd +cGd aej aej aej @@ -117857,25 +118343,25 @@ vOy apv akU jHG -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -qVM -vGk -csz -czu +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +mRU +jtU +vpf +gxm aeT aeT aeT @@ -117886,7 +118372,7 @@ aeT nnD aZF aZF -czu +gxm aaa aaa aaa @@ -117907,11 +118393,11 @@ aaa aaa aaa aad -aKW -aKW -aKW -aSm -aLf +kyw +kyw +kyw +deq +caq nsY tUS bNh @@ -117921,10 +118407,10 @@ fPp lqN vlO nsY -xCN -pOB -hfk -aLf +xxG +smA +ktR +lfx bdd dJI jaf @@ -117983,11 +118469,11 @@ iQt uZo xmJ nsY -oed -oDf -yhQ -yhQ -yhQ +xbg +mgb +lyW +lyW +lyW ajZ aaa aaa @@ -118009,7 +118495,7 @@ aaa aaa aaa aaa -lYA +gxm dxF dxF aaH @@ -118020,20 +118506,20 @@ aam aam aam aam -lYA -abe -aap -aar -aIZ -aIZ -aIZ -aIZ -ajQ -aIZ -aIZ -aIZ -aIZ -ajQ +gxm +bLf +tob +cGd +vVY +vVY +vVY +vVY +kLB +vVY +vVY +vVY +vVY +kLB aej aeO afG @@ -118060,25 +118546,25 @@ vOy ayT akU avj -qVM -nNA -ekO -nNA -qVM -iBt -iBt -iBt -iBt -aJM -iBt -iBt -iBt -iBt -aJM -qVM -vGk -xIb -czu +mRU +bnF +lBw +bnF +mRU +qSw +qSw +qSw +qSw +urg +qSw +qSw +qSw +qSw +urg +mRU +jtU +nVE +gxm aeT aeT aeT @@ -118089,7 +118575,7 @@ aeT nnD aZF aZF -czu +gxm aaa aaa aaa @@ -118109,12 +118595,12 @@ aaa aaa aaa aaa -aKW -aKW -bPT -jiX -aSm -aLf +kyw +kyw +veq +deq +deq +lfx nsY kio sJY @@ -118124,10 +118610,10 @@ xTW oGP cnM nsY -nEA -lQu -lQu -aSm +kqB +txH +txH +deq bdd fva lkL @@ -118186,12 +118672,12 @@ pyc uMn ivz nsY -oed -oDf -oed -oed -yhQ -yhQ +xbg +mgb +xbg +xbg +lyW +lyW aaa aaa aaa @@ -118212,7 +118698,7 @@ aaa aaa aaa aaa -lYA +gxm dxF dxF aaH @@ -118223,20 +118709,20 @@ aam aam aam aam -lYA -ahk -aap -aar -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ +gxm +rGz +tob +cGd +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY aej aeP agI @@ -118263,25 +118749,25 @@ vOy ayT aii avj -ltK -vGk -hDv -ghW -qVM -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -qVM -vGk -lSD -czu +eyI +jtU +jaW +vkV +mRU +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +mRU +jtU +bWg +gxm aeT aeT aeT @@ -118292,7 +118778,7 @@ aeT nnD aZF aZF -czu +gxm aaa aaa aaa @@ -118312,12 +118798,12 @@ aaa aaa aaa aaa -aKW -ygK -aLf -aLf -aLf -aLf +kyw +lHB +lfx +lfx +lfx +lfx heK kam axc @@ -118327,10 +118813,10 @@ vHh pvh sZs nsY -hhw -yfy -ugV -vUi +bwG +erL +scX +caq bdd cDH cHB @@ -118389,12 +118875,12 @@ xuQ uPW kYv oDx -tbK -tbK -tbK -lNy -oed -yhQ +sAS +sAS +sAS +rCh +xbg +lyW aaa aaa aaa @@ -118415,31 +118901,31 @@ aaa aaa aaa aaa -lYA +gxm adj apk apk -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -abp -ach -aar -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +hqb +vsd +cGd +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY aej aeQ agK @@ -118466,36 +118952,36 @@ vOy ayT aii avj -ltK -wYj -jhY -fqx -qVM -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -qVM -azH -fQK -czu -czu -czu -czu -czu -czu -czu -czu +eyI +yfL +sjw +xHD +mRU +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +mRU +jZo +hQK +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm asM asM mwR -czu +gxm aaa aaa aaa @@ -118515,12 +119001,12 @@ aaa aaa aaa aaa -aKW -jwD -aLf -uig -hhw -hhw +kyw +eqm +lfx +vvH +bwG +bwG nsY wpz oEX @@ -118530,10 +119016,10 @@ xxm qSK ieu nsY -sSe -aLf -qce -aSm +mZc +lfx +neH +deq bdd xXW gVu @@ -118592,12 +119078,12 @@ mzV pML ivz nsY -jZO -oDf -oed -wlp -ndQ -yhQ +iZd +mgb +xbg +jPx +xQd +lyW aaa aaa aaa @@ -118618,7 +119104,7 @@ aaa aaa aaa aaa -lYA +gxm ojH ojH taV @@ -118632,17 +119118,17 @@ ouf aLc wBI hGG -aar -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ -aIZ +cGd +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY +vVY aej aeR agK @@ -118669,22 +119155,22 @@ vOy aEK aSv ioX -ltK -nXF -vGk -bqG -qVM -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -iBt -qVM +eyI +byH +jtU +nvd +mRU +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +qSw +mRU vmJ elv vRR @@ -118698,7 +119184,7 @@ qXS hXX xDe xDe -czu +gxm aaa aaa aaa @@ -118718,12 +119204,12 @@ aaa aaa aaa aaa -aKW -cSK -aSm -aSm -bUc -nSN +kyw +htg +deq +deq +qCH +cXm nsY hUz dbn @@ -118733,10 +119219,10 @@ uRM ipe ehR nsY -aLf -aLf -tRc -qEW +xEe +lfx +tdH +igw bdd sgm kEg @@ -118795,12 +119281,12 @@ sZH rjV ivz nsY -fuY -sZF -vjD -lFF -ndM -yhQ +qZy +jfS +bUH +ciB +soT +lyW aaa aaa aaa @@ -118821,7 +119307,7 @@ aaa aaa aaa aaa -lYA +gxm ojH ojH taV @@ -118835,17 +119321,17 @@ ouf sdf cRL hGG -aar -aar -aar +cGd +cGd +cGd ahi -aar -aar -aar -aar +cGd +cGd +cGd +cGd uux -aar -aar +cGd +cGd aej aej agO @@ -118872,22 +119358,22 @@ vOy atL akV atL -qVM -qVM -nWc -qVM -qVM -qVM -qVM +mRU +mRU +veW +mRU +mRU +mRU +mRU nNX -qVM -qVM -qVM -qVM +mRU +mRU +mRU +mRU ayo -qVM -qVM -qVM +mRU +mRU +mRU cna nzD xDV @@ -118901,7 +119387,7 @@ qXS hXX xDe xDe -czu +gxm aaa aaa aaa @@ -118921,12 +119407,12 @@ aaa aaa aaa aaa -aKW -aLf -aLf -xlD -bUc -vrB +kyw +lfx +lfx +yih +qCH +spT nsY nsY nsY @@ -118936,10 +119422,10 @@ nsY nsY nsY nsY -hhw -hhw -hhw -hhw +bwG +bwG +bwG +bwG bdd bdd bdd @@ -118998,12 +119484,12 @@ nsY nsY nsY nsY -gZG -xMh -ril -kRu -hXS -yhQ +ecj +bZf +lZI +faR +wxu +lyW aaa aaa aaa @@ -119024,7 +119510,7 @@ aaa aaa aaa aaa -lYA +gxm ojH ojH taV @@ -119104,7 +119590,7 @@ qXS hXX xDe xDe -czu +gxm aaa aaa aaa @@ -119124,14 +119610,14 @@ aaa aaa aaa aaa -aKW -aLf -aSm -hhw -hhw -hhw -hhw -hhw +kyw +lfx +deq +bwG +bwG +bwG +bwG +bwG aLB acF heb @@ -119198,15 +119684,15 @@ cbD rGg qtn kJV -fiq -fiq -fiq -fiq -fiq -fiq -wlp -oDf -yhQ +mJO +mJO +mJO +mJO +mJO +mJO +jPx +mgb +lyW aaa aaa aaa @@ -119227,17 +119713,17 @@ aaa aaa aaa aaa -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA -lYA +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm dho wVt wVt @@ -119297,17 +119783,17 @@ qLg iup ryY cnn -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu -czu +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm +gxm aaa aaa aaa @@ -119327,14 +119813,14 @@ aaa aaa aaa aaa -aKW -aLa -aSm -hhw -nHF -nHF -nHF -cmE +kyw +lfx +deq +bwG +ycl +ycl +ycl +jCg aLB nyG iDN @@ -119402,14 +119888,14 @@ fkO bHY kro bGb -uaa -uaa -uaa -oFM -fiq -fYc -uqH -yhQ +plv +plv +plv +mbR +mJO +eBG +nhw +lyW aaa aaa aaa @@ -119437,10 +119923,10 @@ aag aag aag aag -lYA -bRK -aao -aiv +vHn +fbe +hoT +rpG bGa dVn vwC @@ -119500,10 +119986,10 @@ dbc cNM ofU njk -xCX -vGk -hoX -czu +rXF +jtU +vzB +woU aag aag aag @@ -119530,14 +120016,14 @@ aaa aaa aaa aaa -aKW -aLf -aSm -hhw -nHF -nHF -nHF -nHF +kyw +lfx +deq +bwG +ycl +ycl +ycl +ycl aLB csl gjn @@ -119605,14 +120091,14 @@ dQs sFh guc bGb -uaa -uaa -uaa -uaa -fiq -wlp -vfJ -yhQ +plv +plv +plv +plv +mJO +jPx +enQ +lyW aaa aaa aaa @@ -119640,24 +120126,24 @@ aag aag aag aag -lYA -bTI -aap -aar -aar -aar -aar -aar -aar -aar +vHn +ggD +tob +cGd +cGd +cGd +cGd +cGd +cGd +cGd hZE sVV oON -aar -aar -lIl -aar -aar +cGd +cGd +cva +cGd +cGd ael ael agQ @@ -119684,29 +120170,29 @@ atC cnv amO lqJ -qVM -qVM -xeG -qVM -qVM -qVM -xeG -qVM -qVM -qVM +mRU +mRU +gBs +mRU +mRU +mRU +gBs +mRU +mRU +mRU mKi sfT hGV -qVM -qVM -qVM -qVM -qVM -qVM -qVM -csz -ofs -czu +mRU +mRU +mRU +mRU +mRU +mRU +mRU +vpf +tMU +woU aag aag aag @@ -119733,14 +120219,14 @@ aaa aaa aaa aaa -aKW -aLf -aSm -hhw -nHF -nHF -nHF -nHF +kyw +lfx +deq +bwG +ycl +ycl +ycl +ycl jUx aLG qmL @@ -119808,14 +120294,14 @@ jJe bHY buH vfo -uaa -uaa -uaa -uaa -fiq -scI -gFG -yhQ +plv +plv +plv +plv +mJO +nEl +bhy +lyW aaa aaa aaa @@ -119843,24 +120329,24 @@ aag aag aag aag -lYA -qsd -aao -aao -aar -aIZ -aIZ -aIZ -aLC -aar +vHn +hgk +hoT +hoT +cGd +vVY +vVY +vVY +tvS +cGd xVe sVV mbx -aar -vUk -sTB -lUA -tqd +cGd +orq +rRb +qjT +kRk ael afE agT @@ -119887,29 +120373,29 @@ atC abg amO nQx -qVM -usi -csz -usi -qVM -xfh -vGk -vGk -adI -qVM +mRU +tih +vpf +tih +mRU +jwM +jtU +jtU +jHX +mRU aDS sfT hGV -qVM -iBt -iBt -iBt -fgo -qVM -aPX -vGk -vGk -czu +mRU +qSw +qSw +qSw +vMQ +mRU +upS +jtU +jtU +woU aag aag aag @@ -119936,14 +120422,14 @@ aac aaf aaf aaf -aKW -aSm -aLf -hhw -nHF -nHF -nHF -nHF +kyw +deq +lfx +bwG +ycl +ycl +ycl +ycl aLB dEC aNO @@ -120011,14 +120497,14 @@ tfw bHY sVf bGb -uaa -uaa -uaa -uaa -fiq -scI -scg -yhQ +plv +plv +plv +plv +mJO +nEl +rxe +lyW aaf aaf aaf @@ -120046,24 +120532,24 @@ aag aag aag aag -lYA -lYA -aap -aap -aar -aIZ -aIZ -aIZ -aIZ -aar +vHn +vHn +tob +tob +cGd +vVY +vVY +vVY +vVY +cGd hHe gxn ioH -aar -fQY -aap -elM -vFb +cGd +mNS +tob +hvq +pCQ ael afH agV @@ -120090,29 +120576,29 @@ atC cbr amO uGt -qVM -qVM -vGk -har -qVM -xHG -csz -vGk -xHG -qVM +mRU +mRU +jtU +wlB +mRU +bBc +vpf +jtU +bBc +mRU uRY pMA waJ -qVM -iBt -iBt -iBt -iBt -qVM -pzQ -csz -czu -czu +mRU +qSw +qSw +qSw +qSw +mRU +oNM +vpf +woU +woU aag aag aag @@ -120139,14 +120625,14 @@ aad aag aag aag -aKW -vPr -iiP -hhw -nHF -nHF -nHF -nHF +kyw +xkb +dAA +bwG +ycl +ycl +ycl +ycl aLB udF aNO @@ -120214,14 +120700,14 @@ mEb bHY haT bGb -uaa -uaa -uaa -uaa -fiq -wlp -oDf -yhQ +plv +plv +plv +plv +mJO +jPx +mgb +lyW aag aag aag @@ -120250,23 +120736,23 @@ aag aag aag aag -lYA -aao -aao -aar -aIZ -aIZ -aIZ -aIZ +vHn +hoT +hoT +cGd +vVY +vVY +vVY +vVY aba aGA kbv fZo -aar -thR -aao -aao -gDP +cGd +nnH +hoT +hoT +eJj ael afI agY @@ -120294,27 +120780,27 @@ iWN ajt kGI aPm -qVM -vGk -csz -xCX -vGk -vGk -vGk -csz -qVM +mRU +jtU +vpf +rXF +jtU +jtU +jtU +vpf +mRU mzs aPT xyB ceD -iBt -iBt -iBt -iBt -qVM -buD -csz -czu +qSw +qSw +qSw +qSw +mRU +isq +vpf +woU aag aag aag @@ -120342,14 +120828,14 @@ aad aag aag aag -aKW -aSm -eIA -hhw -hhw -hhw -hhw -hhw +kyw +deq +qZK +bwG +bwG +bwG +bwG +bwG aLB dzF dzF @@ -120417,14 +120903,14 @@ cwQ vtB tQo bGb -fiq -fiq -fiq -fiq -fiq -wlp -bxX -yhQ +mJO +mJO +mJO +mJO +mJO +jPx +pgJ +lyW aag aag aag @@ -120453,23 +120939,23 @@ aag aag aag aag -lYA -aao -aap -aar -aIZ -aIZ -aIZ -aIZ -aar +vHn +hoT +tob +cGd +vVY +vVY +vVY +vVY +cGd mAF ilq pjj -aar -xtQ -aap -aao -sxT +cGd +dkt +tob +hoT +xfW ael afJ agY @@ -120497,27 +120983,27 @@ sDC ajt kGI ejp -qVM -vGk -hoX -qVM -xHG -csz -vGk -csz -qVM +mRU +jtU +vzB +mRU +bBc +vpf +jtU +vpf +mRU gfN efj sxE -qVM -iBt -iBt -iBt -iBt -qVM -oLw -vGk -czu +mRU +qSw +qSw +qSw +qSw +mRU +vpI +jtU +woU aag aag aag @@ -120545,14 +121031,14 @@ aad aag aag aag -aKW -uDB -aLf -hhw -nHF -nHF -nHF -cmE +kyw +xwd +lfx +bwG +ycl +ycl +ycl +jCg aLB enx aQt @@ -120620,14 +121106,14 @@ ojR tki lQQ bGb -uaa -uaa -uaa -oFM -fiq -wlp -oDf -yhQ +plv +plv +plv +mbR +mJO +jPx +mgb +lyW aag aag aag @@ -120656,23 +121142,23 @@ aag aag aag aag -lYA -aap -cWA -aar -aIZ -aIZ -aIZ -aIZ -aar +vHn +tob +xLu +cGd +vVY +vVY +vVY +vVY +cGd hZE kbv mbx -aar -com -aap -aao -sxT +cGd +gMJ +tob +hoT +xfW ael afK ahc @@ -120699,28 +121185,28 @@ cnS iWN ajt nYv -qVM -qVM -vGk -pzQ -qVM -usi -vzl -vGk -csz -qVM +mRU +mRU +jtU +oNM +mRU +tih +ycM +jtU +vpf +mRU aDS aPT hGV -qVM -iBt -iBt -iBt -iBt -qVM -vGk -csz -czu +mRU +qSw +qSw +qSw +qSw +mRU +jtU +vpf +woU aag aag aag @@ -120748,14 +121234,14 @@ aad aag aag aag -aKW -aSm -aLf -hhw -nHF -nHF -nHF -nHF +kyw +deq +lfx +bwG +ycl +ycl +ycl +ycl aLB ewo aNO @@ -120823,14 +121309,14 @@ fsH bHY pBn bGb -uaa -uaa -uaa -uaa -fiq -scI -oed -yhQ +plv +plv +plv +plv +mJO +nEl +xbg +lyW aag aag aag @@ -120859,23 +121345,23 @@ aag aag aag aag -lYA -aap -amN -aar -aar -aar -aar -aar -aar +vHn +tob +hUb +cGd +cGd +cGd +cGd +cGd +cGd laM kbv nkH -aar -tAV -sTB -xfk -wKn +cGd +eJZ +rRb +cXd +xew ael afL ahe @@ -120902,28 +121388,28 @@ cnS cnv ajt bYe -xCX -csz -csz -dWm -qVM -qVM -qVM -xeG -qVM -qVM +rXF +vpf +vpf +aBQ +mRU +mRU +mRU +gBs +mRU +mRU oIa aPT bqY -qVM -qVM -qVM -qVM -qVM -qVM -csz -csz -czu +mRU +mRU +mRU +mRU +mRU +mRU +vpf +vpf +woU aag aag aag @@ -120946,19 +121432,19 @@ aKQ aaa aaa aab -aKW -aKW -aKW -aKW -aKW -aKW -aSm -aSm -hhw -nHF -nHF -nHF -nHF +kyw +kyw +kyw +kyw +kyw +kyw +deq +iGc +bwG +ycl +ycl +ycl +ycl cmC aLG aNO @@ -121026,19 +121512,19 @@ pJJ bHY buH cnd -uaa -uaa -uaa -uaa -fiq -suT -oed -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +plv +plv +plv +plv +mJO +kLm +xbg +lyW +lyW +lyW +lyW +lyW +lyW aaa aab aaa @@ -121062,23 +121548,23 @@ aag aag aag aag -lYA -wFm -abe -aar -aIZ -aIZ -aIZ -aLC -aar +vHn +tJq +bLf +cGd +vVY +vVY +vVY +tvS +cGd hZE kbv mbx -aar -lIl -aar -aar -aar +cGd +cva +cGd +cGd +cGd adO adO adO @@ -121105,28 +121591,28 @@ cnT xvh fNC cKY -qVM -qVM -qVM -qVM -qVM -xfh -xWF -vGk -yji -qVM +mRU +mRU +mRU +mRU +mRU +jwM +oZn +jtU +lPW +mRU aDS aPT hGV -qVM -iBt -iBt -iBt -fgo -qVM -lJg -csz -czu +mRU +qSw +qSw +qSw +vMQ +mRU +wUJ +vpf +woU aag aag aag @@ -121149,19 +121635,19 @@ aKQ aaa aaa aab -aKW -qxA -aSm -aSm -aSm -jiX -aSm -bPV -hhw -nHF -nHF -nHF -nHF +kyw +ety +deq +deq +deq +deq +deq +xJp +bwG +ycl +ycl +ycl +ycl aLB fTU bbO @@ -121229,19 +121715,19 @@ cmd cmh wAR bGb -uaa -uaa -uaa -uaa -fiq -scI -oed -sow -oDf -leh -vhI -tVB -yhQ +plv +plv +plv +plv +mJO +nEl +xbg +jPU +mgb +cgU +oqI +iDk +lyW aaa aab aaa @@ -121265,23 +121751,23 @@ aag aag aag aag -lYA -aao -ahk -aar -aIZ -aIZ -aIZ -aIZ -aar +vHn +hoT +rGz +cGd +vVY +vVY +vVY +vVY +cGd hHe gxn gKd -aar -aao -aao -wkL -mts +cGd +hoT +hoT +svV +rIE adO afM fpR @@ -121312,24 +121798,24 @@ aUH aXx jKI aXx -qVM -usi -csz -vGk -csz -qVM +mRU +tih +vpf +jtU +vpf +mRU lCL pMA gcm -qVM -iBt -iBt -iBt -iBt -qVM -hkx -vGk -czu +mRU +qSw +qSw +qSw +qSw +mRU +uNz +jtU +woU aag aag aag @@ -121352,19 +121838,19 @@ aKQ aaa aaa aab -aKW -xxe -aLf -aLf -aLf -aLf -xPE -bPT -hhw -nHF -nHF -nHF -nHF +kyw +byt +lfx +lfx +lfx +lfx +txp +veq +bwG +ycl +ycl +ycl +ycl aLB ahj ahj @@ -121432,19 +121918,19 @@ ajX ajX ajX bGb -uaa -uaa -uaa -uaa -fiq -wUS -tbK -sVi -tbK -tbK -bfc -oed -yhQ +plv +plv +plv +plv +mJO +rxq +sAS +cXX +sAS +sAS +nHG +xbg +lyW aaa aab aaa @@ -121468,23 +121954,23 @@ aag aag aag aag -lYA -aap -eGF -aar -aIZ -aIZ -aIZ -aIZ +vHn +tob +alh +cGd +vVY +vVY +vVY +vVY bWh hmj kbv fZo -aar -hLB -aao -aao -laY +cGd +ykY +hoT +hoT +tjz adO afN ahh @@ -121515,24 +122001,24 @@ aUH oyE mMP mMP -qVM -vGk -csz -vGk -csz -qVM +mRU +jtU +vpf +jtU +vpf +mRU mzs aPT xyB cix -iBt -iBt -iBt -iBt -qVM -lSD -vGk -czu +qSw +qSw +qSw +qSw +mRU +bWg +jtU +woU aag aag aag @@ -121555,20 +122041,20 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW +kyw +deq +lfx +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr wdb ahj ahj @@ -121634,20 +122120,20 @@ vra ajX ajX hBC -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -scI -oDf -yhQ +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +nEl +mgb +lyW aaa aab aaa @@ -121671,23 +122157,23 @@ aag aag aag aag -lYA -cIU -aao -aar -aIZ -aIZ -aIZ -aIZ -aar +vHn +btV +hoT +cGd +vVY +vVY +vVY +vVY +cGd mAF ilq pjj -aar -xYe -kZH -aao -frY +cGd +boU +nNI +hoT +veO adO afO ahh @@ -121718,24 +122204,24 @@ aUH sIA gSj aXA -qVM -vGk -csz -vGk -xHG -qVM +mRU +jtU +vpf +jtU +bBc +mRU gfN efj sxE -qVM -iBt -iBt -iBt -iBt -qVM -toE -ofs -czu +mRU +qSw +qSw +qSw +qSw +mRU +kUL +tMU +woU aag aag aag @@ -121758,10 +122244,10 @@ aKQ aaa aaa aab -aKW -bhC -aSm -aKW +kyw +deq +iGc +wDr bbB bbB arn @@ -121825,7 +122311,7 @@ bNE wDJ ivs nyQ -gZr +dXH vWB bSK nyQ @@ -121847,10 +122333,10 @@ aoc aAv eZi eZi -yhQ -wlp -ftl -yhQ +wDr +jPx +wdW +lyW aaa aab aaa @@ -121874,23 +122360,23 @@ aag aag aag aag -lYA -aap -aap -aar -aIZ -aIZ -aIZ -aIZ -aar +vHn +tob +tob +cGd +vVY +vVY +vVY +vVY +cGd xXT sVV tkR -aar -mko -uaZ -aap -svC +cGd +ipr +pUL +tob +eQd adO jkj ahh @@ -121921,24 +122407,24 @@ aUd ckK iKM aHM -qVM -vGk -csz -yji -uso -qVM +mRU +jtU +vpf +lPW +vwJ +mRU nme sfT vAH -qVM -iBt -iBt -iBt -iBt -qVM -gKS -csz -czu +mRU +qSw +qSw +qSw +qSw +mRU +edG +vpf +woU aag aag aag @@ -121961,10 +122447,10 @@ aKQ aaa aaa aab -aKW -aLf -aLF -aKW +kyw +lfx +gSH +wDr bbB bbB arn @@ -122050,10 +122536,10 @@ aoc aAv eZi eZi -yhQ -scI -oDf -yhQ +wDr +nEl +mgb +lyW aaa aab aaa @@ -122077,24 +122563,24 @@ aag aag aag aag -lYA -aao -aao -aar -aar -aar -aar -aar -aar +vHn +hoT +hoT +cGd +cGd +cGd +cGd +cGd +cGd ehL kyr chb -aar -aar -aar -tiM -aar -aar +cGd +cGd +cGd +moK +cGd +cGd lFt ahh aiw @@ -122124,24 +122610,24 @@ aUH dbv lII aWc -qVM -xeG -qVM -qVM -qVM -qVM +mRU +gBs +mRU +mRU +mRU +mRU tCx ncG tZg -qVM -qVM -qVM -qVM -qVM -qVM -vGk -vGk -czu +mRU +mRU +mRU +mRU +mRU +mRU +jtU +jtU +woU aag aag aag @@ -122164,10 +122650,10 @@ aKQ aaa aaa aab -aKW -cmq -bPS -aKW +kyw +oif +nRN +wDr bbB bbB arn @@ -122253,10 +122739,10 @@ aoc aAv eZi eZi -yhQ -oYb -fxz -yhQ +wDr +xgS +svF +lyW aaa aab aaa @@ -122280,24 +122766,24 @@ aag aag aag aag -lYA -aao -aap -gXh -aao -aap -aap -ahg -aiv +vHn +hoT +tob +lso +hoT +tob +tob +hqm +rpG cSa aeA sjz -aiv -ahg -aap -aap -aao -rfg +rpG +hqm +tob +tob +hoT +fkK aiw ahh aiw @@ -122327,24 +122813,24 @@ aGz ckd mQC aHM -xCX -vGk -vGk -aip -vzl -xCX +rXF +jtU +jtU +egQ +ycM +rXF wcm lJY guo -xCX -weU -csz -gYS -vGk -vGk -csz -csz -czu +rXF +fLi +vpf +uBx +jtU +jtU +vpf +vpf +woU aag aag aag @@ -122367,23 +122853,23 @@ aKQ aaa aaa aab -aKW -rJb -yaG -aKW +kyw +vaV +qxJ +wDr bbC aan aan -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -hhw -hhw +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +aLT +aLT aLT sXt aMQ @@ -122444,22 +122930,22 @@ bUU uDW bSJ bSJ -fiq -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +ljv +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr tGq tGq jjT -yhQ -trD -oDf -yhQ +wDr +wtk +mgb +lyW aaa aab aaa @@ -122484,23 +122970,23 @@ aag aag aag abh -aar -aar -tiM -aar -aar -aar -aar -aar +cGd +cGd +moK +cGd +cGd +cGd +cGd +cGd wYa nBK mzS -aar -aar -aar -aar -aap -aar +cGd +cGd +cGd +cGd +tob +cGd afP ahh aiw @@ -122530,23 +123016,23 @@ aGz drk mQC mkG -qVM -oLw -qVM -qVM -qVM -qVM +mRU +vpI +mRU +mRU +mRU +mRU nuM uHr xwX -qVM -qVM -qVM -qVM -qVM -xeG -qVM -qVM +mRU +mRU +mRU +mRU +mRU +gBs +mRU +mRU uOi aag aag @@ -122570,10 +123056,10 @@ aKQ aaa aaa aab -aKW -aLf -aaz -aKW +kyw +lfx +gUn +wDr bdY bdY bdY @@ -122584,8 +123070,8 @@ aaF aaF aaF aaF -aKW -hhw +wDr +aLT aLT aLT aLT @@ -122647,8 +123133,8 @@ bSJ bSJ bSJ bSJ -fiq -yhQ +ljv +wDr anm anm anm @@ -122659,10 +123145,10 @@ anm pfp pfp pfp -yhQ -scI -oed -yhQ +wDr +nEl +xbg +lyW aaa aab aaa @@ -122701,9 +123187,9 @@ aeA bbe aeA aeA -aar -aap -aar +cGd +tob +cGd afQ aiw aiw @@ -122733,9 +123219,9 @@ aGz eqB obC hcf -qVM -lau -qVM +mRU +cpQ +mRU lJY lJY lFK @@ -122773,10 +123259,10 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aKW +kyw +oxn +oxn +wDr bdY bdY bdY @@ -122787,8 +123273,8 @@ aaF aaF aaF aaF -aKW -hhw +wDr +aLT aLT bbY bdr @@ -122816,7 +123302,7 @@ bEs bIs bdm rbY -gwD +eAG bOK bPD bYa @@ -122850,8 +123336,8 @@ clI clg clW bSJ -fiq -yhQ +ljv +wDr anm anm anm @@ -122862,10 +123348,10 @@ anm pfp pfp pfp -yhQ -wlp -oed -yhQ +wDr +cZI +xGT +lyW aaa aab aaa @@ -122904,9 +123390,9 @@ asA amF kmE aeA -aar -awJ -aar +cGd +iTQ +cGd ahJ ahJ ahJ @@ -122936,9 +123422,9 @@ aUH aGz aGz aGz -qVM -hoX -qVM +mRU +vzB +mRU lJY qbx dcp @@ -122976,10 +123462,10 @@ aKQ aaa aaa aab -aKW -bhC -aSm -aKW +emA +vIg +vIg +wDr bdY bdY bdY @@ -122990,8 +123476,8 @@ aaF aaF aaF aaF -aKW -hhw +wDr +aLT aLT bca aMC @@ -123053,8 +123539,8 @@ bSJ bVo clX bSJ -fiq -yhQ +ljv +wDr anm anm anm @@ -123065,10 +123551,10 @@ anm pfp pfp pfp -yhQ -scI -uqH -yhQ +wDr +cOo +rJf +tcO aaa aab aaa @@ -123107,9 +123593,9 @@ aeC vOh gUX ily -aar -tiM -aar +cGd +moK +cGd aWd aWd aWd @@ -123139,9 +123625,9 @@ pji aWd aWd aWd -qVM -xeG -qVM +mRU +gBs +mRU cBb xVS lJY @@ -123179,22 +123665,22 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -hhw +emA +gPS +gPS +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +aLT aLT aLT aLT @@ -123256,22 +123742,22 @@ bSJ bSJ bSJ bSJ -fiq -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -wlp -oDf -yhQ +ljv +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +wDr +nGM +hIp +tcO aaa aab aaa @@ -123382,22 +123868,22 @@ aKQ aaa aaa aab -aKW -aSm -aLf -aLf -ycV -aLf -aSm -bbx -izU -gFs -yaG -bPV -aaz -bPT -eko -bPV +emA +jEM +ikT +owU +iTq +ikT +jEM +kjY +riB +fGi +qan +jkN +jUh +tIF +bCk +jkN aLT bco aMB @@ -123459,22 +123945,22 @@ clJ bVn clY bSJ -fiq -iFm -anb -anb -anb -kKX -uvs -ixP -fiq -kUt -hGZ -tbK -tbK -sQU -ebY -yhQ +ljv +dnZ +eHy +eHy +eHy +cyp +oaO +lWY +ljv +jiM +ere +lYg +lYg +sEu +lia +tcO aaa aab aaa @@ -123585,22 +124071,22 @@ aKQ aaa aaa aab -aKW -aLF -bbx -bPS -ktP -aSm -aLf -aSm -ecM -enf -ecM -aSm -aLf -bbx -eko -lLV +emA +kJZ +kjY +fGB +snN +jEM +ikT +jEM +lty +eTD +lty +jEM +ikT +kjY +bCk +heO aLT bco bdr @@ -123626,9 +124112,9 @@ bdl lOr lOr iwI -lOr bdl -bEt +bdl +reH bNP bmD bNP @@ -123662,22 +124148,22 @@ clJ clg clY bSJ -fiq -wUS -tbK -tbK -bfc -ant -glM -mUn -fiq -suT -oed -oed -oed -uim -qNy -yhQ +ljv +eaz +lYg +lYg +aqH +oxl +wac +mjy +ljv +ien +xhO +xhO +xhO +cmN +srl +tcO aaa aab aaa @@ -123788,22 +124274,22 @@ aKQ aaa aaa aab -aKW -aKW -aKW -aKW -aKW -uDB -aLf -aSm -uGw -uJl -ihn -aSm -aLf -aSm -aSm -eko +emA +emA +emA +emA +emA +sEg +ikT +jEM +ahL +bFl +nZW +jEM +ikT +jEM +jEM +bCk aLT bcZ bdr @@ -123827,10 +124313,10 @@ bzV beB mCo iwZ -lBF +jFy bKA -sbM -pWA +mPK +dmF pXV bNP bmD @@ -123865,22 +124351,22 @@ clK clg bVy bSJ -fiq -fiq -fiq -fiq -lra -ujA -fiq -fiq -fiq -jbb -uNW -yhQ -yhQ -yhQ -yhQ -yhQ +ljv +ljv +ljv +ljv +tWl +jer +ljv +ljv +ljv +jEA +hCq +tcO +tcO +tcO +tcO +tcO aaa aab aaa @@ -123919,9 +124405,9 @@ nqV aeA ajk ily -psm -jFX -psm +taw +mRI +taw blb aWd aXT @@ -123951,9 +124437,9 @@ pji jFg aWd pCD -vuv -orm -vuv +kNq +cWo +kNq cBb xVS lJY @@ -123995,18 +124481,18 @@ aaa aaa aaa aaa -aKW -uAs -aLf -aSm -kOf -oIn -kOf -aSm -aLf -bzF -aSm -aLf +emA +tcm +ikT +jEM +uzv +tYr +uzv +jEM +ikT +hYf +jEM +ikT aLT bco bdr @@ -124068,18 +124554,18 @@ clJ clg clY bSJ -iGK -tbK -tbK -tbK -sQU -wUS -hGZ -tbK -tbK -sQU -oDf -yhQ +bXh +lYg +lYg +lYg +sEu +eaz +ere +lYg +lYg +sEu +gEh +tcO aaa aaa aaa @@ -124122,8 +124608,8 @@ wXh aeC ajs qon -psm -tNT +taw +obJ aep ggQ ggQ @@ -124155,8 +124641,8 @@ aME ggQ aME aep -vSg -vuv +hog +kNq dHe kUV vcE @@ -124198,18 +124684,18 @@ aaa aaa aaa aaa -aKW -bPU -bPS -bbx -moh -iIY -bPW -xlD -aLf -aSm -aSm -aLf +emA +hyb +fGB +kjY +yia +ugZ +kcG +fBo +ikT +jEM +jEM +ikT aLT bco aMC @@ -124271,18 +124757,18 @@ clJ bVo clY bSJ -pNG -oed -oed -oed -oed -oDf -mOU -oDf -oed -oed -uFt -yhQ +tgm +xhO +xhO +xhO +xhO +gEh +sOD +gEh +xhO +xhO +tWp +tcO aaa aaa aaa @@ -124325,8 +124811,8 @@ aeC aeC ajs aeC -psm -xlX +taw +oxy aep afj afk @@ -124358,8 +124844,8 @@ aHS afk sHo aep -sFR -vuv +vmu +kNq vcE kUV vcE @@ -124401,18 +124887,18 @@ aaa aaa aaa aaa -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -aKW -ycV -ktP +emA +emA +emA +emA +emA +emA +emA +emA +emA +emA +iTq +snN aLT aLT aLT @@ -124474,18 +124960,18 @@ bSJ bSJ bSJ bSJ -scI -oed -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ -yhQ +cZp +xhO +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -124528,8 +125014,8 @@ aeC aeA ajk aeA -psm -xlX +taw +oxy aep afk afk @@ -124561,8 +125047,8 @@ afk aHl afk aep -kMq -vuv +hLt +kNq lJY itR kKR @@ -124613,9 +125099,9 @@ aaa aaa aaa aaa -wVb -eFH -hlz +emA +ikT +jEM aLT bcE aMB @@ -124677,9 +125163,9 @@ clL bVn clZ bSJ -dGz -cAH -vTK +tgm +xhO +tcO aaa aaa aaa @@ -124731,8 +125217,8 @@ asA amF ohL aeA -psm -dmQ +taw +oQL aep aep aep @@ -124764,8 +125250,8 @@ aep aep aep aep -cBi -vuv +ddF +kNq lJY ucw dcp @@ -124805,6 +125291,8 @@ aaa aab aaa aaa +bdH +bdH aaa aaa aaa @@ -124814,11 +125302,9 @@ aaa aaa aaa aaa -aaa -aaa -wVb -iDm -hlz +emA +qGC +jEM aLT bcE bdr @@ -124880,19 +125366,19 @@ clL clg clZ bSJ -xRE -ebO -vTK -aaa -aaa -aaa -aaa -aaa +xMm +pFr +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -124934,9 +125420,9 @@ ntI aeA aeC puO -psm -xlX -egS +taw +oxy +eRG aep aep aep @@ -124967,8 +125453,8 @@ jgr gGp dMf oIB -sFR -vuv +vmu +kNq lJY uxC lJY @@ -125008,6 +125494,8 @@ aaa aab aaa aaa +bdH +bdH aaa aaa aaa @@ -125017,11 +125505,9 @@ aaa aaa aaa aaa -aaa -aaa -wVb -eFH -hlz +emA +ikT +jEM aLT abS bdr @@ -125083,19 +125569,19 @@ clK clg acp bSJ -vMn -vuR -vTK -aaa -aaa -aaa -aaa -aaa +qKK +gEh +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125131,19 +125617,19 @@ atr aeC atr aeC -psm -psm -psm -psm -jFX -psm -psm -xlX -aeq -psm -psm -psm -psm +taw +taw +taw +taw +mRI +taw +taw +oxy +hja +taw +taw +taw +taw alG aYj aoD @@ -125170,14 +125656,14 @@ fXE kaS aiQ oIB -sFR -vuv -vuv -vuv -vuv -sdw -vuv -vuv +vmu +kNq +kNq +kNq +kNq +qDB +kNq +kNq vcE bXe vcE @@ -125211,6 +125697,8 @@ aaa aab aaa aaa +bdH +bdH aaa aaa aaa @@ -125220,11 +125708,9 @@ aaa aaa aaa aaa -aaa -aaa -wVb -hlz -eFH +emA +jEM +ikT aLT bcE aMC @@ -125286,19 +125772,19 @@ clL bVo clZ bSJ -bob -emG -vTK -aaa -aaa -aaa -aaa -aaa +hTU +lNk +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125334,19 +125820,19 @@ atr aeC atr aeC -psm -cnU -nGc -psm -cWI -psm -whc -xlX -dmQ -psm -dmQ -dmQ -psm +taw +hEj +cvi +taw +wFX +taw +ncV +oxy +oQL +taw +oQL +oQL +taw alK ajP aoD @@ -125373,14 +125859,14 @@ wqr bZw xUV oIB -sFR -hPo -vuv -dnk -rCp -fbx -cEO -vuv +vmu +vDR +kNq +toD +wDq +aPO +sNP +kNq vcE bXe vcE @@ -125425,9 +125911,9 @@ aaa aaa aaa aaa -wVb -qnP -jPf +emA +rIV +dYc aLT aLT aLT @@ -125489,19 +125975,19 @@ bSJ bSJ bSJ bSJ -cJP -vuR -vTK -aaa -aaa -aaa -aaa -aaa +xsv +gEh +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125537,19 +126023,19 @@ atu azU aeC ldl -psm -xlX -nYh -psm -xuI -psm -miK -tXW -gfk -fBf -tXW -tXW -fBf +taw +oxy +stA +taw +tvA +taw +oTc +nwT +ocI +mfH +nwT +nwT +mfH aTS ajP aoD @@ -125576,14 +126062,14 @@ tEB uBM dXo oIB -lBR -nVu -vuv -jvI -cxo -fbx -jnk -vuv +xPu +uOE +kNq +swG +jei +aPO +hIX +kNq vcE pxJ swM @@ -125628,9 +126114,9 @@ aaa aaa aaa aaa -wVb -hlz -moE +emA +jEM +kDd aLT bdJ bds @@ -125655,7 +126141,7 @@ jJs bdl bEp bCA -bCA +wlh cvb bmC nwG @@ -125692,19 +126178,19 @@ bSJ clM clS bSJ -nOG -vuR -vTK -aaa -aaa -aaa -aaa -aaa +cZp +gEh +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125734,25 +126220,25 @@ aaa aad aag aag -pVZ -psm -psm -psm -jFX -psm -psm -sAA -nYh -psm -ano -psm -qhB -xlX -wCh -psm -dmQ -dmQ -psm +fTl +taw +taw +taw +mRI +taw +taw +wpT +stA +taw +wTn +taw +nQw +oxy +wjP +taw +oQL +oQL +taw uBz aYj aoE @@ -125779,20 +126265,20 @@ wKF hzb ltU oIB -fbx -cFA -vuv -joT -cxo -fbx -hlI -vuv -vuv -vuv -vuv -sdw -vuv -qMu +aPO +eDk +kNq +bCR +jei +aPO +fJp +kNq +kNq +kNq +kNq +qDB +kNq +fVe aag aag afm @@ -125831,9 +126317,9 @@ aaa aaa aaa aaa -wVb -hlz -eFH +emA +jEM +ikT aLT beT bdr @@ -125859,7 +126345,7 @@ bdl ycp ycp tPj -mnf +ycp ycp bdl bdl @@ -125895,19 +126381,19 @@ clG clg bVq bSJ -njT -ydx -vTK -aaa -aaa -aaa -aaa -aaa +ien +dFL +tcO aaa aaa aaa aaa aaa +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -125937,25 +126423,25 @@ aaa aaa aad aag -pVZ -amJ -jXY -psm -ano -bjI -psm -cnY -nYh -psm -cWI -psm -adp -xlX -aeq -psm -dmQ -aeq -psm +fTl +vrZ +qlu +taw +wTn +kCu +taw +uPN +stA +taw +wFX +taw +lsh +oxy +hja +taw +oQL +hja +taw jMK ajR aoG @@ -125982,20 +126468,20 @@ phj vEf cNK oIB -fbx -cxo -iEs -fbx -fbx -fbx -cxo -cxo -iwh -cxo -cxo -fbx -cxo -qMu +aPO +jei +oYr +aPO +aPO +aPO +jei +jei +lYt +jei +jei +aPO +jei +fVe aag ajZ aaa @@ -126034,9 +126520,9 @@ aaa aaa aaa aaa -wVb -tAi -eFH +emA +sEg +ikT aLT aLT aLT @@ -126061,10 +126547,10 @@ jJs bdl fKT bGy -bKA +kOW snM iqo -moY +bdl clV crD kLP @@ -126098,9 +126584,9 @@ bSJ bSJ bSJ bSJ -nOG -cAH -vTK +cZp +xhO +tcO aaa aaa aaa @@ -126140,25 +126626,25 @@ aaa aaa aad aag -pVZ -amL -atz -psm -ouo -bjI -psm -jFX -psm -psm -xuI -psm -dmQ -xlX -dmQ -psm -cBB -irn -psm +fTl +hjT +rWb +taw +oAK +kCu +taw +mRI +taw +taw +tvA +taw +oQL +oxy +oQL +taw +cap +fiN +taw rFY ctC aoQ @@ -126185,20 +126671,20 @@ opI dha pxj oIB -fbx -gHg -vuv -iTf -cxo -suk -chC -pTT -oLd -oLd -oLd -oyw -cxo -qMu +aPO +oUx +kNq +fPF +jei +nNT +jwJ +mgX +nZG +nZG +nZG +xGm +jei +fVe aag ajZ aaa @@ -126237,9 +126723,9 @@ aaa aaa aaa aaa -wVb -hlz -eFH +emA +jEM +ikT aLT beT bdr @@ -126301,9 +126787,9 @@ clH oFV bVq bSJ -fTx -lGr -vTK +vUJ +hCq +tcO aaa aaa aaa @@ -126343,25 +126829,25 @@ aaa aaa aad aag -pVZ -jXY -coG -hSu -xlX -dmQ -aDg -dmQ -tLM -xlX -xlX -hSu -xlX -xlX -dmQ -psm -psm -psm -psm +fTl +qlu +uKl +kiR +oxy +oQL +jsu +oQL +gqt +oxy +oxy +kiR +oxy +oxy +oQL +taw +taw +taw +taw aEp lIw aoR @@ -126391,17 +126877,17 @@ loP qej loP loP -vuv -hlI -fbx -xxJ -ybO -yal -tpK -qKF -kaN -gHg -qMu +kNq +fJp +aPO +wXl +dJe +unQ +nxe +tjH +tVn +oUx +fVe aag ajZ aaa @@ -126440,9 +126926,9 @@ aaa aaa aaa aaa -wVb -eFH -hlz +emA +ikT +jEM aLT beU bdv @@ -126466,7 +126952,7 @@ baq jJs bdl ntd -iVj +hgO eqb mLR hdE @@ -126504,9 +126990,9 @@ bSJ clN clT bSJ -cJP -vuR -vTK +xsv +gEh +tcO aaa aaa aaa @@ -126546,25 +127032,25 @@ aaa aaa aad aag -pVZ -amP -atD -psm -xlX -aDz -aRV -cyE -xlX -dmQ -uRQ -psm -dmQ -xlX -dmQ -psm -ahn -aiz -psm +fTl +wIu +wXJ +taw +oxy +kMa +qIa +iSB +oxy +oQL +hdy +taw +oQL +oxy +oQL +taw +liF +wPR +taw ndJ anJ aoS @@ -126594,17 +127080,17 @@ vqL xBY qwo loP -xgL -nho -fbx -xxJ -hlI -eRe -eRe -eRe -kaN -cxo -qMu +ang +hqu +aPO +wXl +fJp +iCD +iCD +iCD +tVn +jei +fVe aag ajZ aaa @@ -126643,9 +127129,9 @@ aaa aaa aaa aaa -wVb -iDm -hlz +emA +qGC +jEM aLT aLT aLT @@ -126707,9 +127193,9 @@ bSJ bSJ bSJ bSJ -wGi -woG -vTK +goM +tfQ +tcO aaa aaa aaa @@ -126749,25 +127235,25 @@ aaf aaf aag aag -pVZ -psm -psm -psm -ano -aDF -bYg -cNc -xlX -dmQ -gyt -psm -rsY -xlX -dmQ -psm -dmQ -dmQ -psm +fTl +taw +taw +taw +wTn +wOv +tuJ +iKV +oxy +oQL +oFr +taw +mUL +oxy +oQL +taw +oQL +oQL +taw alG aDZ aoU @@ -126797,17 +127283,17 @@ wSn xBY lKa loP -ejK -cxo -fbx -xxJ -vuv -oeL -cxo -hkm -hlw -pmk -qMu +fvo +jei +aPO +wXl +kNq +jcE +jei +lVR +pHD +dhp +fVe aag aag aaf @@ -126842,13 +127328,13 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -eFH -eFH +emA +emA +emA +emA +emA +ikT +ikT aLT vZb tnY @@ -126910,13 +127396,13 @@ hcI hcI vPK bSJ -nOG -vuR -vTK -vTK -vTK -vTK -vTK +cZp +gEh +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -126952,25 +127438,25 @@ aag aag aag aag -pVZ -amQ -dmQ -hSu -xlX -aDF -jXY -dxC -xlX -aDz -mNW -psm -adp -xlX -wCh -psm -dmQ -dmQ -psm +fTl +hEr +oQL +kiR +oxy +wOv +qlu +qAG +oxy +kMa +gQu +taw +lsh +oxy +wjP +taw +oQL +oQL +taw ylJ aDZ aoD @@ -127000,17 +127486,17 @@ kdi xBY kxo loP -sFF -cxo -fbx -xxJ -vuv -gUy -nho -oRj -hHU -cxo -qMu +nSk +jei +aPO +wXl +kNq +cke +hqu +oSR +fZI +jei +fVe aag aag aag @@ -127045,13 +127531,13 @@ aaa aaa aaa aaa -wVb -fTR -qaD -jeU -dHk -hlz -eFH +emA +hyb +kjY +kcG +tIF +jEM +ikT aWT aMH beV @@ -127086,11 +127572,11 @@ bdl bdl bdl bdl -cbo -gRn -cbo -cbo -gRn +reN +dEp +reN +htk +dEp bdl bdl cbV @@ -127113,13 +127599,13 @@ aMI wGE erG ewO -bWb -cAH -luk -rQj -ngs -gai -vTK +sEu +xhO +ffx +jhK +srl +lWY +tcO aaa aaa aaa @@ -127155,25 +127641,25 @@ aag aag aag aag -pVZ -amQ -atG -psm -seO -aDF -amP -egB -xlX -aDF -igf -psm -atD -xlX -xlX -hSu -xlX -xlX -hSu +fTl +hEr +xBS +taw +tTG +wOv +wIu +ydf +oxy +wOv +ixu +taw +wXJ +oxy +oxy +kiR +oxy +oxy +kiR aWd aDZ nfp @@ -127203,17 +127689,17 @@ xBY xBY jGI loP -vuv -hlI -cHq -xxJ -vuv -vuv -vuv -vuv -kmK -cxo -qMu +kNq +fJp +nOx +wXl +kNq +kNq +kNq +kNq +pAV +jei +fVe aag aag aag @@ -127248,13 +127734,13 @@ aaa aaa aaa aaa -wVb -vjx -eFH -eFH -eFH -eFH -eFH +emA +jkN +ikT +ikT +ikT +ikT +ikT aLT aZf duV @@ -127275,27 +127761,27 @@ kcl aLG aYO bZK -qic -xfc -bCH -vZA -bCH -bCH -uIp -bHm -bHm -bHm -wNm -bCH -bCH -bHm -bLS -bCH -lXF -bHm -bCH -bCH -qic +lZM +rSR +xss +rLK +xss +xss +uHk +dXb +dXb +dXb +cTX +xss +xss +dXb +ndm +xss +iFY +dXb +xss +xss +lZM cbW iEb bIT @@ -127316,13 +127802,13 @@ jGR jGR oqu bSJ -vuR -vuR -vuR -vuR -vuR -cAH -vTK +gEh +gEh +gEh +gEh +gEh +xhO +tcO aaa aaa aaa @@ -127358,25 +127844,25 @@ aag aag aag aag -pVZ -amW -auo -psm -xlX -bkR -bYi -eJd -xlX -aDF -jXY -psm -jXY -xlX -dmQ -psm -dmQ -dmQ -akd +fTl +oqc +smw +taw +oxy +rgk +nUT +cnP +oxy +wOv +qlu +taw +qlu +oxy +oQL +taw +oQL +oQL +lnD alG aDZ xrr @@ -127406,17 +127892,17 @@ odD xBY mOg oHx -fbx -oVP -fbx -gAt -tly -flE -flE -flE -xzo -cxo -qMu +aPO +iXB +aPO +gof +bVr +ivL +ivL +ivL +fVa +jei +fVe aag aag aag @@ -127451,9 +127937,9 @@ aaa aaa aaa aaa -wVb -ilZ -eFH +emA +fGi +ikT aLT aLT aLT @@ -127478,13 +127964,13 @@ aQL beB aYT bzY -aLd -aLd -bvS -aLd -aLd -aLd -aLd +cvx +cvx +bKJ +cvx +cvx +cvx +cvx vub vub vub @@ -127492,13 +127978,13 @@ owW vub vub vub -aLd -aLd -aLd -bvS -aLd -aLd -aLd +cvx +cvx +cvx +bKJ +cvx +cvx +cvx cbX cbS ccO @@ -127523,9 +128009,9 @@ bSJ bSJ bSJ bSJ -vuR -ydx -vTK +gEh +dFL +tcO aaa aaa aaa @@ -127561,25 +128047,25 @@ aag aag aag aag -pVZ -psm -psm -psm -ano -dmQ -dmQ -adE -xlX -wya -aiE -psm -jXY -xlX -aeq -psm -gIN -aiA -akd +fTl +taw +taw +taw +wTn +oQL +oQL +lUQ +oxy +tBU +iDs +taw +qlu +oxy +hja +taw +kLZ +tty +lnD alG aDZ xrr @@ -127609,17 +128095,17 @@ loP eMh loP loP -vuv -kJG -fbx -okd -eYH -rav -eYH -eYH -wWL -cxo -qMu +kNq +hnt +aPO +wSx +gYI +wPa +gYI +gYI +rzk +jei +fVe aag aag aag @@ -127654,9 +128140,9 @@ aaa aaa aaa aaa -wVb -hlz -eFH +emA +jEM +ikT aLT bBg vPv @@ -127726,9 +128212,9 @@ qNd hzu hcI bSJ -cAH -cAH -vTK +xhO +xhO +tcO aaa aaa aaa @@ -127764,25 +128250,25 @@ aag aag aag aag -pVZ -dmQ -meS -aAe -xlX -dmQ -psm -psm -jFX -psm -psm -psm -igf -xlX -dmQ -psm -psm -psm -psm +fTl +oQL +mOE +gUG +oxy +oQL +taw +taw +mRI +taw +taw +taw +ixu +oxy +oQL +taw +taw +taw +taw alG aDZ xrr @@ -127813,16 +128299,16 @@ vyI lPB oHl jWh -vuv -sdw -vuv -vuv -vuv -vuv -vuv -ldN -gHg -qMu +kNq +qDB +kNq +kNq +kNq +kNq +kNq +gGb +oUx +fVe aag aag aag @@ -127857,9 +128343,9 @@ aaa aaa aaa aaa -wVb -hlz -hlz +emA +jEM +jEM aLT nuN nuN @@ -127929,9 +128415,9 @@ rYp oEo oEo bSJ -cAH -cea -vTK +xhO +lMO +tcO aaa aaa aaa @@ -127967,25 +128453,25 @@ aag aag aag aag -pVZ -xlX -xlX -aBa -xlX -dmQ -psm -eKD -nZF -wMm -psm -adp -dmQ -xlX -dmQ -qWT -lWh -aiE -psm +fTl +oxy +oxy +bCv +oxy +oQL +taw +gCQ +rEs +tvr +taw +lsh +oQL +oxy +oQL +aYU +uxs +iDs +taw alG aDZ xrr @@ -128016,16 +128502,16 @@ hSk hSk uIv jWh -dCt -xhU -dsu -vuv -ozr -hWa -dCP -ldN -cxo -qMu +jZj +sRP +oko +kNq +tiY +qAK +xGK +gGb +jei +fVe aag aag aag @@ -128060,9 +128546,9 @@ aaa aaa aaa aaa -wVb -rVo -hlz +emA +oPF +jEM aLT vug vug @@ -128132,9 +128618,9 @@ yle wWX wWX bSJ -cAH -bpJ -vTK +xhO +xHa +tcO aaa aaa aaa @@ -128170,25 +128656,25 @@ aag aag aag aag -pVZ -ano -dmQ -aBg -dmQ -boZ -psm -eKD -oyo -wQx -psm -lhL -dmQ -xlX -dmQ -dmQ -dmQ -soQ -psm +fTl +wTn +oQL +qmq +oQL +nXo +taw +gCQ +bNc +tCC +taw +ftG +oQL +oxy +oQL +oQL +oQL +keE +taw alJ aDZ xrr @@ -128219,16 +128705,16 @@ hSk hSk uIv jWh -xrN -fbx -ije -vuv -cxo -wwD -oda -ldN -cOi -qMu +eHz +aPO +tMT +kNq +jei +ltm +oAT +gGb +cmV +fVe aag aag aag @@ -128263,9 +128749,9 @@ aaa aaa aaa aaa -wVb -qnP -uia +emA +rIV +nvI aLT iPS vAE @@ -128335,9 +128821,9 @@ vSW scy kPJ bSJ -cAH -ubd -vTK +xhO +eeR +tcO aaa aaa aaa @@ -128373,25 +128859,25 @@ aag aag aag aag -pVZ -xlX -psm -psm -rzP -psm -psm -fnZ -xlX -xoh -ckB -afl -jUL -afl -afl -afl -afl -afl -wDR +fTl +oxy +taw +taw +xcs +taw +taw +utC +oxy +ikC +vRJ +gNQ +laP +gNQ +gNQ +gNQ +gNQ +gNQ +xDG alP ajW apc @@ -128422,16 +128908,16 @@ vyI kpQ vSE jWh -ppc -iYp -iZX -vuv -cxo -wwD -rku -ldN -cxo -qMu +nwA +xZz +kRN +kNq +jei +ltm +ejj +gGb +jei +fVe aag aag aag @@ -128466,9 +128952,9 @@ aaa aaa aaa aaa -wVb -tAi -moE +emA +sEg +kDd aLT aLT aLT @@ -128538,9 +129024,9 @@ bSJ bSJ bSJ bSJ -pUY -emG -vTK +qid +lNk +tcO aaa aaa aaa @@ -128576,25 +129062,25 @@ aag aag aag aag -pVZ -xlX -psm -nQg -szX -xyE -psm -eKD -pBW -xtD -psm -psm -psm -jFX -psm -psm -psm -psm -psm +fTl +oxy +taw +tZM +qEZ +frV +taw +gCQ +uqJ +vbu +taw +taw +taw +mRI +taw +taw +taw +taw +taw ylJ aDZ apd @@ -128625,16 +129111,16 @@ qbZ jWh jWh jWh -cDW -fbx -cXq -vuv -vJy -cxo -hkm -hlw -pmk -qMu +fQl +aPO +nGZ +kNq +xQe +jei +lVR +pHD +dhp +fVe aag aag aag @@ -128669,9 +129155,9 @@ aaa aaa aaa aaa -wVb -wzg -eFH +emA +eTD +ikT aLT bBg vPv @@ -128741,9 +129227,9 @@ mAV hzu hcI bSJ -jea -cAH -vTK +rqz +xhO +tcO aaa aaa aaa @@ -128779,17 +129265,17 @@ aag aag aag aag -pVZ -yeP -psm -jdQ -bMY -hfy -psm -eKD -nZF -xxT -psm +fTl +lmq +taw +mDz +pIf +uwf +taw +gCQ +rEs +bhZ +taw uiG rTZ tfb @@ -128828,16 +129314,16 @@ cKL jbH rJh jWh -tyz -eZQ -fTi -vuv -tzi -cxo -oRj -cVs -cxo -qMu +rJY +dPl +qQG +kNq +cfm +jei +oSR +grd +jei +fVe aag aag aag @@ -128872,9 +129358,9 @@ aaa aaa aaa aaa -wVb -jMi -eFH +emA +efP +ikT aLT cjc cjc @@ -128944,9 +129430,9 @@ yfm fXN fXN bSJ -vuR -cAH -vTK +gEh +xhO +tcO aaa aaa aaa @@ -128982,17 +129468,17 @@ aag aag aag aag -pVZ -xlX -psm -psm -psm -psm -psm -psm -jFX -psm -psm +fTl +oxy +taw +taw +taw +taw +taw +taw +mRI +taw +taw bNM wkX jhx @@ -129031,16 +129517,16 @@ soP eoG uIv jWh -vuv -sdw -vuv -vuv -vuv -hlI -qiI -ldN -gHg -qMu +kNq +qDB +kNq +kNq +kNq +fJp +ekz +gGb +oUx +fVe aag aag aag @@ -129075,9 +129561,9 @@ aaa aaa aaa aaa -wVb -pQG -eFH +emA +uzv +ikT aLT cjc cjc @@ -129147,9 +129633,9 @@ yfm fXN fXN bSJ -cAH -ydx -vTK +xhO +dFL +tcO aaa aaa aaa @@ -129185,13 +129671,13 @@ aag aag aag aag -pVZ -ano -meS -cbA -aRG -bsF -psm +fTl +wTn +mOE +sWp +nUm +moL +taw mDJ owg xUA @@ -129234,16 +129720,16 @@ ovi iat eim jWh -vuv -qFW -vuv -vuv -kDi -vSH -tly -hlw -cxo -qMu +kNq +spd +kNq +kNq +dVH +cAz +bVr +pHD +jei +fVe aag aag aag @@ -129278,9 +129764,9 @@ aaa aaa aaa aaa -wVb -fhA -eFH +emA +hfO +ikT aLT iPS vAE @@ -129350,9 +129836,9 @@ gEo scy kPJ bSJ -vuR -ebO -vTK +gEh +pFr +tcO aaa aaa aaa @@ -129388,13 +129874,13 @@ aag aag aag aag -pVZ -xlX -xlX -ePs -xlX -xlX -hSu +fTl +oxy +oxy +tIN +oxy +oxy +kiR owg owg uKV @@ -129437,16 +129923,16 @@ thV uWV uIv oSx -vuv -gHg -vuv -vuv -hlI -qiI -nho -cxo -trW -qMu +kNq +oUx +kNq +kNq +fJp +ekz +hqu +jei +qDS +fVe aag aag aag @@ -129481,9 +129967,9 @@ aaa aaa aaa aaa -wVb -vjx -eFH +emA +jkN +ikT aLT aLT aLT @@ -129553,9 +130039,9 @@ bSJ bSJ bSJ bSJ -vuR -tAR -vTK +gEh +kMR +tcO aaa aaa aaa @@ -129591,13 +130077,13 @@ aah aag aag aag -pVZ -alT -iHF -voA -aRV -aRV -psm +fTl +pWw +hbE +cbc +qIa +qIa +taw ptK afX ptK @@ -129640,16 +130126,16 @@ upR fCL uIv vVw -lwi -cxo -iEs -cxo -fbx -fbx -fbx -kfX -qVU -qMu +iSV +jei +oYr +jei +aPO +aPO +aPO +gtQ +wiO +fVe aag aag aag @@ -129684,14 +130170,14 @@ aaa aaa aaa aaa -wVb -fTR -hlz -hlz -hlz -hlz -fTR -hlz +emA +hyb +jEM +jEM +jEM +jEM +hyb +jEM aLT cjc cjc @@ -129732,8 +130218,8 @@ lJu xYP hLI laU -drt -rZF +bJz +rrV bJz bJC oXb @@ -129751,14 +130237,14 @@ kPJ fXN fXN bSJ -rHs -ngs -vuR -cAH -cAH -cAH -fKl -vTK +enY +srl +gEh +xhO +xhO +xhO +jay +tcO aaa aaa aaa @@ -129794,13 +130280,13 @@ aaa aad aag aag -pVZ -anu -auD -tIU -nEG -jXY -psm +fTl +prX +oYs +odG +biC +qlu +taw bKm hsr mDJ @@ -129843,16 +130329,16 @@ pZK fCL uIv lFA -vuv -cxo -vuv -vuv -cxo -cxo -vqO -sXK -tbD -qMu +kNq +jei +kNq +kNq +jei +jei +gYU +oGi +dVR +fVe aag aag ajZ @@ -129887,14 +130373,14 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -hlz -eFH -hlz +emA +emA +emA +emA +emA +jEM +ikT +jEM aLT iPS vAE @@ -129933,11 +130419,11 @@ xYP jmK hcw cgE -hLI +yht blq -bIT +buJ jHe -bIS +buH bJC kIP cfo @@ -129954,14 +130440,14 @@ oer vSW scy bSJ -tSr -pUY -lGr -vTK -vTK -vTK -vTK -vTK +mCE +qid +hCq +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -129997,13 +130483,13 @@ aaa aad aag aag -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ +fTl +fTl +fTl +fTl +fTl +fTl +fTl qJx hsr mDJ @@ -130046,16 +130532,16 @@ ovi fCL lYk bYn -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu +fVe +fVe +fVe +fVe +fVe +fVe +fVe +fVe +fVe +fVe aag aag ajZ @@ -130094,10 +130580,10 @@ aaa aaa aaa aaa -wVb -rVo -eFH -hlz +emA +oPF +ikT +jEM aLT meY meY @@ -130136,11 +130622,11 @@ wLm wLm lJu xYP -hLI +wbV laU -eUz -iEb -bIT +buH +hop +buH bJC bJC vLA @@ -130157,10 +130643,10 @@ oer oer oer oer -ybr -vuR -ebO -vTK +uVp +gEh +pFr +tcO aaa aaa aaa @@ -130297,18 +130783,18 @@ aaa aaa aaa aaa -wVb -cbZ -eFH -eFH -eFH -eFH -eFH -eFH -eFH -hlz -eFH -hlz +emA +wtn +ikT +ikT +ikT +ikT +ikT +ikT +ikT +jEM +ikT +jEM aQL qZX qZX @@ -130342,8 +130828,8 @@ xYP jew laU buH -iEb -bIT +hop +buH bJC lbf cfo @@ -130352,18 +130838,18 @@ lbf lbf lbf bJC -vuR -oyG -vuR -cAH -rDi -pXn -cAH -vuR -vuR -vuR -vuR -vTK +gEh +cmN +gEh +xhO +dzX +foS +xhO +gEh +gEh +gEh +gEh +tcO aaa aaa aaa @@ -130500,18 +130986,18 @@ aaa aaa aaa aaa -wVb -bbv -hJb -hlz -hlz -hlz -hlz -wZH -hlz -hlz -hlz -hlz +emA +pGj +uoj +jEM +jEM +jEM +jEM +fBo +jEM +jEM +jEM +jEM aQL qDq qDq @@ -130545,8 +131031,8 @@ huK jeQ bbs buH -iEb -bIT +hop +buH xSw oXb cfo @@ -130555,18 +131041,18 @@ oXb oXb oXb bJC -vuR -cAH -vuR -cAH -vuR -dcS -cAH -vuR -cAH -cAH -xZK -vTK +gEh +xhO +gEh +xhO +gEh +hWH +xhO +gEh +xhO +xhO +rhD +tcO aaa aaa aaa @@ -130703,18 +131189,18 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -eFH -rdK +emA +emA +emA +emA +emA +emA +emA +emA +emA +emA +ikT +oBr aQL qDq qDq @@ -130748,8 +131234,8 @@ fJO fJO bbs bJz -cbS -bHW +rrV +bJz xSw ejo ejo @@ -130758,18 +131244,18 @@ oXb oXb oXb bJC -cAH -vuR -vuR -vTK -vTK -hTk -vTK -vTK -vTK -vTK -vTK -vTK +xhO +gEh +gEh +tcO +tcO +ucy +tcO +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -130915,9 +131401,9 @@ aaa aaa aaa aaa -wVb -iDm -fTR +emA +qGC +hyb aQL ksp ksp @@ -130951,8 +131437,8 @@ buH buH cbD buH -iEb -bIT +hop +buH xSw oXb oXb @@ -130961,10 +131447,10 @@ kIP qer kIP bJC -cAH -pFP -ebO -vTK +xhO +wYd +pFr +tcO aaa aaa aaa @@ -131118,9 +131604,9 @@ aaa aaa aaa aaa -wVb -eFH -hlz +emA +ikT +jEM aQL aQL aQL @@ -131131,31 +131617,31 @@ ksp aQL aLG aZl -tBF -sOm -tBF -aQt +tzf +mRS +tzf +tBL bhn -aQt -aQt -aQt +tBL +tBL +tBL crW -aQt -aQt +tBL +tBL mji -buI -buI +ftx +ftx bUz -buI -buI -buI +ftx +ftx +ftx bCE -buI -bFu -cbE -bFu +ftx +hvp +rUs +hvp bIl -bIX +bIR bJC kIP qer @@ -131164,10 +131650,10 @@ bJC bJC bJC bJC -vuR -vuR -vuR -vTK +gEh +gEh +gEh +tcO aaa aaa aaa @@ -131321,56 +131807,56 @@ aaa aaa aaa aaa -wVb -eFH -hlz -hlz -gjN -hlz -rdK -rdK -rdK -rdK -rdK +emA +ikT +jEM +jEM +hYf +jEM +oBr +oBr +oBr +oBr +oBr tfl -aZm -aWR -buU -aWR -bjb -bal -bjb -bjb -aWR -bNX -aWR -aWR +aLG +aLG +bBh +aLG +aNO +sLE +aNO +aNO +aLG +beB +aLG +aLG bsV -buJ -buJ -bUG -buJ -bzK -bzK -bCF -bzK -buJ -cdZ -buJ -buJ +buH +buH +bJz +buH +bHa +bHa +hop +bHa +buH +cbD +buH +buH jMb bJC bJC bJC bJC bJC -cAH -cAH -cAH -vuR -cAH -wZT -vTK +xhO +xhO +xhO +gEh +xhO +xfq +tcO aaa aaa aaa @@ -131524,21 +132010,21 @@ aaa aaa aaa aaa -wVb -jmg -hlz -eFH -eFH -hlz -hlz -gwF -eFH -eFH -rdK -rdK -aZn -rdK -rdK +emA +kAv +jEM +ikT +ikT +jEM +jEM +gCu +ikT +ikT +oBr +oBr +qPn +oBr +oBr bCW bEH bHt @@ -131558,22 +132044,22 @@ bYE bZz cav bBa -haq -haq -lAA -haq -haq -cAH -cAH -cAH -cAH -cAH -cAH -cAH -cAH -cAH -ngs -vTK +ljv +ljv +sUi +ljv +ljv +xhO +xhO +xhO +xhO +xhO +xhO +xhO +xhO +xhO +srl +tcO aaa aaa aaa @@ -131727,22 +132213,22 @@ aaa aaa aaa aaa -wVb -epA -wDm -hlz -hlz -hlz -hlz -gwF -hlz -hlz -rdK -aYc -hlz -hlz -rdK -rdK +emA +qFS +pPG +jEM +jEM +jEM +jEM +gCu +jEM +jEM +oBr +sRM +jEM +jEM +oBr +oBr sqg rPQ sqg @@ -131760,23 +132246,23 @@ oJk sqg mgu sqg -haq -haq -cAH -vuR -cAH -cAH -vuR -vuR -vuR -cAH -cAH -cAH -cAH -vuR -sIV -hBU -vTK +ljv +ljv +xhO +gEh +xhO +xhO +gEh +gEh +gEh +xhO +xhO +xhO +xhO +gEh +aEr +keO +tcO aaa aaa aaa @@ -131930,22 +132416,22 @@ aaa aaa aaa aaa -wVb -pIk -bNT -wul -eFH -eFH -eFH -ybS -wul -hlz -hlz -hlz -hlz -eFH -eFH -rdK +emA +twp +iyE +ecb +ikT +ikT +ikT +ctp +ecb +jEM +jEM +jEM +jEM +ikT +ikT +oBr fcS gdJ oyR @@ -131963,23 +132449,23 @@ oJk ppn nAY cjt -haq -pFM -hzV -vuR -vuR -vuR -cAH -fXd -cAH -vuR -cAH -vuR -vuR -rgA -brX -mfI -vTK +ljv +ceY +gIm +gEh +gEh +gEh +xhO +wra +xhO +gEh +xhO +gEh +gEh +sOD +eMx +xgr +tcO aaa aaa aaa @@ -132133,22 +132619,22 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -wVb -wVb +emA +emA +emA +emA +emA +emA +emA vgw sqg sqg sqg mpP sqg -rdK -iDm -rdK +oBr +qGC +oBr fcS gdJ oyR @@ -132166,23 +132652,23 @@ oJk pkA nAY cjt -haq -vuR -haq +ljv +gEh +ljv sqg mpP aep aep aep dKL -vTK -vTK -vTK -vTK -vTK -vTK -vTK -vTK +tcO +tcO +tcO +tcO +tcO +tcO +tcO +tcO aaa aaa aaa @@ -132350,8 +132836,8 @@ sqg rwB lKM sqg -vsV -rdK +nSq +oBr fcS gdJ cjt @@ -132369,8 +132855,8 @@ pRZ fcS nAY jOE -haq -mHR +ljv +mPc sqg qEL vmE @@ -132452,9 +132938,9 @@ ucp cIW ptK ptK -psm +pji dKm -psm +pji aHe jlT exi @@ -132470,9 +132956,9 @@ eky ins wRP aHe -vuv -vuv -vuv +eZm +eZm +eZm jWh jWh sWC @@ -132553,8 +133039,8 @@ sqg eKy wQA sqg -hlz -rdK +jEM +oBr uYn jaM oXM @@ -132572,8 +133058,8 @@ mkP muQ ojh nxx -haq -cAH +ljv +xhO sqg gEC skC @@ -132655,9 +133141,9 @@ gPc trB exy ptK -psm -psm -psm +fLl +fLl +fLl eky eky aNl @@ -132673,9 +133159,9 @@ eky aNl eky rqj -vuv -nfS -emx +eZm +jYm +aZI jWh duz hXG @@ -132858,9 +133344,9 @@ eet fcP pDh ptK -xlX -xlX -hSu +aqZ +aqZ +ptQ aMT aMT dPm @@ -132876,9 +133362,9 @@ okg dPm aMT aMT -iEs -cxo -cxo +hbp +mwP +mwP jWh axR mIP @@ -133061,9 +133547,9 @@ wxj lht rYv ptK -dmQ -jBB -psm +haO +pKB +fLl svf arV wZX @@ -133079,9 +133565,9 @@ eky wZX arV vUh -vuv -xct -cxo +eZm +xUy +mwP jWh vpv pgw @@ -133264,9 +133750,9 @@ ptK afX ptK ptK -dmQ -psm -psm +haO +fLl +fLl lDn arV wZX @@ -133282,9 +133768,9 @@ eky wZX arV wkA -vuv -vuv -cxo +eZm +eZm +mwP jWh jWh kLc @@ -133459,16 +133945,16 @@ bdH uMc bNM ofK -psm -kSd -dmQ -tZm -dmQ -xlX -hWU -dmQ -aeq -psm +fLl +uxl +haO +ebf +haO +aqZ +tot +haO +qqS +fLl xrq vVu arV @@ -133486,16 +133972,16 @@ wZX arV oIt xrq -vuv -ahb -cxo -nJy -boC -cxo -iwh -kfv -vGr -vuv +eZm +qHG +mwP +xQW +vJR +mwP +hkz +ckj +oaw +eZm lbB uIv pql @@ -133662,16 +134148,16 @@ bdH uMc bNM ofK -psm -kSd -dmQ -nwu -dmQ -xlX -rwb -dmQ -jXY -psm +fLl +uxl +haO +uLG +haO +aqZ +pbo +haO +xLn +fLl vlk mKy aMT @@ -133689,16 +134175,16 @@ sQO aMT wNS vlk -vuv -woM -nqD -cxo -boC -cxo -qMf -wUN -jgC -vuv +eZm +oHg +uiK +mwP +vJR +mwP +jrB +eoK +xTG +eZm lbB uIv pql @@ -133771,8 +134257,8 @@ aWZ qAB gEC sqg -rEb -qXR +aIh +eTb kkW iwf uFg @@ -133790,8 +134276,8 @@ vXo gWu xMl lft -qXR -rEb +eTb +aIh sqg siN cjt @@ -133865,17 +134351,17 @@ bdH uMc bNM rtd -hSu -xlX -xlX -xlX -xlX -xlX -aiE -dmQ -atD -psm -psm +ptQ +aqZ +aqZ +aqZ +aqZ +aqZ +leM +haO +iYm +fLl +fLl vjd aRp jBX @@ -133891,17 +134377,17 @@ tKf jBX aRp quy -vuv -vuv -myC -crP -cxo -fbx -fbx -fbx -fbx -fbx -iEs +eZm +eZm +bjt +eIN +mwP +ksw +ksw +ksw +ksw +ksw +hbp uWV uIv pql @@ -133974,14 +134460,14 @@ ggQ pYS ivS sqg -jqT -qXR +ppM +eTb hbs vZU elx jnI oJk -eIT +xef dPQ ams eni @@ -133993,8 +134479,8 @@ nYn elx mDL fSF -qXR -jqT +eTb +ppM sqg lvh iks @@ -134068,17 +134554,17 @@ bdH cuC htb pfc -psm -psm -psm -psm -pPz -xlX -xlX -xlX -xlX -xlX -hSu +fLl +fLl +fLl +fLl +rht +aqZ +aqZ +aqZ +aqZ +aqZ +ptQ qYG atM bGc @@ -134094,17 +134580,17 @@ atM bGc atK qYG -iEs -fbx -fbx -jaj -fbx -boC -hPg -vuv -vuv -vuv -vuv +hbp +ksw +ksw +rHB +ksw +vJR +rPq +eZm +eZm +eZm +eZm jAJ lAu bYn @@ -134177,8 +134663,8 @@ aep mkL gEC sqg -jqT -qXR +ppM +eTb hsy hsy baJ @@ -134196,8 +134682,8 @@ foC kph hsy hsy -qXR -oGF +eTb +eUe sqg wWl trh @@ -134274,14 +134760,14 @@ tgK tfb wuT lMx -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ -pVZ +gJF +gJF +gJF +gJF +gJF +gJF +gJF +gJF aPw avu mhG @@ -134297,14 +134783,14 @@ dxK dPC aMU aPw -qMu -qMu -qMu -qMu -qMu -qMu -qMu -qMu +wxy +wxy +wxy +wxy +wxy +wxy +wxy +wxy jFY qKY jHL @@ -134380,8 +134866,8 @@ wpS fZA fEe sqg -jqT -jqT +ppM +ppM hsy shL uXk @@ -134399,8 +134885,8 @@ tos uXk tkn hsy -rEb -jqT +aIh +ppM sqg fEe nqW @@ -134583,8 +135069,8 @@ vgw vgw vgw vgw -rEb -rEb +aIh +aIh hsy wed uXk @@ -134602,8 +135088,8 @@ tos uXk wed hsy -pJt -hAY +qBS +lib vgw vgw vgw @@ -134785,9 +135271,9 @@ aah aag aag aag -gXZ -gBM -jqT +nic +tmQ +ppM hsy npn bVN @@ -134805,9 +135291,9 @@ uqh iAE gNG hsy -nNC -iuA -gXZ +iWa +fZR +nic aag aag aag @@ -134988,9 +135474,9 @@ bdH aad aag aag -gXZ -rEb -rEb +nic +aIh +aIh hsy cGe uXk @@ -135008,9 +135494,9 @@ xNf uXk fbH hsy -rEb -rEb -gXZ +aIh +aIh +nic aag aag ajZ @@ -135191,9 +135677,9 @@ bdH aad aag aag -gXZ -jqT -jqT +nic +ppM +ppM hsy ebt nCn @@ -135211,9 +135697,9 @@ uqh pJr fbH hsy -rEb -rEb -gXZ +aIh +aIh +nic aag aag ajZ @@ -135394,9 +135880,9 @@ bdH aad aag aag -gXZ -rEb -jqT +nic +aIh +ppM hsy hsy vVX @@ -135414,9 +135900,9 @@ tos fbH hsy hsy -jqT -oGF -gXZ +ppM +eUe +nic aag aag ajZ @@ -135597,10 +136083,10 @@ bdH aad aag aag -gXZ -rEb -rEb -rEb +nic +aIh +aIh +aIh hsy hwd mlF @@ -135616,10 +136102,10 @@ hsy beL hwd hsy -cGI -rEb -rEb -gXZ +cWb +aIh +aIh +nic aag aag ajZ @@ -135800,10 +136286,10 @@ bdH aad aag aag -gXZ -jqT -jqT -jqT +nic +ppM +ppM +ppM hsy ylh opH @@ -135819,10 +136305,10 @@ hsy iEw ylh hsy -xgZ -jqT -xgZ -gXZ +dDT +ppM +dDT +nic aag aag ajZ @@ -136003,10 +136489,10 @@ bdH aad aag aag -gXZ -gXZ -nTi -rEb +nic +nic +wsw +aIh hsy ylh mlF @@ -136022,10 +136508,10 @@ hsy tos ylh hsy -pJt -uTa -gXZ -gXZ +qBS +piJ +nic +nic aag aag ajZ @@ -136207,9 +136693,9 @@ aad aag aag aag -gXZ -pJt -hAY +nic +qBS +lib hsy hsy suJ @@ -136225,9 +136711,9 @@ hsy wdv hsy hsy -fiI -jqT -gXZ +yjE +ppM +nic aag aag aag @@ -136410,9 +136896,9 @@ aad aag aag aag -gXZ -rEb -pRY +nic +aIh +vsi hsy uiC sIr @@ -136428,9 +136914,9 @@ rlc hfb hUk hsy -jqT -iuA -gXZ +ppM +fZR +nic aag aag aag @@ -136613,9 +137099,9 @@ aad aag aag aag -gXZ -jqT -jqT +nic +ppM +ppM hsy thc sIr @@ -136631,9 +137117,9 @@ pAm sIr fZl hsy -nYC -rEb -gXZ +mxV +aIh +nic aag aag aag @@ -136816,9 +137302,9 @@ aad aag aag aag -gXZ -rEb -rEb +nic +aIh +aIh hsy tIe uAK @@ -136834,9 +137320,9 @@ bVv nJa jPd hsy -jqT -htP -gXZ +ppM +eeC +nic aag aag aag @@ -137019,9 +137505,9 @@ aad aag aag aag -gXZ -jqT -jqT +nic +ppM +ppM hsy dPH sov @@ -137037,9 +137523,9 @@ pAm fZl oex hsy -rEb -rEb -gXZ +aIh +aIh +nic aag aag aag @@ -137222,9 +137708,9 @@ aad aag aag aag -gXZ -rEb -rEb +nic +aIh +aIh hsy rBv sov @@ -137240,9 +137726,9 @@ pAm fZl snt hsy -jqT -jqT -gXZ +ppM +ppM +nic aag aag aag @@ -137425,9 +137911,9 @@ aad aag aag aag -gXZ -jqT -jqT +nic +ppM +ppM hsy fqW qYq @@ -137443,9 +137929,9 @@ mQn wQD fqW hsy -rEb -rEb -gXZ +aIh +aIh +nic aag aag aag @@ -137628,9 +138114,9 @@ aad aag aag aag -gXZ -rEb -jqT +nic +aIh +ppM hsy hsy hsy @@ -137646,9 +138132,9 @@ hsy hsy hsy hsy -jqT -jqT -gXZ +ppM +ppM +nic aag aag aag @@ -137831,11 +138317,11 @@ aad aag aag aag -gXZ -rEb -jqT -lhW -lAU +nic +aIh +ppM +csd +dDJ hsy haz fQn @@ -137847,11 +138333,11 @@ pzM mtZ haz hsy -lAU -qqW -rEb -rEb -gXZ +dDJ +rXH +aIh +aIh +nic aag aag aag @@ -138034,11 +138520,11 @@ aad aag aag aag -gXZ -rEb -rEb -rEb -rEb +nic +aIh +aIh +aIh +aIh hsy haz pLt @@ -138050,11 +138536,11 @@ mZL lOX haz hsy -gfs -rEb -rEb -rEb -gXZ +fpi +aIh +aIh +aIh +nic aag aag aag @@ -138237,11 +138723,11 @@ aad aag aag aag -gXZ -gXZ -fBd -uTa -uTa +nic +nic +mem +piJ +piJ hsy mkI aPS @@ -138253,11 +138739,11 @@ nop aPS ddf hsy -juF -jqT -iuA -gXZ -gXZ +atS +ppM +fZR +nic +nic aag aag aag @@ -138441,10 +138927,10 @@ aag aag aag aag -gXZ -rEb -jqT -fYN +nic +aIh +ppM +sER hsy hsy hsy @@ -138456,10 +138942,10 @@ hsy hsy hsy hsy -rEb -rEb -rEb -gXZ +aIh +aIh +aIh +nic aag aag aag @@ -138644,25 +139130,25 @@ aag aag aag aag -gXZ -rEb -jqT -rEb -jqT -hWS -rEb -hJN -jqT -jqT -jqT -hJN -rEb -cyy -jqT -jqT -jqT -rEb -gXZ +nic +aIh +ppM +aIh +ppM +puT +aIh +xrg +ppM +ppM +ppM +xrg +aIh +erE +ppM +ppM +ppM +aIh +nic aag aag aag diff --git a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm index 917759783a2a..b593cfbd943a 100644 --- a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm +++ b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm @@ -1459,6 +1459,9 @@ pixel_x = 3; pixel_y = 3 }, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, /turf/open/floor{ dir = 5; icon_state = "whitegreen" @@ -1927,10 +1930,7 @@ }, /area/whiskey_outpost/inside/cic) "gX" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, -/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, -/obj/effect/landmark/wo_supplies/storage/belts/lifesaver, +/obj/structure/machinery/gel_refiller, /turf/open/floor{ dir = 4; icon_state = "whitegreen" diff --git a/maps/prison_station_fop.json b/maps/prison_station_fop.json index f2c22dbe4bb8..69469ea2fd03 100644 --- a/maps/prison_station_fop.json +++ b/maps/prison_station_fop.json @@ -3,14 +3,14 @@ "map_path": "map_files/FOP_v2_Cellblocks", "map_file": "Prison_Station_FOP.dmm", "survivor_types": [ - "/datum/equipment_preset/survivor/scientist/florina", - "/datum/equipment_preset/survivor/doctor/florina", + "/datum/equipment_preset/survivor/scientist/fiorina", + "/datum/equipment_preset/survivor/doctor/fiorina", "/datum/equipment_preset/survivor/interstellar_human_rights_observer", - "/datum/equipment_preset/survivor/security/florina", + "/datum/equipment_preset/survivor/security/fiorina", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/prisoner", "/datum/equipment_preset/survivor/gangleader", - "/datum/equipment_preset/survivor/engineer/florina", + "/datum/equipment_preset/survivor/engineer/fiorina", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" ], diff --git a/maps/shuttles/dropship_alamo.dmm b/maps/shuttles/dropship_alamo.dmm index 1e78347c1721..d23036afdea3 100644 --- a/maps/shuttles/dropship_alamo.dmm +++ b/maps/shuttles/dropship_alamo.dmm @@ -416,7 +416,7 @@ }, /area/shuttle/drop1/sulaco) "Kk" = ( -/obj/effect/attach_point/crew_weapon/dropship1{ +/obj/effect/attach_point/crew_weapon/dropship1/floor{ attach_id = 7 }, /turf/open/shuttle/dropship{ @@ -450,7 +450,7 @@ }, /area/shuttle/drop1/sulaco) "Nv" = ( -/obj/effect/attach_point/crew_weapon/dropship1{ +/obj/effect/attach_point/crew_weapon/dropship1/floor{ attach_id = 8 }, /turf/open/shuttle/dropship{ @@ -507,7 +507,7 @@ }, /area/shuttle/drop1/sulaco) "PV" = ( -/obj/effect/attach_point/crew_weapon/dropship1{ +/obj/effect/attach_point/crew_weapon/dropship1/floor{ attach_id = 9 }, /turf/open/shuttle/dropship{ diff --git a/maps/shuttles/dropship_normandy.dmm b/maps/shuttles/dropship_normandy.dmm index 5a733f6a9e9b..e64fbe62372d 100644 --- a/maps/shuttles/dropship_normandy.dmm +++ b/maps/shuttles/dropship_normandy.dmm @@ -96,7 +96,7 @@ }, /area/shuttle/drop2/sulaco) "hn" = ( -/obj/effect/attach_point/crew_weapon/dropship2{ +/obj/effect/attach_point/crew_weapon/dropship2/floor{ attach_id = 8 }, /turf/open/shuttle/dropship{ @@ -326,7 +326,7 @@ }, /area/shuttle/drop2/sulaco) "Bg" = ( -/obj/effect/attach_point/crew_weapon/dropship2{ +/obj/effect/attach_point/crew_weapon/dropship2/floor{ attach_id = 7 }, /turf/open/shuttle/dropship{ @@ -478,7 +478,7 @@ /turf/template_noop, /area/shuttle/drop2/sulaco) "MA" = ( -/obj/effect/attach_point/crew_weapon/dropship2{ +/obj/effect/attach_point/crew_weapon/dropship2/floor{ attach_id = 9 }, /turf/open/shuttle/dropship{ diff --git a/maps/templates/Chinook.dmm b/maps/templates/Chinook.dmm index 17be7bd9b968..077729447e29 100644 --- a/maps/templates/Chinook.dmm +++ b/maps/templates/Chinook.dmm @@ -660,10 +660,6 @@ /area/adminlevel/chinook/offices) "cr" = ( /obj/structure/surface/table/reinforced/black, -/obj/item/book/manual/robotics_cyborgs{ - pixel_x = -8; - pixel_y = 7 - }, /obj/item/storage/fancy/cigar, /turf/open/floor/almayer, /area/adminlevel/chinook/offices) diff --git a/nano/images/weapons/88m4.png b/nano/images/weapons/88m4.png deleted file mode 100644 index 77faa65720af..000000000000 Binary files a/nano/images/weapons/88m4.png and /dev/null differ diff --git a/nano/images/weapons/aamateba.png b/nano/images/weapons/aamateba.png deleted file mode 100644 index 30a5c1c72c68..000000000000 Binary files a/nano/images/weapons/aamateba.png and /dev/null differ diff --git a/nano/images/weapons/amateba.png b/nano/images/weapons/amateba.png deleted file mode 100644 index 6d411d2ad7fc..000000000000 Binary files a/nano/images/weapons/amateba.png and /dev/null differ diff --git a/nano/images/weapons/auto.png b/nano/images/weapons/auto.png deleted file mode 100644 index 7efc6ff1c892..000000000000 Binary files a/nano/images/weapons/auto.png and /dev/null differ diff --git a/nano/images/weapons/auto9.png b/nano/images/weapons/auto9.png deleted file mode 100644 index 8fbc101f2f72..000000000000 Binary files a/nano/images/weapons/auto9.png and /dev/null differ diff --git a/nano/images/weapons/b92fs.png b/nano/images/weapons/b92fs.png deleted file mode 100644 index 2788124dfb8f..000000000000 Binary files a/nano/images/weapons/b92fs.png and /dev/null differ diff --git a/nano/images/weapons/burst.png b/nano/images/weapons/burst.png deleted file mode 100644 index 669bd676ebb0..000000000000 Binary files a/nano/images/weapons/burst.png and /dev/null differ diff --git a/nano/images/weapons/c70.png b/nano/images/weapons/c70.png deleted file mode 100644 index b7e2ed731ba1..000000000000 Binary files a/nano/images/weapons/c70.png and /dev/null differ diff --git a/nano/images/weapons/c_deagle.png b/nano/images/weapons/c_deagle.png deleted file mode 100644 index c2a5c991acf8..000000000000 Binary files a/nano/images/weapons/c_deagle.png and /dev/null differ diff --git a/nano/images/weapons/cmateba.png b/nano/images/weapons/cmateba.png deleted file mode 100644 index f949d4b54731..000000000000 Binary files a/nano/images/weapons/cmateba.png and /dev/null differ diff --git a/nano/images/weapons/cshotgun.png b/nano/images/weapons/cshotgun.png deleted file mode 100644 index 9820f5854679..000000000000 Binary files a/nano/images/weapons/cshotgun.png and /dev/null differ diff --git a/nano/images/weapons/dartgun.png b/nano/images/weapons/dartgun.png deleted file mode 100644 index 218dc742dc9b..000000000000 Binary files a/nano/images/weapons/dartgun.png and /dev/null differ diff --git a/nano/images/weapons/deagle.png b/nano/images/weapons/deagle.png deleted file mode 100644 index 059a730d7efd..000000000000 Binary files a/nano/images/weapons/deagle.png and /dev/null differ diff --git a/nano/images/weapons/disabled_automatic.png b/nano/images/weapons/disabled_automatic.png deleted file mode 100644 index 94da079d8049..000000000000 Binary files a/nano/images/weapons/disabled_automatic.png and /dev/null differ diff --git a/nano/images/weapons/disabled_burst.png b/nano/images/weapons/disabled_burst.png deleted file mode 100644 index 71b88bcaf945..000000000000 Binary files a/nano/images/weapons/disabled_burst.png and /dev/null differ diff --git a/nano/images/weapons/disabled_single.png b/nano/images/weapons/disabled_single.png deleted file mode 100644 index bf2cef4b1507..000000000000 Binary files a/nano/images/weapons/disabled_single.png and /dev/null differ diff --git a/nano/images/weapons/dshotgun.png b/nano/images/weapons/dshotgun.png deleted file mode 100644 index cd795982816b..000000000000 Binary files a/nano/images/weapons/dshotgun.png and /dev/null differ diff --git a/nano/images/weapons/fp9000.png b/nano/images/weapons/fp9000.png deleted file mode 100644 index b9f971eb0773..000000000000 Binary files a/nano/images/weapons/fp9000.png and /dev/null differ diff --git a/nano/images/weapons/fp9000_pmc.png b/nano/images/weapons/fp9000_pmc.png deleted file mode 100644 index b9f971eb0773..000000000000 Binary files a/nano/images/weapons/fp9000_pmc.png and /dev/null differ diff --git a/nano/images/weapons/g_deagle.png b/nano/images/weapons/g_deagle.png deleted file mode 100644 index c2a5c991acf8..000000000000 Binary files a/nano/images/weapons/g_deagle.png and /dev/null differ diff --git a/nano/images/weapons/hg3712.png b/nano/images/weapons/hg3712.png deleted file mode 100644 index f7f32190c468..000000000000 Binary files a/nano/images/weapons/hg3712.png and /dev/null differ diff --git a/nano/images/weapons/highpower.png b/nano/images/weapons/highpower.png deleted file mode 100644 index a7d25c44803b..000000000000 Binary files a/nano/images/weapons/highpower.png and /dev/null differ diff --git a/nano/images/weapons/holdout.png b/nano/images/weapons/holdout.png deleted file mode 100644 index 1d6f26fad25f..000000000000 Binary files a/nano/images/weapons/holdout.png and /dev/null differ diff --git a/nano/images/weapons/hunting.png b/nano/images/weapons/hunting.png deleted file mode 100644 index 5d9613117f07..000000000000 Binary files a/nano/images/weapons/hunting.png and /dev/null differ diff --git a/nano/images/weapons/kt42.png b/nano/images/weapons/kt42.png deleted file mode 100644 index ecf0ee41a9b7..000000000000 Binary files a/nano/images/weapons/kt42.png and /dev/null differ diff --git a/nano/images/weapons/l42mk1.png b/nano/images/weapons/l42mk1.png deleted file mode 100644 index b5efcc14d331..000000000000 Binary files a/nano/images/weapons/l42mk1.png and /dev/null differ diff --git a/nano/images/weapons/m16.png b/nano/images/weapons/m16.png deleted file mode 100644 index 2287f7319696..000000000000 Binary files a/nano/images/weapons/m16.png and /dev/null differ diff --git a/nano/images/weapons/m240.png b/nano/images/weapons/m240.png deleted file mode 100644 index 72eb477c9efa..000000000000 Binary files a/nano/images/weapons/m240.png and /dev/null differ diff --git a/nano/images/weapons/m240t.png b/nano/images/weapons/m240t.png deleted file mode 100644 index 619551d690e8..000000000000 Binary files a/nano/images/weapons/m240t.png and /dev/null differ diff --git a/nano/images/weapons/m37-17.png b/nano/images/weapons/m37-17.png deleted file mode 100644 index 7d53cbd76108..000000000000 Binary files a/nano/images/weapons/m37-17.png and /dev/null differ diff --git a/nano/images/weapons/m37.png b/nano/images/weapons/m37.png deleted file mode 100644 index f888adaeb6be..000000000000 Binary files a/nano/images/weapons/m37.png and /dev/null differ diff --git a/nano/images/weapons/m39.png b/nano/images/weapons/m39.png deleted file mode 100644 index f6fbb0a48961..000000000000 Binary files a/nano/images/weapons/m39.png and /dev/null differ diff --git a/nano/images/weapons/m41a.png b/nano/images/weapons/m41a.png deleted file mode 100644 index 9476e0d1f40f..000000000000 Binary files a/nano/images/weapons/m41a.png and /dev/null differ diff --git a/nano/images/weapons/m41a2.png b/nano/images/weapons/m41a2.png deleted file mode 100644 index 4179cb37f5c3..000000000000 Binary files a/nano/images/weapons/m41a2.png and /dev/null differ diff --git a/nano/images/weapons/m41ae2.png b/nano/images/weapons/m41ae2.png deleted file mode 100644 index 4a5232fd6638..000000000000 Binary files a/nano/images/weapons/m41ae2.png and /dev/null differ diff --git a/nano/images/weapons/m41amk1.png b/nano/images/weapons/m41amk1.png deleted file mode 100644 index 3f44c62b0fad..000000000000 Binary files a/nano/images/weapons/m41amk1.png and /dev/null differ diff --git a/nano/images/weapons/m41b.png b/nano/images/weapons/m41b.png deleted file mode 100644 index 1d63443f25fa..000000000000 Binary files a/nano/images/weapons/m41b.png and /dev/null differ diff --git a/nano/images/weapons/m42a.png b/nano/images/weapons/m42a.png deleted file mode 100644 index f0d07328c122..000000000000 Binary files a/nano/images/weapons/m42a.png and /dev/null differ diff --git a/nano/images/weapons/m42c.png b/nano/images/weapons/m42c.png deleted file mode 100644 index 47d53b86ced1..000000000000 Binary files a/nano/images/weapons/m42c.png and /dev/null differ diff --git a/nano/images/weapons/m44r.png b/nano/images/weapons/m44r.png deleted file mode 100644 index d7deb2589ed3..000000000000 Binary files a/nano/images/weapons/m44r.png and /dev/null differ diff --git a/nano/images/weapons/m44rc.png b/nano/images/weapons/m44rc.png deleted file mode 100644 index 1c20973a0a99..000000000000 Binary files a/nano/images/weapons/m44rc.png and /dev/null differ diff --git a/nano/images/weapons/m46c.png b/nano/images/weapons/m46c.png deleted file mode 100644 index d404a6d88f67..000000000000 Binary files a/nano/images/weapons/m46c.png and /dev/null differ diff --git a/nano/images/weapons/m4a3.png b/nano/images/weapons/m4a3.png deleted file mode 100644 index 9169c71c5176..000000000000 Binary files a/nano/images/weapons/m4a3.png and /dev/null differ diff --git a/nano/images/weapons/m4a345.png b/nano/images/weapons/m4a345.png deleted file mode 100644 index 1ba00158467e..000000000000 Binary files a/nano/images/weapons/m4a345.png and /dev/null differ diff --git a/nano/images/weapons/m4a3c.png b/nano/images/weapons/m4a3c.png deleted file mode 100644 index 95731a6c7160..000000000000 Binary files a/nano/images/weapons/m4a3c.png and /dev/null differ diff --git a/nano/images/weapons/m5.png b/nano/images/weapons/m5.png deleted file mode 100644 index 7d502fdaafc5..000000000000 Binary files a/nano/images/weapons/m5.png and /dev/null differ diff --git a/nano/images/weapons/m56.png b/nano/images/weapons/m56.png deleted file mode 100644 index baf9b9bd9c3c..000000000000 Binary files a/nano/images/weapons/m56.png and /dev/null differ diff --git a/nano/images/weapons/m57a4.png b/nano/images/weapons/m57a4.png deleted file mode 100644 index 6c2cbcbdbe8b..000000000000 Binary files a/nano/images/weapons/m57a4.png and /dev/null differ diff --git a/nano/images/weapons/m60.png b/nano/images/weapons/m60.png deleted file mode 100644 index 08baffaa747f..000000000000 Binary files a/nano/images/weapons/m60.png and /dev/null differ diff --git a/nano/images/weapons/m79.png b/nano/images/weapons/m79.png deleted file mode 100644 index 365280f2424c..000000000000 Binary files a/nano/images/weapons/m79.png and /dev/null differ diff --git a/nano/images/weapons/m81.png b/nano/images/weapons/m81.png deleted file mode 100644 index 7b1a6a195b33..000000000000 Binary files a/nano/images/weapons/m81.png and /dev/null differ diff --git a/nano/images/weapons/m82f.png b/nano/images/weapons/m82f.png deleted file mode 100644 index f6d5e24ec889..000000000000 Binary files a/nano/images/weapons/m82f.png and /dev/null differ diff --git a/nano/images/weapons/m92.png b/nano/images/weapons/m92.png deleted file mode 100644 index ce64c3df3637..000000000000 Binary files a/nano/images/weapons/m92.png and /dev/null differ diff --git a/nano/images/weapons/m93b2.png b/nano/images/weapons/m93b2.png deleted file mode 100644 index 987f56643afa..000000000000 Binary files a/nano/images/weapons/m93b2.png and /dev/null differ diff --git a/nano/images/weapons/mac15.png b/nano/images/weapons/mac15.png deleted file mode 100644 index 179c8b7a61ad..000000000000 Binary files a/nano/images/weapons/mac15.png and /dev/null differ diff --git a/nano/images/weapons/mar30.png b/nano/images/weapons/mar30.png deleted file mode 100644 index 3a5c19f33663..000000000000 Binary files a/nano/images/weapons/mar30.png and /dev/null differ diff --git a/nano/images/weapons/mar40.png b/nano/images/weapons/mar40.png deleted file mode 100644 index 043d6529ef33..000000000000 Binary files a/nano/images/weapons/mar40.png and /dev/null differ diff --git a/nano/images/weapons/mateba.png b/nano/images/weapons/mateba.png deleted file mode 100644 index 49ec3f897a2d..000000000000 Binary files a/nano/images/weapons/mateba.png and /dev/null differ diff --git a/nano/images/weapons/mk221.png b/nano/images/weapons/mk221.png deleted file mode 100644 index a15773fb26dc..000000000000 Binary files a/nano/images/weapons/mk221.png and /dev/null differ diff --git a/nano/images/weapons/mou.png b/nano/images/weapons/mou.png deleted file mode 100644 index a471e16f6e03..000000000000 Binary files a/nano/images/weapons/mou.png and /dev/null differ diff --git a/nano/images/weapons/mp5.png b/nano/images/weapons/mp5.png deleted file mode 100644 index e36fccdca47a..000000000000 Binary files a/nano/images/weapons/mp5.png and /dev/null differ diff --git a/nano/images/weapons/mp7.png b/nano/images/weapons/mp7.png deleted file mode 100644 index 9494c8003d01..000000000000 Binary files a/nano/images/weapons/mp7.png and /dev/null differ diff --git a/nano/images/weapons/no_name.png b/nano/images/weapons/no_name.png deleted file mode 100644 index 8babb2fda54f..000000000000 Binary files a/nano/images/weapons/no_name.png and /dev/null differ diff --git a/nano/images/weapons/ny762.png b/nano/images/weapons/ny762.png deleted file mode 100644 index bdd5fe500e1a..000000000000 Binary files a/nano/images/weapons/ny762.png and /dev/null differ diff --git a/nano/images/weapons/painless.png b/nano/images/weapons/painless.png deleted file mode 100644 index f493c662eb6e..000000000000 Binary files a/nano/images/weapons/painless.png and /dev/null differ diff --git a/nano/images/weapons/pk9.png b/nano/images/weapons/pk9.png deleted file mode 100644 index 7c6649463740..000000000000 Binary files a/nano/images/weapons/pk9.png and /dev/null differ diff --git a/nano/images/weapons/pk9r.png b/nano/images/weapons/pk9r.png deleted file mode 100644 index be9adcd50733..000000000000 Binary files a/nano/images/weapons/pk9r.png and /dev/null differ diff --git a/nano/images/weapons/pk9u.png b/nano/images/weapons/pk9u.png deleted file mode 100644 index 519f574f6e4c..000000000000 Binary files a/nano/images/weapons/pk9u.png and /dev/null differ diff --git a/nano/images/weapons/ppsh17b.png b/nano/images/weapons/ppsh17b.png deleted file mode 100644 index 4ea9e0214f94..000000000000 Binary files a/nano/images/weapons/ppsh17b.png and /dev/null differ diff --git a/nano/images/weapons/single.png b/nano/images/weapons/single.png deleted file mode 100644 index 2f784868ca32..000000000000 Binary files a/nano/images/weapons/single.png and /dev/null differ diff --git a/nano/images/weapons/skorpion.png b/nano/images/weapons/skorpion.png deleted file mode 100644 index 342fc75e3e6e..000000000000 Binary files a/nano/images/weapons/skorpion.png and /dev/null differ diff --git a/nano/images/weapons/skorpion_u.png b/nano/images/weapons/skorpion_u.png deleted file mode 100644 index 72128e1f46bf..000000000000 Binary files a/nano/images/weapons/skorpion_u.png and /dev/null differ diff --git a/nano/images/weapons/smartpistol.png b/nano/images/weapons/smartpistol.png deleted file mode 100644 index e688ac9260a8..000000000000 Binary files a/nano/images/weapons/smartpistol.png and /dev/null differ diff --git a/nano/images/weapons/spearhead.png b/nano/images/weapons/spearhead.png deleted file mode 100644 index 7b740dbdc593..000000000000 Binary files a/nano/images/weapons/spearhead.png and /dev/null differ diff --git a/nano/images/weapons/sshotgun.png b/nano/images/weapons/sshotgun.png deleted file mode 100644 index f052433653b8..000000000000 Binary files a/nano/images/weapons/sshotgun.png and /dev/null differ diff --git a/nano/images/weapons/supremo.png b/nano/images/weapons/supremo.png deleted file mode 100644 index 83f6a6fb4b3f..000000000000 Binary files a/nano/images/weapons/supremo.png and /dev/null differ diff --git a/nano/images/weapons/svd003.png b/nano/images/weapons/svd003.png deleted file mode 100644 index 6395b8d3b686..000000000000 Binary files a/nano/images/weapons/svd003.png and /dev/null differ diff --git a/nano/images/weapons/sw357.png b/nano/images/weapons/sw357.png deleted file mode 100644 index a89ea9cb2f2d..000000000000 Binary files a/nano/images/weapons/sw357.png and /dev/null differ diff --git a/nano/images/weapons/sw358.png b/nano/images/weapons/sw358.png deleted file mode 100644 index c24e72bfce7c..000000000000 Binary files a/nano/images/weapons/sw358.png and /dev/null differ diff --git a/nano/images/weapons/syringegun.png b/nano/images/weapons/syringegun.png deleted file mode 100644 index bf18bf425d7a..000000000000 Binary files a/nano/images/weapons/syringegun.png and /dev/null differ diff --git a/nano/images/weapons/taser.png b/nano/images/weapons/taser.png deleted file mode 100644 index 6337a8996677..000000000000 Binary files a/nano/images/weapons/taser.png and /dev/null differ diff --git a/nano/images/weapons/type71.png b/nano/images/weapons/type71.png deleted file mode 100644 index 700ff164d60c..000000000000 Binary files a/nano/images/weapons/type71.png and /dev/null differ diff --git a/nano/images/weapons/type71c.png b/nano/images/weapons/type71c.png deleted file mode 100644 index 273ac0bcbec0..000000000000 Binary files a/nano/images/weapons/type71c.png and /dev/null differ diff --git a/nano/images/weapons/type73.png b/nano/images/weapons/type73.png deleted file mode 100644 index 63294f7cc9f8..000000000000 Binary files a/nano/images/weapons/type73.png and /dev/null differ diff --git a/nano/images/weapons/vp78.png b/nano/images/weapons/vp78.png deleted file mode 100644 index 2383b4e3aded..000000000000 Binary files a/nano/images/weapons/vp78.png and /dev/null differ diff --git a/nano/images/weapons/xm42b.png b/nano/images/weapons/xm42b.png deleted file mode 100644 index 645c552314f9..000000000000 Binary files a/nano/images/weapons/xm42b.png and /dev/null differ diff --git a/sound/effects/data-transmission.ogg b/sound/effects/data-transmission.ogg new file mode 100644 index 000000000000..b2e74acdb837 Binary files /dev/null and b/sound/effects/data-transmission.ogg differ diff --git a/sound/effects/dropship_crash.ogg b/sound/effects/dropship_crash.ogg index ec552ce5b194..880777a41297 100644 Binary files a/sound/effects/dropship_crash.ogg and b/sound/effects/dropship_crash.ogg differ diff --git a/sound/effects/incoming-fax.ogg b/sound/effects/incoming-fax.ogg new file mode 100644 index 000000000000..fccb34356303 Binary files /dev/null and b/sound/effects/incoming-fax.ogg differ diff --git a/sound/weapons/gun_shotgun_xm51.ogg b/sound/weapons/gun_shotgun_xm51.ogg new file mode 100644 index 000000000000..0b0f94e49ca1 Binary files /dev/null and b/sound/weapons/gun_shotgun_xm51.ogg differ diff --git a/strings/marinetips.txt b/strings/marinetips.txt index 416c9ef0a4dd..d461c764fb34 100644 --- a/strings/marinetips.txt +++ b/strings/marinetips.txt @@ -80,15 +80,15 @@ You can shoot through tents, but they won't protect you much in return. Reqs doesn't have an infinite budget. Good Reqs can land supplies anywhere outside - given coords - and sometimes in a minimal amount of time. A ‘point blank’ or ‘PB’ is a type of attack with a firearm where you click directly on a mob next to you. These attacks are not effected by accuracy allowing you to quickly fire with weapons like a shotgun to great effect. -Intel Officers can be put in a squad by going to CIC and requesting it. +Intel Officers can be put in a different squad by going to CIC and requesting it. Any marine can perform CPR. On dead marines, this will increase the time they have until they become unrevivable. If you've been pounced on and your squad is unloading into the target, you can hit the 'rest' button to stay down so you don't get filled with lead after getting up. You can check the landing zone as a marine in the status panel. The Colonial Marshals may come to crack down on too heavy of a Black Market usage. -Functioning night vision goggles can be recharged with batteries. Broken night vision goggles can be repaired by an Engineer with a screwdriver. Not the loadout ones though, those cannot be fixed. +A night vision HUD optic can be recharged by removing it with a screwdriver, then placing it into a recharger. You can put a pistol belt on your suit slot. (Just grab a rifle instead.) Alt-clicking the Squad Leader tracker lets you track your fireteam leader instead. -Armor has a randomized reduction in effectiveness, and does not protect the digits. Take the wiki damage values as a best-case scenario. +Armor consistently protects you from damage to your chest, arms, and legs, but does not protect hands and feet. Take the wiki damage values as a best-case scenario. You can click on your Security Access Tuner (multitool) in your hand to locate the area's APC if there is one. Need help learning the game and these tips aren't enough? Use MentorHelp or try to get ahold of your ship's Senior Enlisted Advisor. Clicking on your sprite with help intent will let you check your body, seeing where your fractures and other wounds are. diff --git a/strings/xenotips.txt b/strings/xenotips.txt index 8674146de655..08f56bf1aa8e 100644 --- a/strings/xenotips.txt +++ b/strings/xenotips.txt @@ -23,16 +23,17 @@ Claymores have directional explosions. Set them off early by slashing them from If you have difficulty clicking marines, try using Directional Slashing, though there's no directional slashing for abilities. You can diagonally pounce through the corners of fire as a Lurker or Runner without getting ignited. When playing as Xeno, consider aiming at the limbs instead of the chest. Marine armor doesn't protect the arms and legs as well as it does the body. -As Xeno, you can break Night-Vision goggles that some marines wear on their helmets. Just aim for the head and slash until the goggles shatter. -Pounces are ineffective on marines who are laying down. +You can dodge pounces that aren't aimed directly at you by laying down. You may rest immediately during a pounce to pounce straight through mobs. It's not very practical or useful though. Pouncing someone who is buckled to a chair will still stun them, but you won't jump into their tile and they will not be knocked to the ground. Star shell dust from said grenades is just as meltable as normal flares. You can join the hive as a living Facehugger by clicking on the hive's Eggmorpher. This works on other hives too.. -Playable Facehuggers can leap onto targets with a one-second windup, but this will only infect them if they are adjacent to it. Otherwise, it will simply knock them down for a small duration. +Playable Facehuggers can leap onto targets with a one-second windup, but this will only infect them if they are adjacent to it. Otherwise, it will simply knock them down for a small duration. As a Facehugger, you cannot talk in hivemind, but you can still open Hive Status and overwatch your sisters. This can be useful if you're locating other Facehuggers, flanker castes, or trying to learn from experienced Facehugger players. Shift-clicking the Queen indicator will tell you what area you are in, on the map. As a Ravager your abilities become greatly enhanced when you empower with three or more people around you. Resisting on a water tile will immediately put out fires. Make sure you're alone though - It's usually better to let a friendly Xenomorph pat you out than it is to expose yourself to open water. You can filter out the Xenomorphs displayed in hive status by health, allowing you to look only for wounded sisters. Each xeno has their own ‘tackle counter’ on a marine. The range to successfully tackle can be anywhere from two to six tackles based on caste. If a marine gets stunned or knocked over by other means it will reset everyone's tackle counters and they may get up! +As a Xenomorph, the list of available tunnels is sorted by their distance to the player! +As a Xenomorph, pay attention to what a marine is wearing. If they have no helmet, aiming for the head will be significantly more damaging, if they aren't wearing gloves, then think about going for their hands. diff --git a/tgui/.eslintignore b/tgui/.eslintignore index a59187b933ae..7965d0731a6e 100644 --- a/tgui/.eslintignore +++ b/tgui/.eslintignore @@ -3,4 +3,3 @@ /**/*.bundle.* /**/*.chunk.* /**/*.hot-update.* -/packages/inferno/** diff --git a/tgui/.yarn/releases/yarn-3.1.1.cjs b/tgui/.yarn/releases/yarn-3.1.1.cjs deleted file mode 100644 index f5f2adca83b2..000000000000 --- a/tgui/.yarn/releases/yarn-3.1.1.cjs +++ /dev/null @@ -1,768 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hE=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hE)for(var r of hE(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hE)for(var i of hE(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),E=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=E((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=E((o$e,jO)=>{var s$e=require("fs"),xE;process.platform==="win32"||global.TESTING_WINDOWS?xE=MO():xE=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xE(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xE.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=E((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=E((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=E((c$e,mb)=>{"use strict";var Eb=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Eb,"^$1"),t}function Ehe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Eb,"^$1"),e&&(t=t.replace(Eb,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ehe});var oK=E((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=E((g$e,aK)=>{"use strict";var Ihe=oK();aK.exports=(t="")=>{let e=t.match(Ihe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=E((f$e,lK)=>{"use strict";var Ib=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Ib.openSync(t,"r"),Ib.readSync(i,r,0,e,0),Ib.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=E((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=E((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=E((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function EK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=EK;tu.exports.spawn=EK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=E((y$e,IK)=>{"use strict";IK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=E((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=E((B$e,QK)=>{var kE=Nb();function Mhe(){let t={},e=Object.keys(kE);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=E((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PE=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PE,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PE,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PE,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PE,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=E((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=E((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r -`:` -`)+r,n=i+1,i=t.indexOf(` -`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=E((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=E((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DE.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DE(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RE(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RE(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RE(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RE(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RE=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` -`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=E(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FE=E(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FE();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=E((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=E((T$e,s1)=>{"use strict";var o1=n1(),El=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(El.cache.hasOwnProperty(l))return El.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),El.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}El.cache={};El.clearCache=()=>El.cache={};s1.exports=El});var Wb=E((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},E1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},I1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw I1([t,e]);return[]},Ipe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw I1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],I=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,I),g,f)),n=o?n-r:n+r,I++;return i.toRegex===!0?r>1?Epe(p,i):E1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?E1(u,null,{wrap:!1,options:i}):u},LE=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LE(t,e,1,{transform:r});if(d1(r))return LE(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Ipe(r,n):LE(t,e,1,r)};h1.exports=LE});var Q1=E((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FE(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=E((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NE(),ou=FE(),Il=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(Il(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?Il(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(Il(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(Il(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(Il(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=E((H$e,P1)=>{"use strict";var Spe=NE(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let I=m[m.length-1];I.value+=a.value+f,a=I,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],I=m.nodes.indexOf(o);m.nodes.splice(I,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=E((G$e,L1)=>{"use strict";var T1=NE(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=E((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TE="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TE}|$)`,H1=`(?:^|${TE})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TE}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TE,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=E(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=E((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,I=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var ME=dh(),Fn=Ch(),{MAX_LENGTH:OE,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=ME,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=ME.globChars(l),u=ME.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:I,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=I,F.output+=I):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=ME.globChars(s),d=r.dot?g:u,m=r.dot?f:u,I=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${I}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=E((W$e,rU)=>{"use strict";var mde=require("path"),Ede=X1(),tv=tU(),rv=Ch(),Ide=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ede(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ide;rU.exports=Dr});var iv=E((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=E((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=E((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=E((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>IU,makeTrait:()=>EU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GE,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return EU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function IU(t,e){return r=>{t[e]=r}}function GE(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,EU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,EU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:IU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GE(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=E(($et,OU)=>{var mCe="2.0.0",ECe=256,ICe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ECe,MAX_SAFE_INTEGER:ICe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=E((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=E((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=E((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zE=E((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=E((itt,qU)=>{var VE=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_E}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zE(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VE("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_E||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_E||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_E||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_E)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VE("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=E((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=E((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=E((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=E((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=E((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XE=E((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=E((ctt,A2)=>{var l2=bl(),GCe=XE(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=E((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=E((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=E((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=E((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var I2=E((ptt,E2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);E2.exports=$Ce});var w2=E((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZE=E((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=E((mtt,b2)=>{var ime=ZE(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=E((Ett,S2)=>{var sme=ZE(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=E((Itt,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $E=E((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=E((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eI=E((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tI=E((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=E((btt,N2)=>{var Cme=XE(),mme=wv(),Eme=Dh(),Ime=eI(),yme=$E(),wme=tI(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Eme(t,r,i);case">=":return Ime(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=E((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rI,t:iI}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rI[iI.COERCE]);else{let i;for(;(i=rI[iI.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rI[iI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rI[iI.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=E((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=E((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nI(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nI(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nI=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nI(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=E((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=E((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=E((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=E((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=E((Ntt,sH)=>{var eEe=bi(),tEe=Zn(),rEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eEe(i,r))}),i};sH.exports=rEe});var AH=E((Ltt,aH)=>{var iEe=bi(),nEe=Zn(),sEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iEe(i,r))}),i};aH.exports=sEe});var uH=E((Ttt,lH)=>{var kv=bi(),oEe=Zn(),cH=Dh(),aEe=(t,e)=>{t=new oEe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aEe});var fH=E((Mtt,gH)=>{var AEe=Zn(),lEe=(t,e)=>{try{return new AEe(t,e).range||"*"}catch(r){return null}};gH.exports=lEe});var sI=E((Ott,hH)=>{var cEe=bi(),pH=Lh(),{ANY:uEe}=pH,gEe=Zn(),fEe=Oh(),dH=Dh(),CH=$E(),hEe=tI(),pEe=eI(),dEe=(t,e,r,i)=>{t=new cEe(t,i),e=new gEe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hEe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pEe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fEe(t,e,i))return!1;for(let c=0;c{h.semver===uEe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dEe});var EH=E((Ktt,mH)=>{var CEe=sI(),mEe=(t,e,r)=>CEe(t,e,">",r);mH.exports=mEe});var yH=E((Utt,IH)=>{var EEe=sI(),IEe=(t,e,r)=>EEe(t,e,"<",r);IH.exports=IEe});var QH=E((Htt,wH)=>{var BH=Zn(),yEe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yEe});var vH=E((Gtt,bH)=>{var wEe=Oh(),BEe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BEe(u,g,r));for(let u of o)wEe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oI=Lh(),{ANY:Pv}=oI,Kh=Oh(),Dv=Xn(),bEe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QEe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QEe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oI(">=0.0.0-0")]:t=[new oI(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oI(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bEe});var Or=E((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zE().compareIdentifiers,rcompareIdentifiers:zE().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:I2(),compareLoose:w2(),compareBuild:ZE(),sort:v2(),rsort:x2(),gt:Dh(),lt:$E(),eq:XE(),neq:wv(),gte:eI(),lte:tI(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sI(),gtr:EH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=E(AI=>{"use strict";Object.defineProperty(AI,"__esModule",{value:!0});AI.VERSION=void 0;AI.VERSION="9.1.0"});var Dt=E((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lI=="object"&&lI.exports?lI.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var I=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:I,atMost:I};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:I,atMost:B}):d={atLeast:I,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),I=m.type==="Character";if(I&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(I){this.visit(I)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gI=E(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.clearRegExpParserCache=Eu.getRegExpAst=void 0;var FEe=cI(),uI={},NEe=new FEe.RegExpParser;function LEe(t){var e=t.toString();if(uI.hasOwnProperty(e))return uI[e];var r=NEe.pattern(e);return uI[e]=r,r}Eu.getRegExpAst=LEe;function TEe(){uI={}}Eu.clearRegExpParserCache=TEe});var VH=E(fn=>{"use strict";var MEe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cI(),$n=Dt(),JH=gI(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function OEe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fI(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OEe;function fI(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fI(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fI;function hI(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KEe(t,e)}function KEe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UEe=function(t){MEe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HEe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UEe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HEe});var Hv=E(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cI(),zt=Gh(),Ie=Dt(),Iu=VH(),ZH=gI(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GEe(){je.SUPPORT_STICKY=!1}je.disableSticky=GEe;function jEe(){je.SUPPORT_STICKY=!0}je.enableSticky=jEe;function qEe(t,e){e=(0,Ie.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YEe()});var i;r("Reject Lexer.NA",function(){i=(0,Ie.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ie.map)(i,function(B){var b=B[ao];if((0,Ie.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ie.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ie.isFunction)(b))return n=!0,{exec:b};if((0,Ie.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ie.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ie.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ie.isString)(b))return b;if((0,Ie.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ie.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ie.isArray)(b)?(0,Ie.map)(b,function(H){return(0,Ie.indexOf)(i,H)}):[(0,Ie.indexOf)(i,b)];return R}}),c=(0,Ie.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ie.map)(i,function(B){return(0,Ie.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ie.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ie.map)(i,function(b){if((0,Ie.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Iu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ie.map)(i,qv),h=(0,Ie.map)(s,$H),p=(0,Ie.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ie.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ie.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,I=[];return e.safeMode||r("First Char Optimization",function(){I=(0,Ie.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ie.isArray)(b.START_CHARS_HINT)){var K;(0,Ie.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ie.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Iu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ie.isEmpty)(J)&&(m=!1),(0,Ie.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){I=(0,Ie.packArray)(I)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:I,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qEe;function WEe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JEe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WEe;function JEe(t){var e=[],r=(0,Ie.filter)(t,function(i){return(0,Ie.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ie.filter)(t,function(n){return!(0,Ie.has)(n,ao)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ie.filter)(t,function(n){var s=n[ao];return!(0,Ie.isRegExp)(s)&&!(0,Ie.isFunction)(s)&&!(0,Ie.has)(s,"exec")&&!(0,Ie.isString)(s)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zEe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VEe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ie.map)(t,function(s){return(0,Ie.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ie.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ie.compact)(r);var i=(0,Ie.filter)(r,function(s){return s.length>1}),n=(0,Ie.map)(i,function(s){var o=(0,Ie.map)(s,function(l){return l.name}),a=(0,Ie.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ie.filter)(t,function(i){if(!(0,Ie.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ie.isString)(n)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ie.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ie.contains)(e,n.PUSH_MODE)}),i=(0,Ie.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ie.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ie.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ie.isRegExp)(o)&&XEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ie.forEach)(t,function(i,n){(0,Ie.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ee(t,e){if((0,Ie.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ie.isFunction)(e))return e(t,0,[],{});if((0,Ie.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XEe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ie.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZEe(t,e,r){var i=[];return(0,Ie.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ie.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ie.has)(t,je.MODES)&&(0,Ie.has)(t,je.DEFAULT_MODE)&&!(0,Ie.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ie.has)(t,je.MODES)&&(0,Ie.forEach)(t.modes,function(n,s){(0,Ie.forEach)(n,function(o,a){(0,Ie.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZEe;function $Ee(t,e,r){var i=[],n=!1,s=(0,Ie.compact)((0,Ie.flatten)((0,Ie.mapValues)(t.modes,function(l){return l}))),o=(0,Ie.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ie.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ie.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Iu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ee;function eIe(t){var e={},r=(0,Ie.keys)(t);return(0,Ie.forEach)(r,function(i){var n=t[i];if((0,Ie.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eIe;function qv(t){var e=t.PATTERN;if((0,Ie.isRegExp)(e))return!1;if((0,Ie.isFunction)(e))return!0;if((0,Ie.has)(e,"exec"))return!0;if((0,Ie.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ie.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ie.map)(t,function(r){return(0,Ie.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pI=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=E(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tIe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tIe;function rIe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rIe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iIe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iIe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),EG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function EG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=EG;function nIe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nIe});var _v=E(dI=>{"use strict";Object.defineProperty(dI,"__esModule",{value:!0});dI.defaultLexerErrorProvider=void 0;dI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=E(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sIe=yu(),oIe=_v(),aIe=gI(),AIe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AIe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oIe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lIe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sIe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aIe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,I,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lIe});var nA=E(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cIe=Gh(),Xv=yu();function uIe(t){return IG(t)?t.LABEL:t.name}Ci.tokenLabel=uIe;function gIe(t){return t.name}Ci.tokenName=gIe;function IG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=IG;var fIe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hIe(t)}Ci.createToken=kG;function hIe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fIe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cIe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pIe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pIe;function dIe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dIe});var hn=E(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CIe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CI=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CI;function mIe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mIe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CI){var i={type:"Terminal",name:t.terminalType.name,label:(0,CIe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var EI=E(mI=>{"use strict";Object.defineProperty(mI,"__esModule",{value:!0});mI.RestWalker=void 0;var Zv=Dt(),pn=hn(),EIe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mI.RestWalker=EIe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=E(II=>{"use strict";Object.defineProperty(II,"__esModule",{value:!0});II.GAstVisitor=void 0;var lo=hn(),IIe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();II.GAstVisitor=IIe});var Jh=E(Si=>{"use strict";var yIe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wIe=wu();function BIe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BIe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QIe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QIe;function bIe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bIe;var UG=function(t){yIe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wIe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yI=new UG;function vIe(t){yI.reset(),t.accept(yI);var e=yI.dslMethods;return yI.reset(),e}Si.collectMethods=vIe});var tS=E(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wI=Dt(),HG=hn(),eS=Jh();function BI(t){if(t instanceof HG.NonTerminal)return BI(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BI;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BI(s)),i=i+1,n=r.length>i;return(0,wI.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wI.map)(t.definition,function(r){return BI(r)});return(0,wI.uniq)((0,wI.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=E(QI=>{"use strict";Object.defineProperty(QI,"__esModule",{value:!0});QI.IN=void 0;QI.IN="_~IN~_"});var VG=E(es=>{"use strict";var SIe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xIe=EI(),kIe=tS(),qG=Dt(),JG=rS(),PIe=hn(),zG=function(t){SIe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PIe.Alternative({definition:o}),l=(0,kIe.first)(a);this.follows[s]=l},e}(xIe.RestWalker);es.ResyncFollowsWalker=zG;function DIe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DIe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function RIe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=RIe});var Wh=E(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FIe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FIe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=E(sA=>{"use strict";var NIe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LIe=Tn(),XG=Dt(),TIe=wu();function MIe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MIe;var ZG=function(t){NIe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TIe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=E(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=EI(),xt=Dt(),OIe=tS(),It=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KIe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new It.Alternative({definition:s});this.possibleTokTypes=(0,OIe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KIe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UIe;var HIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HIe;var GIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GIe;var jIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jIe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=I.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(I instanceof It.Alternative)g.push({idx:p,def:I.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(I instanceof It.Rule)g.push(YIe(I,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qIe;function YIe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=E(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JIe=EI(),bI=yu(),oA=hn(),WIe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zIe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zIe;function VIe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VIe;function _Ie(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ie;function XIe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ej=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ej;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ej;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ij=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=E(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vI=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vI);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vI);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vI);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vI);dn.EarlyExitException=Cye});var pS=E(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SI=nA(),ts=Dt(),mye=vu(),Eye=rS(),Iye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Iye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SI.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SI.EOF];var r=e.ruleName+e.idxInCallingRule+Eye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SI.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SI.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xI=E(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kI,"__esModule",{value:!0});kI.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xI(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kI.LooksAhead=Bye});var Pj=E(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=E(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=E(PI=>{"use strict";Object.defineProperty(PI,"__esModule",{value:!0});PI.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PI.TreeBuilder=Lye});var Hj=E(DI=>{"use strict";Object.defineProperty(DI,"__esModule",{value:!0});DI.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DI.LexerAdapter=Tye});var jj=E(RI=>{"use strict";Object.defineProperty(RI,"__esModule",{value:!0});RI.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RI.RecognizerApi=Hye});var Wj=E(FI=>{"use strict";Object.defineProperty(FI,"__esModule",{value:!0});FI.RecognizerEngine=void 0;var Er=Dt(),Mn=xI(),NI=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Er.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Er.isArray)(e)){if((0,Er.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Er.isArray)(e))this.tokensMap=(0,Er.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Er.has)(e,"modes")&&(0,Er.every)((0,Er.flatten)((0,Er.values)(e.modes)),ep.isTokenType)){var i=(0,Er.flatten)((0,Er.values)(e.modes)),n=(0,Er.uniq)(i);this.tokensMap=(0,Er.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Er.isObject)(e))this.tokensMap=(0,Er.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Er.every)((0,Er.values)(e),function(o){return(0,Er.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Er.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Er.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Er.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Er.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NI.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NI.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NI.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Er.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FI.RecognizerEngine=Yye});var Vj=E(LI=>{"use strict";Object.defineProperty(LI,"__esModule",{value:!0});LI.ErrorHandler=void 0;var ES=vu(),IS=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,IS.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,ES.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,IS.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,IS.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new ES.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ES.NoViableAltException(c,this.LA(1),l))},t}();LI.ErrorHandler=Jye});var Zj=E(TI=>{"use strict";Object.defineProperty(TI,"__esModule",{value:!0});TI.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TI.ContentAssist=Wye});var oY=E(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xI(),OI={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OI);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KI(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OI},t.prototype.consumeInternalRecord=function(e,r,i){if(KI(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();MI.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KI(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OI}function Zye(t,e){var r=this;KI(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OI}function sY(t){return t===0?"":""+t}function KI(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=E(UI=>{"use strict";Object.defineProperty(UI,"__esModule",{value:!0});UI.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UI.PerformanceTracer=twe});var lY=E(HI=>{"use strict";Object.defineProperty(HI,"__esModule",{value:!0});HI.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HI.applyMixins=rwe});var Tn=E(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GI=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GI;(0,hwe.applyMixins)(GI,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GI);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GI);or.EmbeddedActionsParser=mwe});var pY=E(jI=>{"use strict";Object.defineProperty(jI,"__esModule",{value:!0});jI.createSyntaxDiagramsCode=void 0;var hY=Uv();function Ewe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - -`,u=` -
      -`,g=` - -`,f=` - -`;return a+l+c+u+g+f}jI.createSyntaxDiagramsCode=Ewe});var mY=E(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Iwe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Iwe.VERSION}});var YI=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YI.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YI.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YI.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YI.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=E((Trt,EY)=>{var qI=mY(),ca=qI.createToken,IY=qI.tokenMatcher,yS=qI.Lexer,Swe=qI.EmbeddedActionsParser;EY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let I=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);IY(B,r)?m=R=>I(R)||b(R):IY(B,i)?m=R=>!!(I(R)^b(R)):m=R=>I(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=E(JI=>{var xwe=yY();JI.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JI.parse=JI.makeParser()});var QY=E((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=E((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WI.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WI.splitWhen=Fwe});var kY=E(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=E(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=E(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=E((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=E((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=E((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=E(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zI(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zI(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zI;function jY(t){return!zI(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zI)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function EBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=EBe});var VY=E(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var IBe=wS();function yBe(t){let e=IBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=E(VI=>{"use strict";Object.defineProperty(VI,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VI.isString=wBe;function BBe(t){return t===""}VI.isEmpty=BBe});var ga=E(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=E(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=E(_I=>{"use strict";Object.defineProperty(_I,"__esModule",{value:!0});_I.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_I.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=E(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XI.read=FBe});var sq=E(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZI=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZI.lstat,stat:ZI.stat,lstatSync:ZI.lstatSync,statSync:ZI.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=E(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=E(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=E((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=E($I=>{"use strict";Object.defineProperty($I,"__esModule",{value:!0});$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=E(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=E(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=E(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Iq=E(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Eq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Eq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Eq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=E(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=E(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=E(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=E(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Iq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=E((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=E((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=E(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=E(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),E0e=GS(),Lq=class extends E0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=E(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var I0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new I0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=E(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=E(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=E(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=E(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=E(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=E(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=E(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=E(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=E(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=E(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=E(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=E(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=E(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=E(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=E(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=E(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=E(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=E(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var EJ=E(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=E((Oit,IJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=EJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}IJ.exports=px});var BJ=E(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=E((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=E((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ex="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,EQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),IQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${EQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=IQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ix=t=>typeof t=="string",wQe=t=>t&&Ix(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ix(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ix(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ex)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ex)+Ex,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=E((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=E((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=E((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=E((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=E((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=E((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ep=class{static fn(e){return(...r)=>new Ep((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ep.prototype,Promise.prototype);Ux.exports=Ep;Ux.exports.CancelError=Hx});var f3=E((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=E((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=E((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ebe}=require("dns"),{promisify:Vx}=require("util"),Ibe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},E3=()=>{let t=!1,e=!1;for(let r of Object.values(Ibe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,I3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ebe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=E3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,I3),this._resolve6(e,I3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=E3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=E((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=E((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=E((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=E((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ip=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ip)||t instanceof(rk.WriteStream||Ip))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ip);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ip)&&t.pop()||Ip;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=E((Ent,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=E((Int,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=E((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=E((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=E((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=E((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=E((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=E(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=E((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=E((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let I;g.cache&&m.cachePolicy.storable()?(I=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",I||m),typeof i=="function"&&i(I||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),I=new eW(p.statusCode,m,p.body,p.url);I.cachePolicy=d,I.fromCache=!0,s.emit("response",I),typeof i=="function"&&i(I)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=E((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=E((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=E((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=E((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Eve=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Ive=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:I}of i)I(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:I}of i)I(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:I}=this.queue[o][m];for(;I.length!==0&&h();)I.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let I of i)I.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let I=m[o];I.splice(Eve(I,f,Ive),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,I)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,I);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=E((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=E((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=E((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=E((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var IW=E((Knt,EW)=>{"use strict";var qu=(t,e,r)=>{EW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=E((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=IW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=E((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=E((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=E((jnt,mk)=>{"use strict";var FW=require("http"),Ek=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ek,l=Ek.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ek.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=E((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ik=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ik(t,e,r),_ve=(t,e,r)=>{let i=new Ik(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ik,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=E(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=E(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=E(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=E(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=E(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=E(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=E(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=E(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=E(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=E(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=E(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=E(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=E(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=E(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=E(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ESe=Rk(),c8=ZW(),ISe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ei=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` -`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` -`)}${a.reverse().join(` -`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ei])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ei](h,p);return ce.default.promise(d)&&(d.once=(m,I)=>{if(m==="error")d.catch(I);else if(m==="abort")(async()=>{try{(await d).once("abort",I)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ei]&&(this[Ok](),delete this[Ei],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ISe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ei]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let I in a)if(ce.default.undefined(a[I]))delete a[I];else if(ce.default.null_(a[I]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${I}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let I=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(I)&&(o.headers.cookie=I)}for(let I of o.hooks.beforeRequest){let B=await I(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let I=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(I==null?void 0:I.groups){let{socketPath:B,path:b}=I.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ei]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(I){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let I=await d(g,m);ce.default.undefined(I)&&(I=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(I)?this._onRequest(I):this.writable?(this.once("finish",()=>{this._onResponse(I)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(I)}catch(I){throw I instanceof o8.CacheError?new jk(I,this):new _r(I.message,I,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ESe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ei].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ei].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ei in this)){e();return}if(this[Ei].destroyed){e();return}this[Ei].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ei].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ei in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ei].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ei])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ei])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ei])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=E(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var I8=E(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var E8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new E8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new E8.ParseError(s,t)}};Wk.default=RSe});var zk=E(EA=>{"use strict";var FSe=EA&&EA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=EA&&EA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(EA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=I8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let I=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(I),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,I;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((I=d.request)===null||I===void 0?void 0:I.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}EA.default=Q8;NSe(Sp(),EA)});var b8=E(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=E(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=E(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=E(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=E((Ea,Wy)=>{"use strict";var ZSe=Ea&&Ea.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ea&&Ea.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ea,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ea.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ea);L8(zk(),Ea)});var U8=E(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ia(t);return e.request=$k.request,e}function sxe(t){var e=new Ia(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ia(t);return e.request=M8.request,e}function axe(t){var e=new Ia(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ia(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ia.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),IA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){IA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){IA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return IA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),IA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ia.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ia.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var b4=E((xot,sP)=>{var e4=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],t4="./this.program",r4=function(t,e){throw e},i4=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(i4?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=s4(e);return i?r?i:i.toString():(Zy||(Zy=e4),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),n4(r.buffer),r},process.argv.length>1&&(t4=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),r4=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(t4=oe.thisProgram);oe.quit&&(r4=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Exe=0,Ixe=function(t){Exe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return o4[t>>2];case"double":return a4[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,A4=!1,wxe;function n4(t,e){t||Gr("Assertion failed: "+e)}function l4(t){var e=oe["_"+t];return n4(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=g4(d),u4(h,p,d)}return p},array:function(h){var p=g4(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?c4(h):e==="boolean"?Boolean(h):h}var a=l4(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&f4)return f4.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function c4(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function u4(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=h4(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,o4,a4;function p4(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=o4=new Float32Array(t),oe.HEAPF64=a4=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,d4=[],C4=[],m4=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(d4)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(C4)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(m4)}function Rxe(t){d4.unshift(t)}function Mxe(t){C4.unshift(t)}function Lxe(t){m4.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function E4(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),A4=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var I4="data:application/octet-stream;base64,";function y4(t){return t.startsWith(I4)}var Rp="data:application/octet-stream;base64,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AkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRC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AkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgC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A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoB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HCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxCHnw3A1ggAykDWCADKQNgVgRAIAMgAykDWDcDYAsgAykDYCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAygChAEoAgAgAygCgAEoAgAgAykDcKdBBHRqKAIAKQNIQQAQJ0EASARAIAMoAnwgAygChAEoAgAQFyADQn83A4gBDAMLIAMgAygChAEoAgBBAEEBIAMoAnwQxgFCf1EEQCADEF0gA0J/NwOIAQwDCwJ/IAMoAoABKAIAIAMpA3CnQQR0aigCACEBIwBBEGsiACQAIAAgATYCCCAAIAM2AgQCQAJAAkAgACgCCC8BCiAAKAIELwEKSA0AIAAoAggoAhAgACgCBCgCEEcNACAAKAIIKAIUIAAoAgQoAhRHDQAgACgCCCgCMCAAKAIEKAIwEIsBDQELIABBfzYCDAwBCwJAAkAgACgCCCgCGCAAKAIEKAIYRw0AIAAoAggpAyAgACgCBCkDIFINACAAKAIIKQMoIAAoAgQpAyhRDQELAkACQCAAKAIELwEMQQhxRQ0AIAAoAgQoAhgNACAAKAIEKQMgQgBSDQAgACgCBCkDKFANAQsgAEF/NgIMDAILCyAAQQA2AgwLIAAoAgwhASAAQRBqJAAgAQsEQCADKAJ8QRVBABAUIAMQXSADQn83A4gBDAMFIAMoAoABKAIAIAMpA3CnQQR0aigCACgCNCADKAI0EIkBIQAgAygCgAEoAgAgAykDcKdBBHRqKAIAIAA2AjQgAygCgAEoAgAgAykDcKdBBHRqKAIAQQE6AAQgA0EANgI0IAMQXSADIAMpA3BCAXw3A3AMAgsACwsgAwJ+IAMpA2AgAykDaH1C////////////AFQEQCADKQNgIAMpA2h9DAELQv///////////wALNwOIAQsgAykDiAEhBCADQZABaiQAIAQL1AQBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAygCECEBIwBBEGsiACQAIAAgATYCCCAAQdgAEBg2AgQCQCAAKAIERQRAIAAoAghBDkEAEBQgAEEANgIMDAELIAAoAgghAiMAQRBrIgEkACABIAI2AgggAUEYEBgiAjYCBAJAIAJFBEAgASgCCEEOQQAQFCABQQA2AgwMAQsgASgCBEEANgIAIAEoAgRCADcDCCABKAIEQQA2AhAgASABKAIENgIMCyABKAIMIQIgAUEQaiQAIAAoAgQgAjYCUCACRQRAIAAoAgQQFSAAQQA2AgwMAQsgACgCBEEANgIAIAAoAgRBADYCBCMAQRBrIgEgACgCBEEIajYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIEQQA2AhggACgCBEEANgIUIAAoAgRBADYCHCAAKAIEQQA2AiQgACgCBEEANgIgIAAoAgRBADoAKCAAKAIEQgA3AzggACgCBEIANwMwIAAoAgRBADYCQCAAKAIEQQA2AkggACgCBEEANgJEIAAoAgRBADYCTCAAKAIEQQA2AlQgACAAKAIENgIMCyAAKAIMIQEgAEEQaiQAIAMgASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIAIAMoAgwgAygCFDYCBCADKAIUQRBxBEAgAygCDCIAIAAoAhRBAnI2AhQgAygCDCIAIAAoAhhBAnI2AhgLIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC9UBAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDEEL///////////8AVwRAIAQpAxBCgICAgICAgICAf1kNAQsgBCgCCEEEQT0QFCAEQX82AhwMAQsCfyAEKQMQIQEgBCgCDCEAIAQoAhgiAigCTEF/TARAIAIgASAAEKABDAELIAIgASAAEKABC0EASARAIAQoAghBBEG0mwEoAgAQFCAEQX82AhwMAQsgBEEANgIcCyAEKAIcIQAgBEEgaiQAIAALJABBACAAEAUiACAAQRtGGyIABH9BtJsBIAA2AgBBAAVBAAsaC3ABAX8jAEEQayIDJAAgAwJ/IAFBwABxRQRAQQAgAUGAgIQCcUGAgIQCRw0BGgsgAyACQQRqNgIMIAIoAgALNgIAIAAgAUGAgAJyIAMQECIAQYFgTwRAQbSbAUEAIABrNgIAQX8hAAsgA0EQaiQAIAALMwEBfwJ/IAAQByIBQWFGBEAgABARIQELIAFBgWBPCwR/QbSbAUEAIAFrNgIAQX8FIAELC2kBAn8CQCAAKAIUIAAoAhxNDQAgAEEAQQAgACgCJBEBABogACgCFA0AQX8PCyAAKAIEIgEgACgCCCICSQRAIAAgASACa6xBASAAKAIoEQ8AGgsgAEEANgIcIABCADcDECAAQgA3AgRBAAvaAwEGfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiBCQAIARBCGpBkIcBQZABEBkaIAQgADYCNCAEIAA2AhwgBEF+IABrIgNB/////wcgA0H/////B0kbIgY2AjggBCAAIAZqIgA2AiQgBCAANgIYIARBCGohACMAQdABayIDJAAgAyACNgLMASADQaABakEAQSgQMiADIAMoAswBNgLIAQJAQQAgASADQcgBaiADQdAAaiADQaABahBxQQBIDQAgACgCTEEATiEHIAAoAgAhAiAALABKQQBMBEAgACACQV9xNgIACyACQSBxIQgCfyAAKAIwBEAgACABIANByAFqIANB0ABqIANBoAFqEHEMAQsgAEHQADYCMCAAIANB0ABqNgIQIAAgAzYCHCAAIAM2AhQgACgCLCECIAAgAzYCLCAAIAEgA0HIAWogA0HQAGogA0GgAWoQcSACRQ0AGiAAQQBBACAAKAIkEQEAGiAAQQA2AjAgACACNgIsIABBADYCHCAAQQA2AhAgACgCFBogAEEANgIUQQALGiAAIAAoAgAgCHI2AgAgB0UNAAsgA0HQAWokACAGBEAgBCgCHCIAIAAgBCgCGEZrQQA6AAALIARBoAFqJAAgBUEQaiQAC4wSAg9/AX4jAEHQAGsiBSQAIAUgATYCTCAFQTdqIRMgBUE4aiEQQQAhAQNAAkAgDUEASA0AQf////8HIA1rIAFIBEBBtJsBQT02AgBBfyENDAELIAEgDWohDQsgBSgCTCIHIQECQAJAAkACQAJAAkACQAJAIAUCfwJAIActAAAiBgRAA0ACQAJAIAZB/wFxIgZFBEAgASEGDAELIAZBJUcNASABIQYDQCABLQABQSVHDQEgBSABQQJqIgg2AkwgBkEBaiEGIAEtAAIhDiAIIQEgDkElRg0ACwsgBiAHayEBIAAEQCAAIAcgARAiCyABDQ0gBSgCTCEBIAUoAkwsAAFBMGtBCk8NAyABLQACQSRHDQMgASwAAUEwayEPQQEhESABQQNqDAQLIAUgAUEBaiIINgJMIAEtAAEhBiAIIQEMAAsACyANIQsgAA0IIBFFDQJBASEBA0AgBCABQQJ0aigCACIABEAgAyABQQN0aiAAIAIQqAFBASELIAFBAWoiAUEKRw0BDAoLC0EBIQsgAUEKTw0IA0AgBCABQQJ0aigCAA0IIAFBAWoiAUEKRw0ACwwIC0F/IQ8gAUEBagsiATYCTEEAIQgCQCABLAAAIgxBIGsiBkEfSw0AQQEgBnQiBkGJ0QRxRQ0AA0ACQCAFIAFBAWoiCDYCTCABLAABIgxBIGsiAUEgTw0AQQEgAXQiAUGJ0QRxRQ0AIAEgBnIhBiAIIQEMAQsLIAghASAGIQgLAkAgDEEqRgRAIAUCfwJAIAEsAAFBMGtBCk8NACAFKAJMIgEtAAJBJEcNACABLAABQQJ0IARqQcABa0EKNgIAIAEsAAFBA3QgA2pBgANrKAIAIQpBASERIAFBA2oMAQsgEQ0IQQAhEUEAIQogAARAIAIgAigCACIBQQRqNgIAIAEoAgAhCgsgBSgCTEEBagsiATYCTCAKQX9KDQFBACAKayEKIAhBgMAAciEIDAELIAVBzABqEKcBIgpBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQpwEhCSAFKAJMIQELQQAhBgNAIAYhEkF/IQsgASwAAEHBAGtBOUsNByAFIAFBAWoiDDYCTCABLAAAIQYgDCEBIAYgEkE6bGpB74IBai0AACIGQQFrQQhJDQALIAZBE0YNAiAGRQ0GIA9BAE4EQCAEIA9BAnRqIAY2AgAgBSADIA9BA3RqKQMANwNADAQLIAANAQtBACELDAULIAVBQGsgBiACEKgBIAUoAkwhDAwCCyAPQX9KDQMLQQAhASAARQ0ECyAIQf//e3EiDiAIIAhBgMAAcRshBkEAIQtBpAghDyAQIQgCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAMQQFrLAAAIgFBX3EgASABQQ9xQQNGGyABIBIbIgFB2ABrDiEEEhISEhISEhIOEg8GDg4OEgYSEhISAgUDEhIJEgESEgQACwJAIAFBwQBrDgcOEgsSDg4OAAsgAUHTAEYNCQwRCyAFKQNAIRRBpAgMBQtBACEBAkACQAJAAkACQAJAAkAgEkH/AXEOCAABAgMEFwUGFwsgBSgCQCANNgIADBYLIAUoAkAgDTYCAAwVCyAFKAJAIA2sNwMADBQLIAUoAkAgDTsBAAwTCyAFKAJAIA06AAAMEgsgBSgCQCANNgIADBELIAUoAkAgDaw3AwAMEAsgCUEIIAlBCEsbIQkgBkEIciEGQfgAIQELIBAhByABQSBxIQ4gBSkDQCIUUEUEQANAIAdBAWsiByAUp0EPcUGAhwFqLQAAIA5yOgAAIBRCD1YhDCAUQgSIIRQgDA0ACwsgBSkDQFANAyAGQQhxRQ0DIAFBBHZBpAhqIQ9BAiELDAMLIBAhASAFKQNAIhRQRQRAA0AgAUEBayIBIBSnQQdxQTByOgAAIBRCB1YhByAUQgOIIRQgBw0ACwsgASEHIAZBCHFFDQIgCSAQIAdrIgFBAWogASAJSBshCQwCCyAFKQNAIhRCf1cEQCAFQgAgFH0iFDcDQEEBIQtBpAgMAQsgBkGAEHEEQEEBIQtBpQgMAQtBpghBpAggBkEBcSILGwshDyAUIBAQRCEHCyAGQf//e3EgBiAJQX9KGyEGAkAgBSkDQCIUQgBSDQAgCQ0AQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIBIAEgCUgbIQkMCQsgBSgCQCIBQdgSIAEbIgdBACAJEKsBIgEgByAJaiABGyEIIA4hBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIApBACAGECYMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQqgEiB0EASCIODQAgByAJIAFrSw0AIAhBBGohCCAJIAEgB2oiAUsNAQwCCwtBfyELIA4NBQsgAEEgIAogASAGECYgAUUEQEEAIQEMAQtBACEIIAUoAkAhDANAIAwoAgAiB0UNASAFQQRqIAcQqgEiByAIaiIIIAFKDQEgACAFQQRqIAcQIiAMQQRqIQwgASAISw0ACwsgAEEgIAogASAGQYDAAHMQJiAKIAEgASAKSBshAQwFCyAAIAUrA0AgCiAJIAYgAUEXERkAIQEMBAsgBSAFKQNAPAA3QQEhCSATIQcgDiEGDAILQX8hCwsgBUHQAGokACALDwsgAEEgIAsgCCAHayIOIAkgCSAOSBsiDGoiCCAKIAggCkobIgEgCCAGECYgACAPIAsQIiAAQTAgASAIIAZBgIAEcxAmIABBMCAMIA5BABAmIAAgByAOECIgAEEgIAEgCCAGQYDAAHMQJgwACwALkAIBA38CQCABIAIoAhAiBAR/IAQFQQAhBAJ/IAIgAi0ASiIDQQFrIANyOgBKIAIoAgAiA0EIcQRAIAIgA0EgcjYCAEF/DAELIAJCADcCBCACIAIoAiwiAzYCHCACIAM2AhQgAiADIAIoAjBqNgIQQQALDQEgAigCEAsgAigCFCIFa0sEQCACIAAgASACKAIkEQEADwsCfyACLABLQX9KBEAgASEEA0AgASAEIgNFDQIaIAAgA0EBayIEai0AAEEKRw0ACyACIAAgAyACKAIkEQEAIgQgA0kNAiAAIANqIQAgAigCFCEFIAEgA2sMAQsgAQshBCAFIAAgBBAZGiACIAIoAhQgBGo2AhQgASEECyAEC0gCAX8BfiMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBCADKAIMQQhqEFchBCADQRBqJAAgBAt3AQF/IwBBEGsiASAANgIIIAFChSo3AwACQCABKAIIRQRAIAFBADYCDAwBCwNAIAEoAggtAAAEQCABIAEoAggtAACtIAEpAwBCIX58Qv////8PgzcDACABIAEoAghBAWo2AggMAQsLIAEgASkDAD4CDAsgASgCDAuHBQEBfyMAQTBrIgUkACAFIAA2AiggBSABNgIkIAUgAjcDGCAFIAM2AhQgBSAENgIQAkACQAJAIAUoAihFDQAgBSgCJEUNACAFKQMYQv///////////wBYDQELIAUoAhBBEkEAEBQgBUEAOgAvDAELIAUoAigoAgBFBEAgBSgCKEGAAiAFKAIQEFlBAXFFBEAgBUEAOgAvDAILCyAFIAUoAiQQdDYCDCAFIAUoAgwgBSgCKCgCAHA2AgggBSAFKAIoKAIQIAUoAghBAnRqKAIANgIEA0ACQCAFKAIERQ0AAkAgBSgCBCgCHCAFKAIMRw0AIAUoAiQgBSgCBCgCABBaDQACQAJAIAUoAhRBCHEEQCAFKAIEKQMIQn9SDQELIAUoAgQpAxBCf1ENAQsgBSgCEEEKQQAQFCAFQQA6AC8MBAsMAQsgBSAFKAIEKAIYNgIEDAELCyAFKAIERQRAIAVBIBAYIgA2AgQgAEUEQCAFKAIQQQ5BABAUIAVBADoALwwCCyAFKAIEIAUoAiQ2AgAgBSgCBCAFKAIoKAIQIAUoAghBAnRqKAIANgIYIAUoAigoAhAgBSgCCEECdGogBSgCBDYCACAFKAIEIAUoAgw2AhwgBSgCBEJ/NwMIIAUoAigiACAAKQMIQgF8NwMIAkAgBSgCKCIAKQMIuiAAKAIAuEQAAAAAAADoP6JkRQ0AIAUoAigoAgBBgICAgHhPDQAgBSgCKCAFKAIoKAIAQQF0IAUoAhAQWUEBcUUEQCAFQQA6AC8MAwsLCyAFKAIUQQhxBEAgBSgCBCAFKQMYNwMICyAFKAIEIAUpAxg3AxAgBUEBOgAvCyAFLQAvQQFxIQAgBUEwaiQAIAALWQIBfwF+AkACf0EAIABFDQAaIACtIAGtfiIDpyICIAAgAXJBgIAESQ0AGkF/IAIgA0IgiKcbCyICEBgiAEUNACAAQQRrLQAAQQNxRQ0AIABBACACEDILIAAL1BEBAX8jAEGwAWsiBiQAIAYgADYCqAEgBiABNgKkASAGIAI2AqABIAYgAzYCnAEgBiAENgKYASAGIAU2ApQBIAZBADYCkAEDQCAGKAKQAUEPS0UEQCAGQSBqIAYoApABQQF0akEAOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFPRQRAIAZBIGogBigCpAEgBigCjAFBAXRqLwEAQQF0aiIAIAAvAQBBAWo7AQAgBiAGKAKMAUEBajYCjAEMAQsLIAYgBigCmAEoAgA2AoABIAZBDzYChAEDQAJAIAYoAoQBQQFJDQAgBkEgaiAGKAKEAUEBdGovAQANACAGIAYoAoQBQQFrNgKEAQwBCwsgBigCgAEgBigChAFLBEAgBiAGKAKEATYCgAELAkAgBigChAFFBEAgBkHAADoAWCAGQQE6AFkgBkEAOwFaIAYoApwBIgEoAgAhACABIABBBGo2AgAgACAGQdgAaigBADYBACAGKAKcASIBKAIAIQAgASAAQQRqNgIAIAAgBkHYAGooAQA2AQAgBigCmAFBATYCACAGQQA2AqwBDAELIAZBATYCiAEDQAJAIAYoAogBIAYoAoQBTw0AIAZBIGogBigCiAFBAXRqLwEADQAgBiAGKAKIAUEBajYCiAEMAQsLIAYoAoABIAYoAogBSQRAIAYgBigCiAE2AoABCyAGQQE2AnQgBkEBNgKQAQNAIAYoApABQQ9NBEAgBiAGKAJ0QQF0NgJ0IAYgBigCdCAGQSBqIAYoApABQQF0ai8BAGs2AnQgBigCdEEASARAIAZBfzYCrAEMAwUgBiAGKAKQAUEBajYCkAEMAgsACwsCQCAGKAJ0QQBMDQAgBigCqAEEQCAGKAKEAUEBRg0BCyAGQX82AqwBDAELIAZBADsBAiAGQQE2ApABA0AgBigCkAFBD09FBEAgBigCkAFBAWpBAXQgBmogBigCkAFBAXQgBmovAQAgBkEgaiAGKAKQAUEBdGovAQBqOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFJBEAgBigCpAEgBigCjAFBAXRqLwEABEAgBigClAEhASAGKAKkASAGKAKMASICQQF0ai8BAEEBdCAGaiIDLwEAIQAgAyAAQQFqOwEAIABB//8DcUEBdCABaiACOwEACyAGIAYoAowBQQFqNgKMAQwBCwsCQAJAAkACQCAGKAKoAQ4CAAECCyAGIAYoApQBIgA2AkwgBiAANgJQIAZBFDYCSAwCCyAGQYDwADYCUCAGQcDwADYCTCAGQYECNgJIDAELIAZBgPEANgJQIAZBwPEANgJMIAZBADYCSAsgBkEANgJsIAZBADYCjAEgBiAGKAKIATYCkAEgBiAGKAKcASgCADYCVCAGIAYoAoABNgJ8IAZBADYCeCAGQX82AmAgBkEBIAYoAoABdDYCcCAGIAYoAnBBAWs2AlwCQAJAIAYoAqgBQQFGBEAgBigCcEHUBksNAQsgBigCqAFBAkcNASAGKAJwQdAETQ0BCyAGQQE2AqwBDAELA0AgBiAGKAKQASAGKAJ4azoAWQJAIAYoAkggBigClAEgBigCjAFBAXRqLwEAQQFqSwRAIAZBADoAWCAGIAYoApQBIAYoAowBQQF0ai8BADsBWgwBCwJAIAYoApQBIAYoAowBQQF0ai8BACAGKAJITwRAIAYgBigCTCAGKAKUASAGKAKMAUEBdGovAQAgBigCSGtBAXRqLwEAOgBYIAYgBigCUCAGKAKUASAGKAKMAUEBdGovAQAgBigCSGtBAXRqLwEAOwFaDAELIAZB4AA6AFggBkEAOwFaCwsgBkEBIAYoApABIAYoAnhrdDYCaCAGQQEgBigCfHQ2AmQgBiAGKAJkNgKIAQNAIAYgBigCZCAGKAJoazYCZCAGKAJUIAYoAmQgBigCbCAGKAJ4dmpBAnRqIAZB2ABqKAEANgEAIAYoAmQNAAsgBkEBIAYoApABQQFrdDYCaANAIAYoAmwgBigCaHEEQCAGIAYoAmhBAXY2AmgMAQsLAkAgBigCaARAIAYgBigCbCAGKAJoQQFrcTYCbCAGIAYoAmggBigCbGo2AmwMAQsgBkEANgJsCyAGIAYoAowBQQFqNgKMASAGQSBqIAYoApABQQF0aiIBLwEAQQFrIQAgASAAOwEAAkAgAEH//wNxRQRAIAYoApABIAYoAoQBRg0BIAYgBigCpAEgBigClAEgBigCjAFBAXRqLwEAQQF0ai8BADYCkAELAkAgBigCkAEgBigCgAFNDQAgBigCYCAGKAJsIAYoAlxxRg0AIAYoAnhFBEAgBiAGKAKAATYCeAsgBiAGKAJUIAYoAogBQQJ0ajYCVCAGIAYoApABIAYoAnhrNgJ8IAZBASAGKAJ8dDYCdANAAkAgBigChAEgBigCfCAGKAJ4ak0NACAGIAYoAnQgBkEgaiAGKAJ8IAYoAnhqQQF0ai8BAGs2AnQgBigCdEEATA0AIAYgBigCfEEBajYCfCAGIAYoAnRBAXQ2AnQMAQsLIAYgBigCcEEBIAYoAnx0ajYCcAJAAkAgBigCqAFBAUYEQCAGKAJwQdQGSw0BCyAGKAKoAUECRw0BIAYoAnBB0ARNDQELIAZBATYCrAEMBAsgBiAGKAJsIAYoAlxxNgJgIAYoApwBKAIAIAYoAmBBAnRqIAYoAnw6AAAgBigCnAEoAgAgBigCYEECdGogBigCgAE6AAEgBigCnAEoAgAgBigCYEECdGogBigCVCAGKAKcASgCAGtBAnU7AQILDAELCyAGKAJsBEAgBkHAADoAWCAGIAYoApABIAYoAnhrOgBZIAZBADsBWiAGKAJUIAYoAmxBAnRqIAZB2ABqKAEANgEACyAGKAKcASIAIAAoAgAgBigCcEECdGo2AgAgBigCmAEgBigCgAE2AgAgBkEANgKsAQsgBigCrAEhACAGQbABaiQAIAALsQIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYKAIENgIMIAMoAgwgAygCEEsEQCADIAMoAhA2AgwLAkAgAygCDEUEQCADQQA2AhwMAQsgAygCGCIAIAAoAgQgAygCDGs2AgQgAygCFCADKAIYKAIAIAMoAgwQGRoCQCADKAIYKAIcKAIYQQFGBEAgAygCGCgCMCADKAIUIAMoAgwQPiEAIAMoAhggADYCMAwBCyADKAIYKAIcKAIYQQJGBEAgAygCGCgCMCADKAIUIAMoAgwQGiEAIAMoAhggADYCMAsLIAMoAhgiACADKAIMIAAoAgBqNgIAIAMoAhgiACADKAIMIAAoAghqNgIIIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC+0BAQF/IwBBEGsiASAANgIIAkACQAJAIAEoAghFDQAgASgCCCgCIEUNACABKAIIKAIkDQELIAFBATYCDAwBCyABIAEoAggoAhw2AgQCQAJAIAEoAgRFDQAgASgCBCgCACABKAIIRw0AIAEoAgQoAgRBKkYNASABKAIEKAIEQTlGDQEgASgCBCgCBEHFAEYNASABKAIEKAIEQckARg0BIAEoAgQoAgRB2wBGDQEgASgCBCgCBEHnAEYNASABKAIEKAIEQfEARg0BIAEoAgQoAgRBmgVGDQELIAFBATYCDAwBCyABQQA2AgwLIAEoAgwL0gQBAX8jAEEgayIDIAA2AhwgAyABNgIYIAMgAjYCFCADIAMoAhxB3BZqIAMoAhRBAnRqKAIANgIQIAMgAygCFEEBdDYCDANAAkAgAygCDCADKAIcKALQKEoNAAJAIAMoAgwgAygCHCgC0ChODQAgAygCGCADKAIcIAMoAgxBAnRqQeAWaigCAEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBOBEAgAygCGCADKAIcIAMoAgxBAnRqQeAWaigCAEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBHDQEgAygCHCADKAIMQQJ0akHgFmooAgAgAygCHEHYKGpqLQAAIAMoAhxB3BZqIAMoAgxBAnRqKAIAIAMoAhxB2Chqai0AAEoNAQsgAyADKAIMQQFqNgIMCyADKAIYIAMoAhBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7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EANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAg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IAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAgACgCVEEVQQAQFCAAKAJQECQgAEEANgJsDAELAkAgAC8BTkUEQCAAKAJoKAIEQQRxRQ0BCyAAKAJkIAApAzBCFnwQLBogACAAKAJkEC83AyACQCAAKQMgIAAvAU6tWgRAIAAoAmgoAgRBBHFFDQEgACkDICAALwFOrVENAQsgACgCVEEVQQAQFCAAKAJQECQgAEEANgJsDAILIAAvAU4EQCAAKAJkIAAvAU6tEB4gAC8BTkEAIAAoAlQQUiEBIAAoAlAgATYCKCABRQRAIAAoAlAQJCAAQQA2AmwMAwsLCwJAIAAoAlApAyAgACkDWFoEQCAAKAJkIAAoAlApAyAgACkDWH0QLBogACAAKAJkIAAoAlApAxgQHiIBNgIcIAFFBEAgACgCVEEVQQAQFCAAKAJQECQgAEEANgJsDAMLIAAgACgCHCAAKAJQKQMYECkiATYCLCABRQRAIAAoAlRBDkEAEBQgACgCUBAkIABBADYCbAwDCwwBCyAAQQA2AiwgACgCaCgCACAAKAJQKQMgQQAQJ0EASARAIAAoAlQgACgCaCgCABAXIAAoAlAQJCAAQQA2AmwMAgsgACgCaCgCABBKIAAoAlApAyBSBEAgACgCVEETQQAQFCAAKAJQECQgAEEANgJsDAILCyAAIAAoAlApAxg3AzggAEIANwNAA0ACQCAAKQM4UA0AIABBADoAGyAAKQNAIAAoAlApAwhRBEAgACgCUC0ALEEBcQ0BIAApAzhCLlQNASAAKAJQQoCABCAAKAJUEIMBQQFxRQRAIAAoAlAQJCAAKAIsEBYgAEEANgJsDAQLIABBAToAGwsjAEEQayIBJAAgAUHYABAYIgU2AggCQCAFRQRAIAFBADYCDAwBCyABKAIIEE8gASABKAIINgIMCyABKAIMIQUgAUEQaiQAIAUhASAAKAJQKAIAIAApA0CnQQR0aiABNgIAAkAgAQRAIAAgACgCUCgCACAAKQNAp0EEdGooAgAgACgCaCgCACAAKAIsQQAgACgCVBDGASIJNwMQIAlCAFkNAQsCQCAALQAbQQFxRQ0AIwBBEGsiASAAKAJUNgIMIAEoAgwoAgBBE0cNACAAKAJUQRVBABAUCyAAKAJQECQgACgCLBAWIABBADYCbAwDCyAAIAApA0BCAXw3A0AgACAAKQM4IAApAxB9NwM4DAELCwJAIAApA0AgACgCUCkDCFEEQCAAKQM4UA0BCyAAKAJUQRVBABAUIAAoAiwQFiAAKAJQECQgAEEANgJsDAELIAAoAmgoAgRBBHEEQAJAIAAoAiwEQCAAIAAoAiwQR0EBcToADwwBCyAAIAAoAmgoAgAQSjcDACAAKQMAQgBTBEAgACgCVCAAKAJoKAIAEBcgACgCUBAkIABBADYCbAwDCyAAIAApAwAgACgCUCkDICAAKAJQKQMYfFE6AA8LIAAtAA9BAXFFBEAgACgCVEEVQQAQFCAAKAIsEBYgACgCUBAkIABBADYCbAwCCwsgACgCLBAWIAAgACgCUDYCbAsgACgCbCEBIABB8ABqJAAgAiABNgJIIAEEQAJAIAIoAkwEQCACKQMgQgBXBEAgAiACKAJYIAIoAkwgAkEQahBpNwMgCyACIAIoAlggAigCSCACQRBqEGk3AygCQCACKQMgIAIpAyhTBEAgAigCTBAkIAIgAigCSDYCTCACIAIpAyg3AyAMAQsgAigCSBAkCwwBCyACIAIoAkg2AkwCQCACKAJYKAIEQQRxBEAgAiACKAJYIAIoAkwgAkEQahBpNwMgDAELIAJCADcDIAsLIAJBADYCSAsgAiACKAJEQQFqNgJEIAIoAgwgAigCRAJ/IwBBEGsiACACKAIMNgIMIAAoAgwoAgQLa6wQLBoMAQsLIAIoAgwQFiACKQMgQgBTBEAgAigCWEEIaiACQRBqEEMgAigCTBAkIAJBADYCXAwBCyACIAIoAkw2AlwLIAIoAlwhACACQeAAaiQAIAMgADYCWCAARQRAIAMoAmAgAygCXEEIahBDIwBBEGsiACADKAJoNgIMIAAoAgwiACAAKAIwQQFqNgIwIAMoAlwQPSADQQA2AmwMAQsgAygCXCADKAJYKAIANgJAIAMoAlwgAygCWCkDCDcDMCADKAJcIAMoAlgpAxA3AzggAygCXCADKAJYKAIoNgIgIAMoAlgQFSADKAJcKAJQIQAgAygCXCkDMCEJIAMoAlxBCGohAiMAQSBrIgEkACABIAA2AhggASAJNwMQIAEgAjYCDAJAIAEpAxBQBEAgAUEBOgAfDAELIwBBIGsiACABKQMQNwMQIAAgACkDELpEAAAAAAAA6D+jOQMIAkAgACsDCEQAAOD////vQWQEQCAAQX82AgQMAQsgAAJ/IAArAwgiCkQAAAAAAADwQWMgCkQAAAAAAAAAAGZxBEAgCqsMAQtBAAs2AgQLAkAgACgCBEGAgICAeEsEQCAAQYCAgIB4NgIcDAELIAAgACgCBEEBazYCBCAAIAAoAgQgACgCBEEBdnI2AgQgACAAKAIEIAAoAgRBAnZyNgIEIAAgACgCBCAAKAIEQQR2cjYCBCAAIAAoAgQgACgCBEEIdnI2AgQgACAAKAIEIAAoAgRBEHZyNgIEIAAgACgCBEEBajYCBCAAIAAoAgQ2AhwLIAEgACgCHDYCCCABKAIIIAEoAhgoAgBNBEAgAUEBOgAfDAELIAEoAhggASgCCCABKAIMEFlBAXFFBEAgAUEAOgAfDAELIAFBAToAHwsgAS0AHxogAUEgaiQAIANCADcDEANAIAMpAxAgAygCXCkDMFQEQCADIAMoAlwoAkAgAykDEKdBBHRqKAIAKAIwQQBBACADKAJgEEY2AgwgAygCDEUEQCMAQRBrIgAgAygCaDYCDCAAKAIMIgAgACgCMEEBajYCMCADKAJcED0gA0EANgJsDAMLIAMoAlwoAlAgAygCDCADKQMQQQggAygCXEEIahB1QQFxRQRAAkAgAygCXCgCCEEKRgRAIAMoAmRBBHFFDQELIAMoAmAgAygCXEEIahBDIwBBEGsiACADKAJoNgIMIAAoAgwiACAAKAIwQQFqNgIwIAMoAlwQPSADQQA2AmwMBAsLIAMgAykDEEIBfDcDEAwBCwsgAygCXCADKAJcKAIUNgIYIAMgAygCXDYCbAsgAygCbCEAIANB8ABqJAAgBCAANgI4CyAEKAI4RQRAIAQoAlgQMRogBEEANgJcDAELIAQgBCgCODYCXAsgBCgCXCEAIARB4ABqJAAgAAuOAQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAJBADYCBCACKAIIBEAjAEEQayIAIAIoAgg2AgwgAiAAKAIMKAIANgIEIAIoAggQlgFBAUYEQCMAQRBrIgAgAigCCDYCDEG0mwEgACgCDCgCBDYCAAsLIAIoAgwEQCACKAIMIAIoAgQ2AgALIAJBEGokAAuVAQEBfyMAQRBrIgEkACABIAA2AggCQAJ/IwBBEGsiACABKAIINgIMIAAoAgwpAxhCgIAQg1ALBEAgASgCCCgCAARAIAEgASgCCCgCABCeAUEBcToADwwCCyABQQE6AA8MAQsgASABKAIIQQBCAEESECE+AgQgASABKAIEQQBHOgAPCyABLQAPQQFxIQAgAUEQaiQAIAALfwEBfyMAQSBrIgMkACADIAA2AhggAyABNwMQIANBADYCDCADIAI2AggCQCADKQMQQv///////////wBWBEAgAygCCEEEQT0QFCADQX82AhwMAQsgAyADKAIYIAMpAxAgAygCDCADKAIIEGs2AhwLIAMoAhwhACADQSBqJAAgAAt9ACACQQFGBEAgASAAKAIIIAAoAgRrrH0hAQsCQCAAKAIUIAAoAhxLBEAgAEEAQQAgACgCJBEBABogACgCFEUNAQsgAEEANgIcIABCADcDECAAIAEgAiAAKAIoEQ8AQgBTDQAgAEIANwIEIAAgACgCAEFvcTYCAEEADwtBfwvhAgECfyMAQSBrIgMkAAJ/AkACQEGnEiABLAAAEKIBRQRAQbSbAUEcNgIADAELQZgJEBgiAg0BC0EADAELIAJBAEGQARAyIAFBKxCiAUUEQCACQQhBBCABLQAAQfIARhs2AgALAkAgAS0AAEHhAEcEQCACKAIAIQEMAQsgAEEDQQAQBCIBQYAIcUUEQCADIAFBgAhyNgIQIABBBCADQRBqEAQaCyACIAIoAgBBgAFyIgE2AgALIAJB/wE6AEsgAkGACDYCMCACIAA2AjwgAiACQZgBajYCLAJAIAFBCHENACADIANBGGo2AgAgAEGTqAEgAxAODQAgAkEKOgBLCyACQRo2AiggAkEbNgIkIAJBHDYCICACQR02AgxB6J8BKAIARQRAIAJBfzYCTAsgAkGsoAEoAgA2AjhBrKABKAIAIgAEQCAAIAI2AjQLQaygASACNgIAIAILIQAgA0EgaiQAIAAL8AEBAn8CfwJAIAFB/wFxIgMEQCAAQQNxBEADQCAALQAAIgJFDQMgAiABQf8BcUYNAyAAQQFqIgBBA3ENAAsLAkAgACgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AIANBgYKECGwhAwNAIAIgA3MiAkF/cyACQYGChAhrcUGAgYKEeHENASAAKAIEIQIgAEEEaiEAIAJBgYKECGsgAkF/c3FBgIGChHhxRQ0ACwsDQCAAIgItAAAiAwRAIAJBAWohACADIAFB/wFxRw0BCwsgAgwCCyAAECsgAGoMAQsgAAsiAEEAIAAtAAAgAUH/AXFGGwsYACAAKAJMQX9MBEAgABCkAQ8LIAAQpAELYAIBfgJ/IAAoAighAkEBIQMgAEIAIAAtAABBgAFxBH9BAkEBIAAoAhQgACgCHEsbBUEBCyACEQ8AIgFCAFkEfiAAKAIUIAAoAhxrrCABIAAoAgggACgCBGusfXwFIAELC2sBAX8gAARAIAAoAkxBf0wEQCAAEG8PCyAAEG8PC0GwoAEoAgAEQEGwoAEoAgAQpQEhAQtBrKABKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEsEQCAAEG8gAXIhAQsgACgCOCIADQALCyABCyIAIAAgARACIgBBgWBPBH9BtJsBQQAgAGs2AgBBfwUgAAsLUwEDfwJAIAAoAgAsAABBMGtBCk8NAANAIAAoAgAiAiwAACEDIAAgAkEBajYCACABIANqQTBrIQEgAiwAAUEwa0EKTw0BIAFBCmwhAQwACwALIAELuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAkEYEQQACwt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARCpASEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC5sCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGQmQEoAgAoAgBFBEAgAUGAf3FBgL8DRg0DDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAsANPQQAgAUGAQHFBgMADRxtFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAwwECyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBAwECwtBtJsBQRk2AgBBfwVBAQsMAQsgACABOgAAQQELC+MBAQJ/IAJBAEchAwJAAkACQCAAQQNxRQ0AIAJFDQAgAUH/AXEhBANAIAAtAAAgBEYNAiACQQFrIgJBAEchAyAAQQFqIgBBA3FFDQEgAg0ACwsgA0UNAQsCQCAALQAAIAFB/wFxRg0AIAJBBEkNACABQf8BcUGBgoQIbCEDA0AgACgCACADcyIEQX9zIARBgYKECGtxQYCBgoR4cQ0BIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQAgAUH/AXEhAQNAIAEgAC0AAEYEQCAADwsgAEEBaiEAIAJBAWsiAg0ACwtBAAuLDAEGfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBA3FFDQEgACgCACICIAFqIQECQCAAIAJrIgBBzJsBKAIARwRAIAJB/wFNBEAgACgCCCIEIAJBA3YiAkEDdEHgmwFqRhogACgCDCIDIARHDQJBuJsBQbibASgCAEF+IAJ3cTYCAAwDCyAAKAIYIQYCQCAAIAAoAgwiA0cEQCAAKAIIIgJByJsBKAIASRogAiADNgIMIAMgAjYCCAwBCwJAIABBFGoiAigCACIEDQAgAEEQaiICKAIAIgQNAEEAIQMMAQsDQCACIQcgBCIDQRRqIgIoAgAiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIACyAGRQ0CAkAgACAAKAIcIgRBAnRB6J0BaiICKAIARgRAIAIgAzYCACADDQFBvJsBQbybASgCAEF+IAR3cTYCAAwECyAGQRBBFCAGKAIQIABGG2ogAzYCACADRQ0DCyADIAY2AhggACgCECICBEAgAyACNgIQIAIgAzYCGAsgACgCFCICRQ0CIAMgAjYCFCACIAM2AhgMAgsgBSgCBCICQQNxQQNHDQFBwJsBIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIICwJAIAUoAgQiAkECcUUEQCAFQdCbASgCAEYEQEHQmwEgADYCAEHEmwFBxJsBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBzJsBKAIARw0DQcCbAUEANgIAQcybAUEANgIADwsgBUHMmwEoAgBGBEBBzJsBIAA2AgBBwJsBQcCbASgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQECQCACQf8BTQRAIAUoAggiBCACQQN2IgJBA3RB4JsBakYaIAQgBSgCDCIDRgRAQbibAUG4mwEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiA0cEQCAFKAIIIgJByJsBKAIASRogAiADNgIMIAMgAjYCCAwBCwJAIAVBFGoiBCgCACICDQAgBUEQaiIEKAIAIgINAEEAIQMMAQsDQCAEIQcgAiIDQRRqIgQoAgAiAg0AIANBEGohBCADKAIQIgINAAsgB0EANgIACyAGRQ0AAkAgBSAFKAIcIgRBAnRB6J0BaiICKAIARgRAIAIgAzYCACADDQFBvJsBQbybASgCAEF+IAR3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogAzYCACADRQ0BCyADIAY2AhggBSgCECICBEAgAyACNgIQIAIgAzYCGAsgBSgCFCICRQ0AIAMgAjYCFCACIAM2AhgLIAAgAUEBcjYCBCAAIAFqIAE2AgAgAEHMmwEoAgBHDQFBwJsBIAE2AgAPCyAFIAJBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsgAUH/AU0EQCABQQN2IgJBA3RB4JsBaiEBAn9BuJsBKAIAIgNBASACdCICcUUEQEG4mwEgAiADcjYCACABDAELIAEoAggLIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIDwtBHyECIABCADcCECABQf///wdNBEAgAUEIdiICIAJBgP4/akEQdkEIcSIEdCICIAJBgOAfakEQdkEEcSIDdCICIAJBgIAPakEQdkECcSICdEEPdiADIARyIAJyayICQQF0IAEgAkEVanZBAXFyQRxqIQILIAAgAjYCHCACQQJ0QeidAWohBwJAAkBBvJsBKAIAIgRBASACdCIDcUUEQEG8mwEgAyAEcjYCACAHIAA2AgAgACAHNgIYDAELIAFBAEEZIAJBAXZrIAJBH0YbdCECIAcoAgAhAwNAIAMiBCgCBEF4cSABRg0CIAJBHXYhAyACQQF0IQIgBCADQQRxaiIHQRBqKAIAIgMNAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsL+QIBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIIAQgBCgCGCAEKAIYIAQpAxAgBCgCDCAEKAIIEK4BIgA2AgACQCAARQRAIARBADYCHAwBCyAEKAIAEElBAEgEQCAEKAIYQQhqIAQoAgAQFyAEKAIAEBsgBEEANgIcDAELIAQoAhghAiMAQRBrIgAkACAAIAI2AgggAEEYEBgiAjYCBAJAIAJFBEAgACgCCEEIakEOQQAQFCAAQQA2AgwMAQsgACgCBCAAKAIINgIAIwBBEGsiAiAAKAIEQQRqNgIMIAIoAgxBADYCACACKAIMQQA2AgQgAigCDEEANgIIIAAoAgRBADoAECAAKAIEQQA2AhQgACAAKAIENgIMCyAAKAIMIQIgAEEQaiQAIAQgAjYCBCACRQRAIAQoAgAQGyAEQQA2AhwMAQsgBCgCBCAEKAIANgIUIAQgBCgCBDYCHAsgBCgCHCEAIARBIGokACAAC7cOAgN/AX4jAEHAAWsiBSQAIAUgADYCuAEgBSABNgK0ASAFIAI3A6gBIAUgAzYCpAEgBUIANwOYASAFQgA3A5ABIAUgBDYCjAECQCAFKAK4AUUEQCAFQQA2ArwBDAELAkAgBSgCtAEEQCAFKQOoASAFKAK0ASkDMFQNAQsgBSgCuAFBCGpBEkEAEBQgBUEANgK8AQwBCwJAIAUoAqQBQQhxDQAgBSgCtAEoAkAgBSkDqAGnQQR0aigCCEUEQCAFKAK0ASgCQCAFKQOoAadBBHRqLQAMQQFxRQ0BCyAFKAK4AUEIakEPQQAQFCAFQQA2ArwBDAELIAUoArQBIAUpA6gBIAUoAqQBQQhyIAVByABqEH9BAEgEQCAFKAK4AUEIakEUQQAQFCAFQQA2ArwBDAELIAUoAqQBQSBxBEAgBSAFKAKkAUEEcjYCpAELAkAgBSkDmAFQBEAgBSkDkAFQDQELIAUoAqQBQQRxRQ0AIAUoArgBQQhqQRJBABAUIAVBADYCvAEMAQsCQCAFKQOYAVAEQCAFKQOQAVANAQsgBSkDmAEgBSkDmAEgBSkDkAF8WARAIAUpA2AgBSkDmAEgBSkDkAF8Wg0BCyAFKAK4AUEIakESQQAQFCAFQQA2ArwBDAELIAUpA5ABUARAIAUgBSkDYCAFKQOYAX03A5ABCyAFIAUpA5ABIAUpA2BUOgBHIAUgBSgCpAFBIHEEf0EABSAFLwF6QQBHC0EBcToARSAFIAUoAqQBQQRxBH9BAAUgBS8BeEEARwtBAXE6AEQgBQJ/IAUoAqQBQQRxBEBBACAFLwF4DQEaCyAFLQBHQX9zC0EBcToARiAFLQBFQQFxBEAgBSgCjAFFBEAgBSAFKAK4ASgCHDYCjAELIAUoAowBRQRAIAUoArgBQQhqQRpBABAUIAVBADYCvAEMAgsLIAUpA2hQBEAgBSAFKAK4AUEAQgBBABB+NgK8AQwBCwJAAkAgBS0AR0EBcUUNACAFLQBFQQFxDQAgBS0AREEBcQ0AIAUgBSkDkAE3AyAgBSAFKQOQATcDKCAFQQA7ATggBSAFKAJwNgIwIAVC3AA3AwggBSAFKAK0ASgCACAFKQOYASAFKQOQASAFQQhqQQAgBSgCtAEgBSkDqAEgBSgCuAFBCGoQZCIANgKIAQwBCyAFIAUoArQBIAUpA6gBIAUoAqQBIAUoArgBQQhqEEUiADYCBCAARQRAIAVBADYCvAEMAgsgBSAFKAK0ASgCAEIAIAUpA2ggBUHIAGogBSgCBC8BDEEBdkEDcSAFKAK0ASAFKQOoASAFKAK4AUEIahBkIgA2AogBCyAARQRAIAVBADYCvAEMAQsCfyAFKAKIASEAIAUoArQBIQMjAEEQayIBJAAgASAANgIMIAEgAzYCCCABKAIMIAEoAgg2AiwgASgCCCEDIAEoAgwhBCMAQSBrIgAkACAAIAM2AhggACAENgIUAkAgACgCGCgCSCAAKAIYKAJEQQFqTQRAIAAgACgCGCgCSEEKajYCDCAAIAAoAhgoAkwgACgCDEECdBBINgIQIAAoAhBFBEAgACgCGEEIakEOQQAQFCAAQX82AhwMAgsgACgCGCAAKAIMNgJIIAAoAhggACgCEDYCTAsgACgCFCEEIAAoAhgoAkwhBiAAKAIYIgcoAkQhAyAHIANBAWo2AkQgA0ECdCAGaiAENgIAIABBADYCHAsgACgCHCEDIABBIGokACABQRBqJAAgA0EASAsEQCAFKAKIARAbIAVBADYCvAEMAQsgBS0ARUEBcQRAIAUgBS8BekEAEHwiADYCACAARQRAIAUoArgBQQhqQRhBABAUIAVBADYCvAEMAgsgBSAFKAK4ASAFKAKIASAFLwF6QQAgBSgCjAEgBSgCABEFADYChAEgBSgCiAEQGyAFKAKEAUUEQCAFQQA2ArwBDAILIAUgBSgChAE2AogBCyAFLQBEQQFxBEAgBSAFKAK4ASAFKAKIASAFLwF4ELABNgKEASAFKAKIARAbIAUoAoQBRQRAIAVBADYCvAEMAgsgBSAFKAKEATYCiAELIAUtAEZBAXEEQCAFIAUoArgBIAUoAogBQQEQrwE2AoQBIAUoAogBEBsgBSgChAFFBEAgBUEANgK8AQwCCyAFIAUoAoQBNgKIAQsCQCAFLQBHQQFxRQ0AIAUtAEVBAXFFBEAgBS0AREEBcUUNAQsgBSgCuAEhASAFKAKIASEDIAUpA5gBIQIgBSkDkAEhCCMAQSBrIgAkACAAIAE2AhwgACADNgIYIAAgAjcDECAAIAg3AwggACgCGCAAKQMQIAApAwhBAEEAQQBCACAAKAIcQQhqEGQhASAAQSBqJAAgBSABNgKEASAFKAKIARAbIAUoAoQBRQRAIAVBADYCvAEMAgsgBSAFKAKEATYCiAELIAUgBSgCiAE2ArwBCyAFKAK8ASEAIAVBwAFqJAAgAAuEAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCEAJAIAMoAhRFBEAgAygCGEEIakESQQAQFCADQQA2AhwMAQsgA0E4EBgiADYCDCAARQRAIAMoAhhBCGpBDkEAEBQgA0EANgIcDAELIwBBEGsiACADKAIMQQhqNgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIAMoAgwgAygCEDYCACADKAIMQQA2AgQgAygCDEIANwMoQQBBAEEAEBohACADKAIMIAA2AjAgAygCDEIANwMYIAMgAygCGCADKAIUQRQgAygCDBBmNgIcCyADKAIcIQAgA0EgaiQAIAALQwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBEEAQQAQsgEhACADQRBqJAAgAAtJAQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgASgCDCgCrEAgASgCDCgCqEAoAgQRAgAgASgCDBA3IAEoAgwQFQsgAUEQaiQAC5QFAQF/IwBBMGsiBSQAIAUgADYCKCAFIAE2AiQgBSACNgIgIAUgAzoAHyAFIAQ2AhggBUEANgIMAkAgBSgCJEUEQCAFKAIoQQhqQRJBABAUIAVBADYCLAwBCyAFIAUoAiAgBS0AH0EBcRCzASIANgIMIABFBEAgBSgCKEEIakEQQQAQFCAFQQA2AiwMAQsgBSgCICEBIAUtAB9BAXEhAiAFKAIYIQMgBSgCDCEEIwBBIGsiACQAIAAgATYCGCAAIAI6ABcgACADNgIQIAAgBDYCDCAAQbDAABAYIgE2AggCQCABRQRAIABBADYCHAwBCyMAQRBrIgEgACgCCDYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIIAn8gAC0AF0EBcQRAIAAoAhhBf0cEfyAAKAIYQX5GBUEBC0EBcQwBC0EAC0EARzoADiAAKAIIIAAoAgw2AqhAIAAoAgggACgCGDYCFCAAKAIIIAAtABdBAXE6ABAgACgCCEEAOgAMIAAoAghBADoADSAAKAIIQQA6AA8gACgCCCgCqEAoAgAhAQJ/AkAgACgCGEF/RwRAIAAoAhhBfkcNAQtBCAwBCyAAKAIYC0H//wNxIAAoAhAgACgCCCABEQEAIQEgACgCCCABNgKsQCABRQRAIAAoAggQNyAAKAIIEBUgAEEANgIcDAELIAAgACgCCDYCHAsgACgCHCEBIABBIGokACAFIAE2AhQgAUUEQCAFKAIoQQhqQQ5BABAUIAVBADYCLAwBCyAFIAUoAiggBSgCJEETIAUoAhQQZiIANgIQIABFBEAgBSgCFBCxASAFQQA2AiwMAQsgBSAFKAIQNgIsCyAFKAIsIQAgBUEwaiQAIAALzAEBAX8jAEEgayICIAA2AhggAiABOgAXIAICfwJAIAIoAhhBf0cEQCACKAIYQX5HDQELQQgMAQsgAigCGAs7AQ4gAkEANgIQAkADQCACKAIQQdSXASgCAEkEQCACKAIQQQxsQdiXAWovAQAgAi8BDkYEQCACLQAXQQFxBEAgAiACKAIQQQxsQdiXAWooAgQ2AhwMBAsgAiACKAIQQQxsQdiXAWooAgg2AhwMAwUgAiACKAIQQQFqNgIQDAILAAsLIAJBADYCHAsgAigCHAvkAQEBfyMAQSBrIgMkACADIAA6ABsgAyABNgIUIAMgAjYCECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2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mwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQA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HCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigoAgAoAhBFBEAgAUEANgIsDAQLCwwBCwsgASgCKEEANgK0LSABKAIkQQRGBEAgASgCKAJ/IAEoAigoAlxBAE4EQCABKAIoKAI4IAEoAigoAlxqDAELQQALIAEoAigoAmwgASgCKCgCXGtBARAoIAEoAiggASgCKCgCbDYCXCABKAIoKAIAEBwgASgCKCgCACgCEEUEQCABQQI2AiwMAgsgAUEDNgIsDAELIAEoAigoAqAtBEAgASgCKAJ/IAEoAigoAlxBAE4EQCABKAIoKAI4IAEoAigoAlxqDAELQQALIAEoAigoAmwgASgCKCgCXGtBABAoIAEoAiggASgCKCgCbDYCXCABKAIoKAIAEBwgASgCKCgCACgCEEUEQCABQQA2AiwMAgsLIAFBATYCLAsgASgCLCECIAFBMGokACACDAELIAAoAiwgACgCNCAAKAIsKAKEAUEMbEGA7wBqKAIIEQMACwsLNgIEAkAgACgCBEECRwRAIAAoAgRBA0cNAQsgACgCLEGaBTYCBAsCQCAAKAIEBEAgACgCBEECRw0BCyAAKAI4KAIQRQRAIAAoAixBfzYCKAsgAEEANgI8DAILIAAoAgRBAUYEQAJAIAAoAjRBAUYEQCAAKAIsIQIjAEEgayIBJAAgASACNgIcIAFBAzYCGAJAIAEoAhwoArwtQRAgASgCGGtKBEAgAUECNgIUIAEoAhwiAiACLwG4LSABKAIUQf//A3EgASgCHCgCvC10cjsBuC0gASgCHC8BuC1B/wFxIQMgASgCHCgCCCEEIAEoAhwiBigCFCECIAYgAkEBajYCFCACIARqIAM6AAAgASgCHC8BuC1BCHYhAyABKAIcKAIIIQQgASgCHCIGKAIUIQIgBiACQQFqNgIUIAIgBGogAzoAACABKAIcIAEoAhRB//8DcUEQIAEoAhwoArwta3U7AbgtIAEoAhwiAiACKAK8LSABKAIYQRBrajYCvC0MAQsgASgCHCICIAIvAbgtQQIgASgCHCgCvC10cjsBuC0gASgCHCICIAEoAhggAigCvC1qNgK8LQsgAUGS6AAvAQA2AhACQCABKAIcKAK8LUEQIAEoAhBrSgRAIAFBkOgALwEANgIMIAEoAhwiAiACLwG4LSABKAIMQf//A3EgASgCHCgCvC10cjsBuC0gASgCHC8BuC1B/wFxIQMgASgCHCgCCCEEIAEoAhwiBigCFCECIAYgAkEBajYCFCACIARqIAM6AAAgASgCHC8BuC1BCHYhAyABKAIcKAIIIQQgASgCHCIGKAIUIQIgBiACQQFqNgIUIAIgBGogAzoAACABKAIcIAEoAgxB//8DcUEQIAEoAhwoArwta3U7AbgtIAEoAhwiAiACKAK8LSABKAIQQRBrajYCvC0MAQsgASgCHCICIAIvAbgtQZDoAC8BACABKAIcKAK8LXRyOwG4LSABKAIcIgIgASgCECACKAK8LWo2ArwtCyABKAIcELsBIAFBIGokAAwBCyAAKAI0QQVHBEAgACgCLEEAQQBBABBcIAAoAjRBA0YEQCAAKAIsKAJEIAAoAiwoAkxBAWtBAXRqQQA7AQAgACgCLCgCREEAIAAoAiwoAkxBAWtBAXQQMiAAKAIsKAJ0RQRAIAAoAixBADYCbCAAKAIsQQA2AlwgACgCLEEANgK0LQsLCwsgACgCOBAcIAAoAjgoAhBFBEAgACgCLEF/NgIoIABBADYCPAwDCwsLIAAoAjRBBEcEQCAAQQA2AjwMAQsgACgCLCgCGEEATARAIABBATYCPAwBCwJAIAAoAiwoAhhBAkYEQCAAKAI4KAIwQf8BcSECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAjgoAjBBCHZB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCMEEQdkH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAI4KAIwQRh2IQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCCEH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAI4KAIIQQh2Qf8BcSECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAjgoAghBEHZB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCCEEYdiECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAADAELIAAoAiwgACgCOCgCMEEQdhBMIAAoAiwgACgCOCgCMEH//wNxEEwLIAAoAjgQHCAAKAIsKAIYQQBKBEAgACgCLEEAIAAoAiwoAhhrNgIYCyAAIAAoAiwoAhRFNgI8CyAAKAI8IQEgAEFAayQAIAUgATYCCAwBCyAFKAIMQRBqIQEjAEHgAGsiACQAIAAgATYCWCAAQQI2AlQCQAJAAkAgACgCWBBLDQAgACgCWCgCDEUNACAAKAJYKAIADQEgACgCWCgCBEUNAQsgAEF+NgJcDAELIAAgACgCWCgCHDYCUCAAKAJQKAIEQb/+AEYEQCAAKAJQQcD+ADYCBAsgACAAKAJYKAIMNgJIIAAgACgCWCgCEDYCQCAAIAAoAlgoAgA2AkwgACAAKAJYKAIENgJEIAAgACgCUCgCPDYCPCAAIAAoAlAoAkA2AjggACAAKAJENgI0IAAgACgCQDYCMCAAQQA2AhADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAJQKAIEQbT+AGsOHwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fCyAAKAJQKAIMRQRAIAAoAlBBwP4ANgIEDCELA0AgACgCOEEQSQRAIAAoAkRFDSEgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLAkAgACgCUCgCDEECcUUNACAAKAI8QZ+WAkcNACAAKAJQKAIoRQRAIAAoAlBBDzYCKAtBAEEAQQAQGiEBIAAoAlAgATYCHCAAIAAoAjw6AAwgACAAKAI8QQh2OgANIAAoAlAoAhwgAEEMakECEBohASAAKAJQIAE2AhwgAEEANgI8IABBADYCOCAAKAJQQbX+ADYCBAwhCyAAKAJQQQA2AhQgACgCUCgCJARAIAAoAlAoAiRBfzYCMAsCQCAAKAJQKAIMQQFxBEAgACgCPEH/AXFBCHQgACgCPEEIdmpBH3BFDQELIAAoAlhBmgw2AhggACgCUEHR/gA2AgQMIQsgACgCPEEPcUEIRwRAIAAoAlhBmw82AhggACgCUEHR/gA2AgQMIQsgACAAKAI8QQR2NgI8IAAgACgCOEEEazYCOCAAIAAoAjxBD3FBCGo2AhQgACgCUCgCKEUEQCAAKAJQIAAoAhQ2AigLAkAgACgCFEEPTQRAIAAoAhQgACgCUCgCKE0NAQsgACgCWEGTDTYCGCAAKAJQQdH+ADYCBAwhCyAAKAJQQQEgACgCFHQ2AhhBAEEAQQAQPiEBIAAoAlAgATYCHCAAKAJYIAE2AjAgACgCUEG9/gBBv/4AIAAoAjxBgARxGzYCBCAAQQA2AjwgAEEANgI4DCALA0AgACgCOEEQSQRAIAAoAkRFDSAgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAgACgCPDYCFCAAKAJQKAIUQf8BcUEIRwRAIAAoAlhBmw82AhggACgCUEHR/gA2AgQMIAsgACgCUCgCFEGAwANxBEAgACgCWEGgCTYCGCAAKAJQQdH+ADYCBAwgCyAAKAJQKAIkBEAgACgCUCgCJCAAKAI8QQh2QQFxNgIACwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACAAKAI8OgAMIAAgACgCPEEIdjoADSAAKAJQKAIcIABBDGpBAhAaIQEgACgCUCABNgIcCyAAQQA2AjwgAEEANgI4IAAoAlBBtv4ANgIECwNAIAAoAjhBIEkEQCAAKAJERQ0fIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAKAJQKAIkBEAgACgCUCgCJCAAKAI8NgIECwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACAAKAI8OgAMIAAgACgCPEEIdjoADSAAIAAoAjxBEHY6AA4gACAAKAI8QRh2OgAPIAAoAlAoAhwgAEEMakEEEBohASAAKAJQIAE2AhwLIABBADYCPCAAQQA2AjggACgCUEG3/gA2AgQLA0AgACgCOEEQSQRAIAAoAkRFDR4gACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAoAiQEQCAAKAJQKAIkIAAoAjxB/wFxNgIIIAAoAlAoAiQgACgCPEEIdjYCDAsCQCAAKAJQKAIUQYAEcUUNACAAKAJQKAIMQQRxRQ0AIAAgACgCPDoADCAAIAAoAjxBCHY6AA0gACgCUCgCHCAAQQxqQQIQGiEBIAAoAlAgATYCHAsgAEEANgI8IABBADYCOCAAKAJQQbj+ADYCBAsCQCAAKAJQKAIUQYAIcQRAA0AgACgCOEEQSQRAIAAoAkRFDR8gACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAgACgCPDYCRCAAKAJQKAIkBEAgACgCUCgCJCAAKAI8NgIUCwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACAAKAI8OgAMIAAgACgCPEEIdjoADSAAKAJQKAIcIABBDGpBAhAaIQEgACgCUCABNgIcCyAAQQA2AjwgAEEANgI4DAELIAAoAlAoAiQEQCAAKAJQKAIkQQA2AhALCyAAKAJQQbn+ADYCBAsgACgCUCgCFEGACHEEQCAAIAAoAlAoAkQ2AiwgACgCLCAAKAJESwRAIAAgACgCRDYCLAsgACgCLARAAkAgACgCUCgCJEUNACAAKAJQKAIkKAIQRQ0AIAAgACgCUCgCJCgCFCAAKAJQKAJEazYCFCAAKAJQKAIkKAIQIAAoAhRqIAAoAkwCfyAAKAJQKAIkKAIYIAAoAhQgACgCLGpJBEAgACgCUCgCJCgCGCAAKAIUawwBCyAAKAIsCxAZGgsCQCAAKAJQKAIUQYAEcUUNACAAKAJQKAIMQQRxRQ0AIAAoAlAoAhwgACgCTCAAKAIsEBohASAAKAJQIAE2AhwLIAAgACgCRCAAKAIsazYCRCAAIAAoAiwgACgCTGo2AkwgACgCUCIBIAEoAkQgACgCLGs2AkQLIAAoAlAoAkQNGwsgACgCUEEANgJEIAAoAlBBuv4ANgIECwJAIAAoAlAoAhRBgBBxBEAgACgCREUNGyAAQQA2AiwDQCAAKAJMIQEgACAAKAIsIgJBAWo2AiwgACABIAJqLQAANgIUAkAgACgCUCgCJEUNACAAKAJQKAIkKAIcRQ0AIAAoAlAoAkQgACgCUCgCJCgCIE8NACAAKAIUIQIgACgCUCgCJCgCHCEDIAAoAlAiBCgCRCEBIAQgAUEBajYCRCABIANqIAI6AAALIAAoAhQEfyAAKAIsIAAoAkRJBUEAC0EBcQ0ACwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACgCUCgCHCAAKAJMIAAoAiwQGiEBIAAoAlAgATYCHAsgACAAKAJEIAAoAixrNgJEIAAgACgCLCAAKAJMajYCTCAAKAIUDRsMAQsgACgCUCgCJARAIAAoAlAoAiRBADYCHAsLIAAoAlBBADYCRCAAKAJQQbv+ADYCBAsCQCAAKAJQKAIUQYAgcQRAIAAoAkRFDRogAEEANgIsA0AgACgCTCEBIAAgACgCLCICQQFqNgIsIAAgASACai0AADYCFAJAIAAoAlAoAiRFDQAgACgCUCgCJCgCJEUNACAAKAJQKAJEIAAoAlAoAiQoAihPDQAgACgCFCECIAAoAlAoAiQoAiQhAyAAKAJQIgQoAkQhASAEIAFBAWo2AkQgASADaiACOgAACyAAKAIUBH8gACgCLCAAKAJESQVBAAtBAXENAAsCQCAAKAJQKAIUQYAEcUUNACAAKAJQKAIMQQRxRQ0AIAAoAlAoAhwgACgCTCAAKAIsEBohASAAKAJQIAE2AhwLIAAgACgCRCAAKAIsazYCRCAAIAAoAiwgACgCTGo2AkwgACgCFA0aDAELIAAoAlAoAiQEQCAAKAJQKAIkQQA2AiQLCyAAKAJQQbz+ADYCBAsgACgCUCgCFEGABHEEQANAIAAoAjhBEEkEQCAAKAJERQ0aIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCwJAIAAoAlAoAgxBBHFFDQAgACgCPCAAKAJQKAIcQf//A3FGDQAgACgCWEH7DDYCGCAAKAJQQdH+ADYCBAwaCyAAQQA2AjwgAEEANgI4CyAAKAJQKAIkBEAgACgCUCgCJCAAKAJQKAIUQQl1QQFxNgIsIAAoAlAoAiRBATYCMAtBAEEAQQAQGiEBIAAoAlAgATYCHCAAKAJYIAE2AjAgACgCUEG//gA2AgQMGAsDQCAAKAI4QSBJBEAgACgCREUNGCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACgCUCAAKAI8QQh2QYD+A3EgACgCPEEYdmogACgCPEGA/gNxQQh0aiAAKAI8Qf8BcUEYdGoiATYCHCAAKAJYIAE2AjAgAEEANgI8IABBADYCOCAAKAJQQb7+ADYCBAsgACgCUCgCEEUEQCAAKAJYIAAoAkg2AgwgACgCWCAAKAJANgIQIAAoAlggACgCTDYCACAAKAJYIAAoAkQ2AgQgACgCUCAAKAI8NgI8IAAoAlAgACgCODYCQCAAQQI2AlwMGAtBAEEAQQAQPiEBIAAoAlAgATYCHCAAKAJYIAE2AjAgACgCUEG//gA2AgQLIAAoAlRBBUYNFCAAKAJUQQZGDRQLIAAoAlAoAggEQCAAIAAoAjwgACgCOEEHcXY2AjwgACAAKAI4IAAoAjhBB3FrNgI4IAAoAlBBzv4ANgIEDBULA0AgACgCOEEDSQRAIAAoAkRFDRUgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAgACgCPEEBcTYCCCAAIAAoAjxBAXY2AjwgACAAKAI4QQFrNgI4AkACQAJAAkACQCAAKAI8QQNxDgQAAQIDBAsgACgCUEHB/gA2AgQMAwsjAEEQayIBIAAoAlA2AgwgASgCDEGw8gA2AlAgASgCDEEJNgJYIAEoAgxBsIIBNgJUIAEoAgxBBTYCXCAAKAJQQcf+ADYCBCAAKAJUQQZGBEAgACAAKAI8QQJ2NgI8IAAgACgCOEECazYCOAwXCwwCCyAAKAJQQcT+ADYCBAwBCyAAKAJYQfANNgIYIAAoAlBB0f4ANgIECyAAIAAoAjxBAnY2AjwgACAAKAI4QQJrNgI4DBQLIAAgACgCPCAAKAI4QQdxdjYCPCAAIAAoAjggACgCOEEHcWs2AjgDQCAAKAI4QSBJBEAgACgCREUNFCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACgCPEH//wNxIAAoAjxBEHZB//8Dc0cEQCAAKAJYQaEKNgIYIAAoAlBB0f4ANgIEDBQLIAAoAlAgACgCPEH//wNxNgJEIABBADYCPCAAQQA2AjggACgCUEHC/gA2AgQgACgCVEEGRg0SCyAAKAJQQcP+ADYCBAsgACAAKAJQKAJENgIsIAAoAiwEQCAAKAIsIAAoAkRLBEAgACAAKAJENgIsCyAAKAIsIAAoAkBLBEAgACAAKAJANgIsCyAAKAIsRQ0RIAAoAkggACgCTCAAKAIsEBkaIAAgACgCRCAAKAIsazYCRCAAIAAoAiwgACgCTGo2AkwgACAAKAJAIAAoAixrNgJAIAAgACgCLCAAKAJIajYCSCAAKAJQIgEgASgCRCAAKAIsazYCRAwSCyAAKAJQQb/+ADYCBAwRCwNAIAAoAjhBDkkEQCAAKAJERQ0RIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAKAJQIAAoAjxBH3FBgQJqNgJkIAAgACgCPEEFdjYCPCAAIAAoAjhBBWs2AjggACgCUCAAKAI8QR9xQQFqNgJoIAAgACgCPEEFdjYCPCAAIAAoAjhBBWs2AjggACgCUCAAKAI8QQ9xQQRqNgJgIAAgACgCPEEEdjYCPCAAIAAoAjhBBGs2AjgCQCAAKAJQKAJkQZ4CTQRAIAAoAlAoAmhBHk0NAQsgACgCWEH9CTYCGCAAKAJQQdH+ADYCBAwRCyAAKAJQQQA2AmwgACgCUEHF/gA2AgQLA0AgACgCUCgCbCAAKAJQKAJgSQRAA0AgACgCOEEDSQRAIAAoAkRFDRIgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAjxBB3EhAiAAKAJQQfQAaiEDIAAoAlAiBCgCbCEBIAQgAUEBajYCbCABQQF0QYDyAGovAQBBAXQgA2ogAjsBACAAIAAoAjxBA3Y2AjwgACAAKAI4QQNrNgI4DAELCwNAIAAoAlAoAmxBE0kEQCAAKAJQQfQAaiECIAAoAlAiAygCbCEBIAMgAUEBajYCbCABQQF0QYDyAGovAQBBAXQgAmpBADsBAAwBCwsgACgCUCAAKAJQQbQKajYCcCAAKAJQIAAoAlAoAnA2AlAgACgCUEEHNgJYIABBACAAKAJQQfQAakETIAAoAlBB8ABqIAAoAlBB2ABqIAAoAlBB9AVqEHc2AhAgACgCEARAIAAoAlhBhwk2AhggACgCUEHR/gA2AgQMEAsgACgCUEEANgJsIAAoAlBBxv4ANgIECwNAAkAgACgCUCgCbCAAKAJQKAJkIAAoAlAoAmhqTw0AA0ACQCAAIAAoAlAoAlAgACgCPEEBIAAoAlAoAlh0QQFrcUECdGooAQA2ASAgAC0AISAAKAI4TQ0AIAAoAkRFDREgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLAkAgAC8BIkEQSQRAIAAgACgCPCAALQAhdjYCPCAAIAAoAjggAC0AIWs2AjggAC8BIiECIAAoAlBB9ABqIQMgACgCUCIEKAJsIQEgBCABQQFqNgJsIAFBAXQgA2ogAjsBAAwBCwJAIAAvASJBEEYEQANAIAAoAjggAC0AIUECakkEQCAAKAJERQ0UIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAIAAoAjwgAC0AIXY2AjwgACAAKAI4IAAtACFrNgI4IAAoAlAoAmxFBEAgACgCWEHPCTYCGCAAKAJQQdH+ADYCBAwECyAAIAAoAlAgACgCUCgCbEEBdGovAXI2AhQgACAAKAI8QQNxQQNqNgIsIAAgACgCPEECdjYCPCAAIAAoAjhBAms2AjgMAQsCQCAALwEiQRFGBEADQCAAKAI4IAAtACFBA2pJBEAgACgCREUNFSAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACAAKAI8IAAtACF2NgI8IAAgACgCOCAALQAhazYCOCAAQQA2AhQgACAAKAI8QQdxQQNqNgIsIAAgACgCPEEDdjYCPCAAIAAoAjhBA2s2AjgMAQsDQCAAKAI4IAAtACFBB2pJBEAgACgCREUNFCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACAAKAI8IAAtACF2NgI8IAAgACgCOCAALQAhazYCOCAAQQA2AhQgACAAKAI8Qf8AcUELajYCLCAAIAAoAjxBB3Y2AjwgACAAKAI4QQdrNgI4CwsgACgCUCgCbCAAKAIsaiAAKAJQKAJkIAAoAlAoAmhqSwRAIAAoAlhBzwk2AhggACgCUEHR/gA2AgQMAgsDQCAAIAAoAiwiAUEBazYCLCABBEAgACgCFCECIAAoAlBB9ABqIQMgACgCUCIEKAJsIQEgBCABQQFqNgJsIAFBAXQgA2ogAjsBAAwBCwsLDAELCyAAKAJQKAIEQdH+AEYNDiAAKAJQLwH0BEUEQCAAKAJYQfULNgIYIAAoAlBB0f4ANgIEDA8LIAAoAlAgACgCUEG0Cmo2AnAgACgCUCAAKAJQKAJwNgJQIAAoAlBBCTYCWCAAQQEgACgCUEH0AGogACgCUCgCZCAAKAJQQfAAaiAAKAJQQdgAaiAAKAJQQfQFahB3NgIQIAAoAhAEQCAAKAJYQesINgIYIAAoAlBB0f4ANgIEDA8LIAAoAlAgACgCUCgCcDYCVCAAKAJQQQY2AlwgAEECIAAoAlBB9ABqIAAoAlAoAmRBAXRqIAAoAlAoAmggACgCUEHwAGogACgCUEHcAGogACgCUEH0BWoQdzYCECAAKAIQBEAgACgCWEG5CTYCGCAAKAJQQdH+ADYCBAwPCyAAKAJQQcf+ADYCBCAAKAJUQQZGDQ0LIAAoAlBByP4ANgIECwJAIAAoAkRBBkkNACAAKAJAQYICSQ0AIAAoAlggACgCSDYCDCAAKAJYIAAoAkA2AhAgACgCWCAAKAJMNgIAIAAoAlggACgCRDYCBCAAKAJQIAAoAjw2AjwgACgCUCAAKAI4NgJAIAAoAjAhAiMAQeAAayIBIAAoAlg2AlwgASACNgJYIAEgASgCXCgCHDYCVCABIAEoAlwoAgA2AlAgASABKAJQIAEoAlwoAgRBBWtqNgJMIAEgASgCXCgCDDYCSCABIAEoAkggASgCWCABKAJcKAIQa2s2AkQgASABKAJIIAEoAlwoAhBBgQJrajYCQCABIAEoAlQoAiw2AjwgASABKAJUKAIwNgI4IAEgASgCVCgCNDYCNCABIAEoAlQoAjg2AjAgASABKAJUKAI8NgIsIAEgASgCVCgCQDYCKCABIAEoAlQoAlA2AiQgASABKAJUKAJUNgIgIAFBASABKAJUKAJYdEEBazYCHCABQQEgASgCVCgCXHRBAWs2AhgDQCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgi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ZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3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CADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";y4(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=s4(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,p4(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(E4("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` -`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` -`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=h4(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=EP.relative(EP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},w4={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",I=1024*1024;d||(I=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==I&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*I,L=(R+1)*I-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(I=h=1,h=this.getter(0).length,I=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=I,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!i4)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var I=f.node.contents;if(m>=I.length)return 0;var B=Math.min(I.length-m,d);if(I.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return u4(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=c4(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),p4(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Ixe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function IP(){if(IP.called)return;IP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){IP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var B4=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(B4.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=B4;y.staticInit();Wl&&(ft=e4,EP=require("path"),tt.staticInit());var ft,EP;if(Wl){Q4=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in w4)y[yP]=Q4(w4[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Q4,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!A4&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var x4=E((Dot,S4)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` -`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eE=/^[0-9a-fA-f]/,tE=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rE=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iE=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nE="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sE=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oE=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aE=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AE=[{line:1,column:1}],$s=0,zQ=[],we=0,lE;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Efe(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Ife(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Efe(C){return{type:"other",description:C}}function WM(C){var Q=AE[C],k;if(Q)return Q;for(k=C-1;!AE[k];)k--;for(Q=AE[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Ife(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===I?(C=I,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cE(){var C,Q,k,N,Z,Ee;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cE();N!==r;)k.push(N),N=cE();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ee=ZM(),Ee!==r)for(;Ee!==r;)Z.push(Ee),Ee=ZM();else Z=r;if(Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cE(),N!==r)for(;N!==r;)k.push(N),N=cE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uE(),N!==r)for(;N!==r;)k.push(N),N=uE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uE(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uE(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uE(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gE(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fE(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(Z=[Z,Ee],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ee,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ee,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eE.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tE)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ee;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($)),Ee!==r)for(;Ee!==r;)Z.push(Ee),De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rE(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iE(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.charCodeAt(w)===41?(Ee=F,w++):(Ee=r,we===0&&ve(D)),Ee!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ee;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.substr(w,2)===xr?(Ee=xr,w+=2):(Ee=r,we===0&&ve(KM)),Ee!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aE)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ee;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ee=Pe,w++):(Ee=r,we===0&&ve(qe)),Ee!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lE=n(),lE!==r&&w===t.length)return lE;throw lE!==r&&w{"use strict";function Eke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Eke(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function F4(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:F4(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};N4.exports=Lp});var M4=E((Vot,L4)=>{"use strict";var T4=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),T4.repeat(" ",e)+i+a+s+` -`+T4.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: -`+r)),i};L4.exports=kP});var Xr=E((_ot,O4)=>{"use strict";var K4=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new K4('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new K4('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}O4.exports=kke});var ec=E((Xot,U4)=>{"use strict";var H4=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();G4.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var q4=E(($ot,Y4)=>{"use strict";var Fke=Xr();Y4.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var W4=E((eat,J4)=>{"use strict";var Nke=Xr();J4.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=E((tat,z4)=>{"use strict";var Lke=ec();z4.exports=new Lke({explicit:[j4(),q4(),W4()]})});var _4=E((rat,V4)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}V4.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Z4=E((iat,X4)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}X4.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var ez=E((nat,$4)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var iz=E((sat,tz)=>{"use strict";var rz=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rz.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||rz.isNegativeZero(t))}tz.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=E((oat,nz)=>{"use strict";var sPe=ec();nz.exports=new sPe({include:[pw()],implicit:[_4(),Z4(),ez(),iz()]})});var RP=E((aat,sz)=>{"use strict";var oPe=ec();sz.exports=new oPe({include:[DP()]})});var lz=E((Aat,oz)=>{"use strict";var aPe=Xr(),az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:az.exec(t)!==null||Az.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=az.exec(t),e===null&&(e=Az.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}oz.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var uz=E((lat,cz)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}cz.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var hz=E((cat,gz)=>{"use strict";var tc;try{fz=require,tc=fz("buffer").Buffer}catch(t){}var fz,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}gz.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var dz=E((uat,pz)=>{"use strict";var mPe=Xr(),EPe=Object.prototype.hasOwnProperty,IPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}Ez.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=E((hat,yz)=>{"use strict";var DPe=ec();yz.exports=new DPe({include:[RP()],implicit:[lz(),uz()],explicit:[hz(),dz(),mz(),Iz()]})});var Bz=E((pat,wz)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}wz.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var bz=E((dat,Qz)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Qz.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var xz=E((Cat,vz)=>{"use strict";var dw;try{Sz=require,dw=Sz("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var Sz,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}vz.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=E((mat,kz)=>{"use strict";var Pz=ec();kz.exports=Pz.DEFAULT=new Pz({include:[og()],explicit:[Bz(),bz(),xz()]})});var Vz=E((Eat,Mp)=>{"use strict";var Ba=$l(),Dz=ng(),WPe=M4(),Rz=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,Fz=2,Nz=3,mw=4,NP=1,VPe=2,Lz=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,Tz=/^(?:!|!!|![a-z\-]+!)$/i,Mz=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Oz(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function Kz(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Uz=new Array(256),Hz=new Array(256);for(var Ag=0;Ag<256;Ag++)Uz[Ag]=Kz(Ag)?1:0,Hz[Ag]=Kz(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Gz(t,e){return new Dz(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw Gz(t,e)}function Ew(t,e){t.onWarning&&t.onWarning.call(null,Gz(t,e))}var jz={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Ew(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],Tz.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),Mz.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` -`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Iw(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&Uz[a])t.result+=Hz[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?Lz:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(jz,i)?jz[i](t,i,n):Ew(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Ew(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Iw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_z=Object.prototype.toString,Xz=Object.prototype.hasOwnProperty,mDe=9,Up=10,EDe=13,IDe=32,yDe=33,wDe=34,Zz=35,BDe=37,QDe=38,bDe=39,vDe=42,$z=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` -`,n=i&&(t[t.length-2]===` -`||t===` -`),s=n?"+":i?"":"-";return r+s+` -`}function h5(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` -`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` -`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+t.slice(n,s),n=s+1),o=a;return l+=` -`,t.length-n>e&&o>n?l+=t.slice(n,o)+` -`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_z.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=Vz(),E5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=E5.dump;Qr.exports.safeDump=E5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=E((wat,y5)=>{"use strict";var _De=I5();y5.exports=_De});var Q5=E((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aE},A=function(x){return x.length===(Zc+1)*aE},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` -`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` -`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` -`,"\r"],!1,!1),Uf=`\r -`,OQ=fr(`\r -`,!1),KQ=` -`,_m=fr(` -`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eE([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eE(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tE(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nE(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rE(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iE(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rE(),le!==r?(xe=ol(),xe!==r?(Qe=iE(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rE(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iE(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sE(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nE(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sE(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oE(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oE(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aE=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=E((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=E(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=E((eAt,Z5)=>{function ERe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var IRe=Array.isArray;e6.exports=IRe});var n6=E((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=E((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=E((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=E((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=E((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=E((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=E((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=E((lAt,E6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}I6.exports=qRe});var VP=E((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=E((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=E((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=E((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=E((pAt,L6)=>{var EFe=y6(),IFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=IFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?EFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=E((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=E((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=E((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=E((EAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=E((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,I=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,I].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,I].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,I].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=E((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=E((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),E9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),I9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[I9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[I9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[E9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[E9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=E((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=E(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=E(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=E((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=E(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=E((Elt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ED(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ED(e,r+476,12,this.atime)||this.needPax,this.needPax=ED(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ED=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=E((Ilt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` -`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=E((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=E((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ID=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ENe=new Map(_w.map((t,e)=>[t,ID[e]])),INe=new Map(ID.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(ENe.get(r)),t),decode:t=>ID.reduce((e,r)=>e.split(r).join(INe.get(r)),t)}});var V9=E((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=E((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,eV=Symbol("process"),tV=Symbol("file"),rV=Symbol("directory"),wD=Symbol("symlink"),iV=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),nV=Vw(),wNe=yD(),sV=V9(),eB=nV(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[eV]()}[eV](){switch(this.type){case"File":return this[tV]();case"Directory":return this[rV]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return sV(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[rV](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[iV](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[tV](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[iV](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),oV=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=nV(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return sV(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=oV;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=E((Plt,aV)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),AV=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Eg=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),lV=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),cV=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),uV=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),gV=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),fV=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[gV](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[cV](e):this[nB](e),this.flowing}[cV](e){let r=fV.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=fV.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[uV](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Eg]&&this[Eg].entry&&this[Eg].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),hV=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[gV](n)})}};MD.Sync=hV;aV.exports=MD});var bg=E(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Ig=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),pV=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ec=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),dV=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),CV=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[dV]=r.readSize||16*1024*1024,this[LA]=!1,this[CV]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[CV],this[Ig]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[dV],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ec],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ec]!==null&&(this[Ec]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[pV]?(this[pV]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ec],(r,i)=>this[mc](r,i))}}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},EV=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Ig]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ec]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=mV;sd.WriteStream=YD;sd.WriteStreamSync=EV});var ld=E((Llt,IV)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),yV=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ic=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),wV=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),BV=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),QV=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),bV=Symbol("consumeMeta"),vV=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),EB=Symbol("sawEOF"),jNe=t=>!0;IV.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ic]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[EB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[vV](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[EB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ic]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[wV](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[wV](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ic],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ic]=null,i.end()),s.length}[bV](e,r){let i=this[Ic],n=this[WD](e,r);return this[Ic]||this[BV](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[BV](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=yV.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=yV.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[QV]&&!this[MA]&&!this[dB]){this[QV]=!0;let e=this[Ic];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[EB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[EB];)switch(this[cs]){case"begin":case"header":this[vV](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[bV](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),xV=ld(),vg=require("fs"),qNe=bg(),kV=require("path"),Tlt=SV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):PV(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||kV.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(kV.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=PV(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new xV(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},PV=t=>new xV(t)});var TV=E((Ult,DV)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),RV=bg(),FV=IB(),NV=require("path"),Klt=DV.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new RV.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),LV(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new RV.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},LV=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?FV({file:NV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return FV({file:NV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return LV(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=E((jlt,MV)=>{"use strict";var tLe=fg(),OV=AB(),Hlt=ld(),gs=require("fs"),KV=bg(),UV=IB(),HV=require("path"),GV=Cg(),Glt=MV.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new OV.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new KV.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new OV(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new GV(f);if(!m.cksumValid)return c(null,u);let I=512*Math.ceil(m.size/512);if(u+I+512>a||(u+=I+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new KV.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),jV(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?UV({file:HV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},jV=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return UV({file:HV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>jV(t,e));t.add(r)}t.end()}});var qV=E((qlt,YV)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=YV.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var zV=E((Jlt,JV)=>{var{promisify:WV}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=WV(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=WV(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};JV.exports=lLe});var _V=E((Wlt,VV)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};VV.exports=fLe});var t7=E((zlt,XV)=>{var{dirname:ZV}=require("path"),$V=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$V(t,ZV(e),e):void 0),e7=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?e7(t,ZV(e),e):void 0}};XV.exports={findMade:$V,findMadeSync:e7}});var eR=E((Vlt,r7)=>{var{dirname:i7}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=i7(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=i7(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};r7.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var o7=E((_lt,n7)=>{var{dirname:s7}=require("path"),{findMade:hLe,findMadeSync:pLe}=t7(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,s7(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ELe=(t,e)=>{if(e.recursive=!0,s7(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};n7.exports={mkdirpNative:mLe,mkdirpNativeSync:ELe}});var c7=E((Xlt,a7)=>{var A7=require("fs"),ILe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ILe.replace(/^v/,"").split("."),l7=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=l7?t=>t.mkdir===A7.mkdir:()=>!1,wLe=l7?t=>t.mkdirSync===A7.mkdirSync:()=>!1;a7.exports={useNative:yLe,useNativeSync:wLe}});var d7=E((Zlt,u7)=>{var Sg=zV(),xg=_V(),{mkdirpNative:g7,mkdirpNativeSync:f7}=o7(),{mkdirpManual:h7,mkdirpManualSync:p7}=eR(),{useNative:BLe,useNativeSync:QLe}=c7(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?g7(t,e):h7(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?f7(t,e):p7(t,e));kg.sync=bLe;kg.native=(t,e)=>g7(xg(t),Sg(e));kg.manual=(t,e)=>h7(xg(t),Sg(e));kg.nativeSync=(t,e)=>f7(xg(t),Sg(e));kg.manualSync=(t,e)=>p7(xg(t),Sg(e));u7.exports=kg});var B7=E(($lt,C7)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",m7=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),E7=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=m7?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=m7?(t,e,r)=>{try{return E7(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>E7(t,e,r),PLe=process.version,I7=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(I7=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},y7=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,y7(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{I7(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>y7(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&w7(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},w7=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};C7.exports=iR;iR.sync=w7});var S7=E((rct,nR)=>{"use strict";var Q7=d7(),hs=require("fs"),BB=require("path"),b7=B7(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,I)=>{m?r(m):(g.set(t,!0),I&&l?b7(I,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,I)=>{(m||!I.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return Q7(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,v7(c,e,r,i,n,s,o,a))},v7=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,v7(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&b7.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,I="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){I=B.code}finally{if(!m)throw new cd(t,I)}f();return}if(l)return f(Q7.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),I=g;m&&(I+="/"+m);m=p.shift())if(!u.get(I))try{hs.mkdirSync(I,i),d=d||I,u.set(I,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(I);if(b.isDirectory()){u.set(I,!0);continue}else if(c){hs.unlinkSync(I),hs.mkdirSync(I,i),d=d||I,u.set(I,!0);continue}else if(b.isSymbolicLink())return new sR(I,I+"/"+p.join("/"))}return f(d)}});var P7=E((ict,x7)=>{var k7=require("assert");x7.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);k7.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);k7(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var F7=E((nct,D7)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:R7=0}=LLe.constants,KLe=NLe&&!!R7,ULe=512*1024,HLe=R7|MLe|TLe|OLe;D7.exports=KLe?t=>t"w"});var hR=E((Act,N7)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=S7(),oct=oR.sync,L7=yD(),qLe=P7(),T7=Symbol("onEntry"),aR=Symbol("checkFs"),M7=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),O7=Symbol("symlink"),K7=Symbol("hardlink"),U7=Symbol("unsupported"),act=Symbol("unknown"),H7=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),G7=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),j7=require("crypto"),Y7=F7(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},q7=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[T7](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[H7](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?L7.encode(e.path):r.root+L7.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[T7](e){if(!this[H7](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[U7](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return q7(this.uid,e.uid,this.processUid)}[fd](e){return q7(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:Y7(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[U7](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[O7](e,r){this[bB](e,e.linkpath,"symlink",r)}[K7](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[G7](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[G7]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[M7](e,i))}[M7](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[K7](r,i);case"SymbolicLink":return this[O7](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},J7=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,Y7(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=J7;N7.exports=xB});var X7=E((cct,W7)=>{"use strict";var zLe=fg(),kB=hR(),z7=require("fs"),V7=bg(),_7=require("path"),lct=W7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=z7.statSync(r),o=t.maxReadSize||16*1024*1024;new V7.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),z7.stat(n,(l,c)=>{if(l)a(l);else{let u=new V7.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var Z7=E($r=>{"use strict";$r.c=$r.create=TV();$r.r=$r.replace=XD();$r.t=$r.list=IB();$r.u=$r.update=qV();$r.x=$r.extract=X7();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=E((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $7(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=E((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=E(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=E(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=E(ER=>{"use strict";Object.defineProperty(ER,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};ER.default=l_});var p_=E((Ect,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),yR)});var y_=E((wR,I_)=>{(function(t,e){typeof wR=="object"?I_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(I,B){B>0&&(g+=(I[1]?" ":"\u2502")+" "),!p&&I[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(I){h=++f===m.length,r(I,s[I],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var x_=E((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=E(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,I=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;I&&(g[d-1]=void 0);var R=I&&I.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=E(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=E(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=E(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffSentences=MTe;Ed.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Ed.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=E(Id=>{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffCss=UTe;Id.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Id.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=E(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=E(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=E(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` -`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=E(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return EMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return IMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var EMe=xMe(Na()),IMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=E((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=E((Agt,EX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}EX.exports=NMe});var zB=E((lgt,IX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}IX.exports=HMe});var wX=E((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=E((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=E((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=E((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=E((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=E((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=E((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=E((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=E((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=E((Egt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=E((Igt,UX)=>{var EOe=Qd(),IOe=Object.prototype,yOe=IOe.hasOwnProperty;function wOe(t){var e=this.__data__;return EOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=E((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=E((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=E((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=E((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=E((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=E((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=E((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=E((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=E((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=E((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=E((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=E((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=E((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=E((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=E((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var EZ=E((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=E((Kgt,IZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=EZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=E((Hgt,QZ)=>{var EKe=BZ(),IKe=500;function yKe(t){var e=EKe(t,function(i){return r.size===IKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=E((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=E((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=E((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=E((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=E((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=E((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=E((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=E(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=E((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=E((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=E((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),E1e=Sc();function I1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=E((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=E((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=E((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=E((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=E((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=E((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=E((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=E((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var E$=E((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=E((pft,I$)=>{var W1e=C$(),z1e=E$(),V1e=z1e(W1e);I$.exports=V1e});var w$=E((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=E((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=E((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=E(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=E(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var EUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=EUe});var z$=E((gpt,W$)=>{var IUe=Object.prototype,yUe=IUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=E((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=E(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=E(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var EF=E(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=E(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(EF());function $$(t){return t&&t.__esModule?t:{default:t}}function IF(){return IF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=E(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=E((Ipt,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=E((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=E((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=E((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",E2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[E2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function I2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=I2e});var A0=E((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=E((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=E((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=E((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=E((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=E((xpt,Eee)=>{function K2e(t,e){return function(r){return t(e(r))}}Eee.exports=K2e});var yee=E((kpt,Iee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Iee.exports=H2e});var Bee=E((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=E((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=E((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=E((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=E((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=E((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=E((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=E((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=E((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=E((Upt,Oee)=>{var EHe="__lodash_hash_undefined__";function IHe(t){return this.__data__.set(t,EHe),this}Oee.exports=IHe});var Hee=E((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=E((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=E((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=E((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=E((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=E((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=E((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=E((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=E(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=E((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=E((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var EGe=UA(),IGe=Ks(),yGe=EGe(IGe,"DataView");pte.exports=yGe});var mte=E((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ite=E((ndt,Ete)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ete.exports=SGe});var wte=E((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=E((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ite(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=E((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=E((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=E((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=E((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=E((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=E((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=E((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=E((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=E((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=E((Cdt,ere)=>{var Eje=xd();function Ije(t){return function(e){return Eje(e,t)}}ere.exports=Ije});var ire=E((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=E((Edt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=E((Idt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=E((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=E(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function E0(){return E0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function I(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(E0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),I),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=E0({path:s,parent:d,type:g,createError:B,resolve:I,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=E(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=E(I0=>{"use strict";Object.defineProperty(I0,"__esModule",{value:!0});I0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};I0.default=y0});var Ma=E(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(EF()),mre=Ta(xc()),Ere=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". - -attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=E(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ire;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ire(){return new ZF}Ire.prototype=ZF.prototype});var Zg=E(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=E(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=E(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=E(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=E($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var EYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=EYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=E(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var IYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,IYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=E((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=E((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=E((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=E((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=E((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=E((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=E((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=E((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Eqe=pie(),Iqe="['\u2019]",yqe=RegExp(Iqe,"g");function wqe(t){return function(e){return Cqe(Eqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=E((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Iie=E((Ydt,Eie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Eie.exports=Sqe});var wie=E((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=E((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=E(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=E($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Iie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,I=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!I?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,I=this.fields[h];if(I&&"validate"in I){I.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=E(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(I,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=E(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=E(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=E(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=E((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",EJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=EJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=E((fCt,hN)=>{"use strict";var IJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!IJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=E(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` -`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=E(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=E((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` -`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=E((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=E((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=E((ECt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=E((ICt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),EN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});EN.merge=t=>{let e=RJe.merge({},Ka.symbols,EN,t.symbols);return delete e.merge,e};gne.exports=EN});var pne=E((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ine=E((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),IN=Mi(),Ys=Cne.exports=dne,Ir="[",Ene="\x07",yN=!1,HA=Ys.code={bell:Ene,beep:Ene,beginning:`${Ir}G`,down:`${Ir}J`,esc:Ir,getPosition:`${Ir}6n`,hide:`${Ir}?25l`,line:`${Ir}2K`,lineEnd:`${Ir}K`,lineStart:`${Ir}1K`,restorePosition:Ir+(mne?"8":"u"),savePosition:Ir+(mne?"7":"s"),screen:`${Ir}2J`,show:`${Ir}?25h`,up:`${Ir}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Ir}${t}C`,backward:(t=1)=>`${Ir}${t}D`,nextLine:(t=1)=>`${Ir}E`.repeat(t),prevLine:(t=1)=>`${Ir}F`.repeat(t),up:(t=1)=>t?`${Ir}${t}A`:"",down:(t=1)=>t?`${Ir}${t}B`:"",right:(t=1)=>t?`${Ir}${t}C`:"",left:(t=1)=>t?`${Ir}${t}D`:"",to(t,e){return e?`${Ir}${e+1};${t+1}H`:`${Ir}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=IN.isPrimitive(i)?String(i):"",n=IN.isPrimitive(n)?String(n):"",a=IN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=E((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ine(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` -`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=E((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=E((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=E((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` -`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=E((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=E((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=E((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),I=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+I,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=E((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=E((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=E((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=E((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=E((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=E((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};Xne.exports=Zne});var ese=E((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=E((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=E((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=E((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=E((KCt,cse)=>{"use strict";var E3e=GA(),use=class extends E3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=E((UCt,fse)=>{"use strict";var I3e=Mc(),hse=class extends I3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=E((HCt,pse)=>{pse.exports=PN()});var Ese=E((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=E((jCt,Ise)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` -`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ise.exports=wse});var Sse=E((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===I.key);I.field=n.find(R=>R.name===I.key),b||(b=new vse(I),a.push(b)),b.lines.push(I.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` -`).map(B=>" "+B),m=s.length,I=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&I++;return g.completed=(I/m*100).toFixed(0),g.output=d.join(` -`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=E((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` -`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let I=[u,c,h,m,g.trim()];this.write(I.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` -`).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=E((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=E((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),I=()=>[u,f].filter(Boolean).join(" "),B=()=>[I(),p,m," "].filter(Boolean).join(` -`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=E((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=E((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=E(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ese());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=E((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=E(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=E((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=E((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=E((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=E((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Eoe=E((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=E((hC,cf)=>{var oWe=Ks(),Ioe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Ioe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Ioe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=E((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=E((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=E((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),EWe=Object.getOwnPropertySymbols,IWe=EWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=IWe});var Poe=E(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=E((eEt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=E((tEt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=E((rEt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=E((iEt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=E((nEt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=E((sEt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=E((oEt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=E((aEt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=E((AEt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=E((lEt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=E((cEt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function E8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=E8e});var nae=E((uEt,tae)=>{var I8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):I8e;tae.exports=w8e});var oae=E((gEt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=E((fEt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=E((hEt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Eoe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,e4e=4,gae="[object Arguments]",t4e="[object Array]",r4e="[object Boolean]",i4e="[object Date]",n4e="[object Error]",fae="[object Function]",s4e="[object GeneratorFunction]",o4e="[object Map]",a4e="[object Number]",hae="[object Object]",A4e="[object RegExp]",l4e="[object Set]",c4e="[object String]",u4e="[object Symbol]",g4e="[object WeakMap]",f4e="[object ArrayBuffer]",h4e="[object DataView]",p4e="[object Float32Array]",d4e="[object Float64Array]",C4e="[object Int8Array]",m4e="[object Int16Array]",E4e="[object Int32Array]",I4e="[object Uint8Array]",y4e="[object Uint8ClampedArray]",w4e="[object Uint16Array]",B4e="[object Uint32Array]",rr={};rr[gae]=rr[t4e]=rr[f4e]=rr[h4e]=rr[r4e]=rr[i4e]=rr[p4e]=rr[d4e]=rr[C4e]=rr[m4e]=rr[E4e]=rr[o4e]=rr[a4e]=rr[hae]=rr[A4e]=rr[l4e]=rr[c4e]=rr[u4e]=rr[I4e]=rr[y4e]=rr[w4e]=rr[B4e]=!0;rr[n4e]=rr[fae]=rr[g4e]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&e4e;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==s4e;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,I){o.set(I,j0(m,e,r,I,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,I){d&&(I=m,m=t[I]),R8e(o,I,j0(m,e,r,I,t,s))}),o}uae.exports=j0});var qN=E((pEt,dae)=>{var Q4e=pae(),b4e=1,v4e=4;function S4e(t){return Q4e(t,b4e|v4e)}dae.exports=S4e});var mae=E((dEt,Cae)=>{var x4e=tF();function k4e(t,e,r){return t==null?t:x4e(t,e,r)}Cae.exports=k4e});var Qae=E((wEt,Bae)=>{function P4e(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=P4e});var vae=E((BEt,bae)=>{var D4e=xd(),R4e=zP();function F4e(t,e){return e.length<2?t:D4e(t,R4e(e,0,-1))}bae.exports=F4e});var xae=E((QEt,Sae)=>{var N4e=Gg(),L4e=Qae(),T4e=vae(),M4e=Sc();function O4e(t,e){return e=N4e(e,t),t=T4e(t,e),t==null||delete t[M4e(L4e(e))]}Sae.exports=O4e});var Pae=E((bEt,kae)=>{var K4e=xae();function U4e(t,e){return t==null?!0:K4e(t,e)}kae.exports=U4e});var Kae=E((tIt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.1",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.5.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=E((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=E((xBt,bAe)=>{"use strict";var sze=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=sze(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var oze=iL(),aze=nL(),Aze=require("querystring");function lze(t){t=(t||"").trim();var e={protocols:oze(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(aze(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=Aze.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=lze});var DAe=E((PBt,kAe)=>{"use strict";var cze=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new cze(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=E((DBt,RAe)=>{"use strict";var uze=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gze=xAe(),fze=DAe();function hze(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":uze(e))!=="object"&&(e={stripFragment:!1}),t=fze(t,e));var r=gze(t);return r}RAe.exports=hze});var TAe=E((RBt,NAe)=>{"use strict";var pze=FAe(),LAe=nL();function dze(t){var e=pze(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=dze});var OAe=E((FBt,MAe)=>{"use strict";var Cze=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=Cze(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?mze(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function mze(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=E((Obt,ole)=>{var Mze=jg(),Oze=Kg();function Kze(t,e,r){(r!==void 0&&!Oze(t[e],r)||r===void 0&&!(e in t))&&Mze(t,e,r)}ole.exports=Kze});var Ale=E((Kbt,ale)=>{var Uze=Hd(),Hze=Qo();function Gze(t){return Hze(t)&&Uze(t)}ale.exports=Gze});var ule=E((Ubt,lle)=>{var jze=Ac(),Yze=H0(),qze=Qo(),Jze="[object Object]",Wze=Function.prototype,zze=Object.prototype,cle=Wze.toString,Vze=zze.hasOwnProperty,_ze=cle.call(Object);function Xze(t){if(!qze(t)||jze(t)!=Jze)return!1;var e=Yze(t);if(e===null)return!0;var r=Vze.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_ze}lle.exports=Xze});var LL=E((Hbt,gle)=>{function Zze(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Zze});var hle=E((Gbt,fle)=>{var $ze=Af(),e5e=lf();function t5e(t){return $ze(t,e5e(t))}fle.exports=t5e});var Ile=E((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ele=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ele(t,r),l=Ele(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=E((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ile(),m5e=Gs(),E5e=lf(),I5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(I5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},E5e)}yle.exports=wle});var ble=E((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=E((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=E((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=E(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),VL)});var $le=E(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),eT)});var gce=E((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=E((Dxt,fce)=>{"use strict";lT.ifExists=E6e;var mf=require("util"),Es=require("path"),hce=gce(),I6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function E6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Es.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(I6e);if(!n){let s=Es.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Es.relative(Es.dirname(e),t).split("/").join("\\"),s=Es.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r -`:"";return o?g+=`@IF EXIST ${o} (\r - ${o} ${l} ${n} ${u}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${a} ${l} ${n} ${u}%*\r -)\r -`:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function P6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,g=r.nodePath?`export NODE_PATH="${l}" -`:"";return s?u+=`${g}if [ -x ${s} ]; then - exec ${s} ${a} ${i} ${c}"$@" -else - exec ${n} ${a} ${i} ${c}"$@" -fi -`:u+=`${g}${n} ${a} ${i} ${c}"$@" -exit $? -`,u}function D6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${u}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(h+=` else { - $env:NODE_PATH="${g}" -}`),o?h+=` -$ret=0 -if (Test-Path ${o}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${o} ${l} ${i} ${f}$args - } else { - & ${o} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args - } else { - & ${s} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:h+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args -} else { - & ${s} ${l} ${i} ${f}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Es.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=E((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=E((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=E((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=E((dPt,Hce)=>{"use strict";var Gce={};function Is(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Is("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Is("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Is("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Is("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Is("ERR_STREAM_PREMATURE_CLOSE","Premature close");Is("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Is("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Is("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Is("ERR_STREAM_WRITE_AFTER_END","write after end");Is("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Is("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Is("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=E((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=E((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=E((EPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=E((IPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=E((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var If;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function E9e(t){return sQ.from(t)}function I9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){If=If||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof If),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){If=If||Yc();var e=this instanceof If;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&I9e(t);return s&&!sQ.isBuffer(t)&&(t=E9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=E(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=eVe;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function iVe(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function nVe(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=nVe(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function rVe(t,e){var r=iVe(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function tVe(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function eVe(t){return t&&t.length?this.write(t):""}});var cQ=E((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function sVe(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var AVe=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function lVe(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function cVe(t){process.nextTick(lVe,t)}function uVe(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var gVe=Object.getPrototypeOf(function(){}),fVe=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(uVe(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),gVe),hVe=function(e){var r,i=Object.create(fVe,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,AVe(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",cVe.bind(null,i)),i};cue.exports=hVe});var pue=E((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function pVe(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function CVe(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,IVe=global.Uint8Array||function(){};function yVe(t){return fQ.from(t)}function wVe(t){return fQ.isBuffer(t)||t instanceof IVe}var VT=require("util"),Et;VT&&VT.debuglog?Et=VT.debuglog("stream"):Et=function(){};var BVe=Oce(),_T=FT(),QVe=NT(),bVe=QVe.getHighWaterMark,hQ=VA().codes,vVe=hQ.ERR_INVALID_ARG_TYPE,SVe=hQ.ERR_STREAM_PUSH_AFTER_EOF,xVe=hQ.ERR_METHOD_NOT_IMPLEMENTED,kVe=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function PVe(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=bVe(this,t,"readableHighWaterMark",r),this.buffer=new BVe,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Eue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Eue(this,t,null,!0,!1)};function Eue(t,e,r,i,n){Et("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,RVe(t,s);else{var o;if(n||(o=DVe(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=yVe(e)),i)s.endEmitted?sm(t,new kVe):eM(t,s,e,!0);else if(s.ended)sm(t,new SVe);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Iue?t=Iue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=FVe(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){Et("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return Et("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;Et("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function RVe(t,e){if(Et("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;Et("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(Et("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;Et("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(NVe,t,e))}function NVe(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(Et("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){Et("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}PVe(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){Et("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){Et("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(Et("pipe resume"),r.resume()),t};function LVe(t){return function(){var r=t._readableState;Et("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,Et("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(TVe,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function TVe(t){Et("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(Et("resume"),t.flowing=!t.readableListening,MVe(this,t)),t.paused=!1,this};function MVe(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(OVe,t,e))}function OVe(t,e){Et("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return Et("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Et("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(Et("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(Et("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(Et("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){Et("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;Et("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(KVe,e,t))}function KVe(t,e){if(Et("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,UVe=dQ.ERR_METHOD_NOT_IMPLEMENTED,HVe=dQ.ERR_MULTIPLE_CALLBACK,GVe=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,jVe=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function YVe(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new HVe);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=E((DPt,Due)=>{"use strict";var sM;function JVe(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,WVe=Rue.ERR_MISSING_ARGS,zVe=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function VVe(t){return t.setHeader&&typeof t.abort=="function"}function _Ve(t,e,r,i){i=JVe(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,VVe(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new zVe("pipe"))}}}function Nue(t){t()}function XVe(t,e){return t.pipe(e)}function ZVe(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $Ve(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _Ve(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(XVe)}Due.exports=$Ve});var bf=E((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=E((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,e7e=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}e7e(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=E(vf=>{var t7e=Buffer.alloc,r7e="0000000000000000000",i7e="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),n7e=Buffer.from("00","binary"),s7e=Buffer.from("ustar ","binary"),o7e=Buffer.from(" \0","binary"),a7e=parseInt("7777",8),cm=257,aM=263,A7e=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},l7e=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},c7e=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?i7e.slice(0,e)+" ":r7e.slice(0,e-t.length)+t+" "};function u7e(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` -`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` -`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&a7e,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+c7e(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),n7e.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=l7e(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(s7e.compare(t,cm,cm+6)===0&&o7e.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=E((LPt,Yue)=>{var que=require("util"),g7e=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},f7e=function(t,e){var r=new EQ(t,e);return r.end(),r},h7e=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},EQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(EQ,Wue);EQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=g7e(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=h7e(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,f7e(e,f),n);return}e._stream=new EQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=E((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=E((MPt,$ue)=>{var xf=Zue(),ege=tk(),IQ=_A(),p7e=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,d7e=require("string_decoder").StringDecoder,yQ=lM(),C7e=parseInt("755",8),m7e=parseInt("644",8),rge=p7e(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function E7e(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};IQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new d7e("utf-8"),this._destroyed=!1};IQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};IQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};IQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=E7e(t.mode)),t.mode||(t.mode=t.type==="directory"?C7e:m7e),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=E(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=E((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):R7e(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function F7e(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))F7e(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=N7e;function N7e(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function R7e(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ige=E((aDt,Ko)=>{"use strict";var hm=require("crypto"),L7e=Cge(),T7e=require("stream").Transform,mge=["sha256","sha384","sha512"],M7e=/^[a-z0-9+/]+(?:=?=?)$/i,O7e=/^([^-]+)-([^?]+)([?\S*]*)$/,K7e=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,U7e=/^[\x21-\x7E]+$/,on=L7e({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>H7e},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?K7e:O7e);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(M7e)&&(this.options||[]).every(i=>i.match(U7e))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return EM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],EM(pm(r,e),e)}else return EM(pm(t,e),e)}function EM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=G7e;function G7e(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=j7e;function j7e(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=Y7e;function Y7e(t,e){e=on(e);let r=e.Promise||Promise,i=IM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=q7e;function q7e(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=J7e;function J7e(t,e,r){r=on(r);let i=r.Promise||Promise,n=IM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=IM;function IM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new T7e({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=W7e;function W7e(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var z7e=new Set(hm.getHashes()),Ege=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>z7e.has(t));function H7e(t,e){return Ege.indexOf(t.toLowerCase())>=Ege.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bE,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SE,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wE,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pE,convertToBigIntStats:()=>dE,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pE(Zf())}function pE(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dE(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mE=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CE(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var EE=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:EE,atime:EE}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:EE,atime:EE}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mE.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function IE(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yE(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var EO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wE(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new EO(e,n,i)}var IO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return IO.EOL;let r=e.filter(n=>n===`\r -`).length,i=e.length-r;return r>i?`\r -`:` -`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pE(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BE=new WeakMap;function QE(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BE.get(t);typeof l=="undefined"&&BE.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BE.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BE.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw IE("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wE(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw IE(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),I=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:I,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dE(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),I=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:I,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dE(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw IE(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yE(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yE(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yE(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QE(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bE=gb;bE.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QE(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vE=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vE.URL?(0,vE.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SE(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} - -${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KE(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DEe,convertMapsToIndexableObjects:()=>aI,dynamicRequire:()=>mu,escapeRegExp:()=>SEe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>REe,isTaggedYarnVersion:()=>vEe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kEe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xEe});var vh={};it(vh,{Builtins:()=>Iv,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Eh=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UE=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Ih=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${lv(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HE(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HE(e[0],!0)}`):new me(`${t}: -${e.map(r=>` -- ${HE(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Ih(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Eh)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let I of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Ih(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Eh||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jE(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YE[t[0]]:YE[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YE={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UE.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UE.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UE.test(e)};YE.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Eh,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Ev={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` -`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} -`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${Ev.header("Options")} -`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` -`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(r).header("Details")} -`,a+=` -`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(r).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} -`:a+=`${this.format(r).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(r).bold(n)}${this.binaryName} -`):a+=`${this.format(r).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(r).header(`${p}`)} -`;for(let{commandClass:d,usage:m}of h){let I=d.usage.description||"undocumented";a+=` -`,a+=` ${this.format(r).bold(m)} -`,a+=` ${Vn(I,{format:this.format(r),paragraphs:!1})}`}}a+=` -`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Ev:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Iv={};it(Iv,{DefinitionsCommand:()=>qE,HelpCommand:()=>JE,VersionCommand:()=>WE});var qE=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};qE.paths=[["--clipanion=definitions"]];var JE=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JE.paths=[["-h"],["--help"]];var WE=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};WE.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HE,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aI(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aI(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kEe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PEe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PEe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DEe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function REe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Io,makeDescriptor:()=>Yt,makeIdent:()=>Eo,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>En,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>In,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Ey,checksumPattern:()=>Iy,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Ey(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Iy(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Eo(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Io(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Io(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Io(t))throw new Error("Invalid package type");if(!Io(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function En(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Eo(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Eo(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Eo(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function In(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>In(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:In(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:In(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,En(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KE(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,I=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>I(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>v4});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function v4(){return BP===null&&(BP=$8(b4())),BP}async function $i(){return v4()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ii,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var k4=ie(x4());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,k4.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var R4=ie(D4());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,R4.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${S5(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let i=" ".repeat(e);return` -${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` -`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` -`:"")||` -`;return r?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` -`)||(t+=` -`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ii(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SE(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} -`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} -`),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),I=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} -`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended -`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} -`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=En(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?In(Yt(En(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KE(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} -`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.1";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh -exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Io(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} - -`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn - -`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn -`),c.write(` -`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` -`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Eo(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,I]])=>ba(r,kr(m),process.execPath,[I])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(Z7());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),IR=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var E_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return E_||(E_=new IR((0,m_.getContent)())),await E_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} -`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[I,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=I?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ETe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ETe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ITe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ITe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let I=l.find(B=>B.path===c.path);I?I.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:I,cwd:B,data:b}of l)f.useWithSource(I,u(b),B,{strict:!1});if(s){let I=f.get("yarnPath"),B=f.get("ignorePath");if(I!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=I=>"default"in I?I.default:I;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let I=new Map;for(let R of R_())I.set(R,()=>mu(R));for(let[R,H]of r.modules)I.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(I),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);I.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[I,B]of d)f.activatePlugin(I,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:I,cwd:B,data:b,strict:R}of l)f.useWithSource(I,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ii(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ii(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ii(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aI(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=En(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Eo("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>In(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>In(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} -`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ii(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Eo(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. - -- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. -- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ii(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Io(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],I=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>I(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Io(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Io(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let I=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&I.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=I,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) -`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} -`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} -`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Iy(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Iy(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>In(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,I=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} -`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=I.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=En(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,I=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,I));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},I=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))I[B]=((g=I[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let I=s[d]=(f=s[d])!=null?f:{};I[m]=[...new Set([...(h=I[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,I,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((I=fe.telemetry)==null||I.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Qze,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:I,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:I,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let I=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,I,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(I,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[I,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[I,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},I]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[I].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[I].set(B.identHash,B),this.optional&&(I==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:I==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,I,B,a]):h.push([i,I,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} -`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} -`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} -`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Eae=ie(qN()),Iae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Eae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Iae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>H4e,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var H4e=new Set(Object.values(Oc)),G4e={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let I=t.originalPackages.get(m);if(typeof I=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return I.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await G4e[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(I=>I.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} -`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var EC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};EC.paths=[["exec"]],EC.usage=ye.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=EC;Ss();var IC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await j4e(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,I=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${I}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};IC.paths=[["explain","peer-requirements"]],IC.usage=ye.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=IC;async function j4e(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var I,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(I=a.dependencies.get(n.requested.identHash))!=null?I:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),I={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,I),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Y4e(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` - This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - - - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). - - - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). - - - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). - - - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. - - Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. - - If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. - - If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). - - If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. - - If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,q4e="|||||||",J4e=">>>>>>>",W4e="=======",Vae="<<<<<<<";async function Y4e(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=z4e(i),o,a;try{o=Ii(n),a=Ii(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function z4e(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===W4e){i=!1;break}else if(i||s.startsWith(q4e)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(J4e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` -`),e[1].join(` -`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var V4e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(V4e,{configuration:t});return Ii(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _4e(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _4e(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: -${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} -`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var X4e=/^[0-9]+$/;function iAe(t){return X4e.test(t)?`pull/${t}/head`:t}var Z4e=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$4e=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],eze=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(eze(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await tze(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($4e(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Z4e(t,i),{configuration:e,context:t.context,target:i}))}async function tze(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:I}=de.dynamicRequire(m);I!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var rze=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(rze({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let I=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(I,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var EAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,EAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var IAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let I=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),I=!0}}I||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,I,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range - -${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,I,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${I}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[I].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[I].set(b.identHash,b),h.push([m,I,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?nze(r,n,{configuration:e,peers:this.peers}):ize(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function ize(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function nze(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},I={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=I,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>wze,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>Ize,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var Eze=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?Eze.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function Ize({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var yze={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var wze=yze;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${a.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var Bze={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,IAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Qze=Bze;var mL={};it(mL,{default:()=>vze});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),bze={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},vze=bze;var EL={};it(EL,{default:()=>xze});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} -`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(I=>{let B=typeof I=="string"?I:I.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof I=="string"?b:{path:b,spec:I.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} -enableTelemetry: false -`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` -`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var Sze={commands:[$Ae,ele]},xze=Sze;var xL={};it(xL,{default:()=>Dze,fileUtils:()=>IL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var IL={};it(IL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var kze=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${kze}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Pze={fetchers:[vL,QL],resolvers:[SL,bL]},Dze=Pze;var PL={};it(PL,{default:()=>Nze});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(Rze(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function Rze(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var Fze={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},Nze=Fze;var FL={};it(FL,{default:()=>Tze});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Lze={fetchers:[DL],resolvers:[RL]},Tze=Lze;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} -`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} -`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} -`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} -`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true -`;for(let[m,I]of Object.entries(h)){p+=` -[${m}] -`;for(let[B,b]of Object.entries(I))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} -`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${u}, next tree: -${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: -${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},I=m.dependencies.get(r);return I&&I.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,I]of l)I.length>1&&!o.dependencies.has(m)&&(h.delete(m),I.shift(),h.set(m,I[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,I=n.get(i.name);if(m=!I||I.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(I.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,I=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of I){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),I.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let I=n.get(m.name);if(!I||m.ident!==I.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(I==null?void 0:I.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,I,B,b)=>{if(u.has(B))return;let R=[...I,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(I).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: -${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...I,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let I=Mle(c,m);h([],Array.from(r),I,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` -`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:I,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:I||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} -`,l+=r(u,s,`${o}${cOle?` -Tree is too large, part of the tree has been dunped -`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let I=Hle(d,f,t);(!a.get(I)||f.reference.startsWith("workspace:"))&&a.set(I,f)}for(let[I,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(I)||c(t.getLocator(I,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let I of d){let B=m.children.get(I);B||(B={children:new Map},m.children.set(I,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,I,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:I.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==I||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:I}=s(h.name),B=I?[I,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} -`:"",`/* eslint-disable */ - -`,`try { -`,` Object.freeze({}).detectStrictMode = true; -`,`} catch (error) { -`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} -`,` -`,`var __non_webpack_module__ = module; -`,` -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,e.replace(/^/gm," "),`} -`,` -`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); -`].join("")}function a6e(t){return[`var path = require('path'); -`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); -`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},I=s.get(p.packageLocation);I?(I.discardFromLookup=I.discardFromLookup&&d,d||(I.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function I(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{I(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,I(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) - -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} - -Missing package: ${De.name}@${De.reference} -Expected package location: ${YA($)} -`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. - -Source path: ${Ae} -${be.map($=>`Not found: ${YA($)} -`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ISt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,I=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),I.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:I,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,I)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(I>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,I+1)}};for(let m of f){let I=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!I)throw new Error("Assertion failed: The package should have been registered");d(I,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ece=1,gi="node_modules",gT=".bin",Ice=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let I=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${Ece} -`,n+=` nmMode: ${i.value} -`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` -`,n+=`${JSON.stringify(c)}: -`,n+=` locations: -`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} -`}if(u.aliases.length>0){n+=` aliases: -`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} -`}if(c===o&&r.size>0){n+=` bin: -`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: -`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} -`}}}}let a=t.cwd,l=v.join(a,gi,Ice);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ice);if(!T.existsSync(i))return null;let n=Ii(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ece)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,I]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,I].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var Ef=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await Ef(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[I,B]of m)g.set(I,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!1}),await Ef(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!0}),await Ef(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await Ef(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,I=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),I.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(I.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of I)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of I){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>Z7e,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>IT,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>ET,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=ET(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function ET(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function IT(t,{configuration:e,ident:r}){let i=r&&ET(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=IT(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_7e,makePublishBody:()=>V7e});var CM={};it(CM,{default:()=>D7e,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),I7e=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],y7e=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),I=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,I)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),I):I(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,I,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of y7e)i.reject.push(b);for(let b of I7e)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(I=t.manifest.publishConfig)==null?void 0:I.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await w7e(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function w7e(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function B7e(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(B7e(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function Q7e(t,{workspace:e}){let r=t.replace("%s",b7e(e)).replace("%v",v7e(e));return M.toPortablePath(r)}function b7e(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function v7e(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var S7e=["dependencies","devDependencies","peerDependencies"],x7e="workspace:",k7e=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of S7e)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===x7e)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},P7e={hooks:{beforeWorkspacePacking:k7e},commands:[gge]},D7e=P7e;var yge=ie(require("crypto")),wge=ie(Ige()),Bge=ie(require("url"));async function V7e(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _7e(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},X7e={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},Z7e=X7e;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $7e(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $7e(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],I=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=I[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete I.dist,delete I.readme,delete I.users),B=I;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} -`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Em=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Em.paths=[["npm","logout"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Em;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Im=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Im.paths=[["npm","publish"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Im;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>I_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(I){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(I);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` -`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,I=0,B=null;for(;m<=d;){if(m<=h&&(I=f-m,B=Wge(g,o,I),B!==null)){m=-m;break}if(m<=p&&(I=f+m,B=Wge(g,o,I),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=I+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` -`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var E_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function I_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(E_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),I=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:I,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${o.map(a=>` -- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",EL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ diff --git a/tgui/.yarn/releases/yarn-3.3.1.cjs b/tgui/.yarn/releases/yarn-3.3.1.cjs new file mode 100644 index 000000000000..53a282e439a3 --- /dev/null +++ b/tgui/.yarn/releases/yarn-3.3.1.cjs @@ -0,0 +1,823 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var dfe=Object.create;var jS=Object.defineProperty;var Cfe=Object.getOwnPropertyDescriptor;var mfe=Object.getOwnPropertyNames;var Efe=Object.getPrototypeOf,Ife=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var y=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ht=(r,e)=>{for(var t in e)jS(r,t,{get:e[t],enumerable:!0})},yfe=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of mfe(e))!Ife.call(r,n)&&n!==t&&jS(r,n,{get:()=>e[n],enumerable:!(i=Cfe(e,n))||i.enumerable});return r};var ne=(r,e,t)=>(t=r!=null?dfe(Efe(r)):{},yfe(e||!r||!r.__esModule?jS(t,"default",{value:r,enumerable:!0}):t,r));var aK=y((uZe,oK)=>{oK.exports=sK;sK.sync=Gfe;var iK=J("fs");function Hfe(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{uK.exports=lK;lK.sync=Yfe;var AK=J("fs");function lK(r,e,t){AK.stat(r,function(i,n){t(i,i?!1:cK(n,e))})}function Yfe(r,e){return cK(AK.statSync(r),e)}function cK(r,e){return r.isFile()&&jfe(r,e)}function jfe(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var hK=y((hZe,fK)=>{var fZe=J("fs"),OI;process.platform==="win32"||global.TESTING_WINDOWS?OI=aK():OI=gK();fK.exports=av;av.sync=qfe;function av(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){av(r,e||{},function(s,o){s?n(s):i(o)})})}OI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function qfe(r,e){try{return OI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var yK=y((pZe,IK)=>{var _g=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",pK=J("path"),Jfe=_g?";":":",dK=hK(),CK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),mK=(r,e)=>{let t=e.colon||Jfe,i=r.match(/\//)||_g&&r.match(/\\/)?[""]:[..._g?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=_g?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=_g?n.split(t):[""];return _g&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},EK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=mK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(CK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=pK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];dK(c+p,{pathExt:s},(C,w)=>{if(!C&&w)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},Wfe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=mK(r,e),s=[];for(let o=0;o{"use strict";var wK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Av.exports=wK;Av.exports.default=wK});var vK=y((CZe,SK)=>{"use strict";var bK=J("path"),zfe=yK(),Vfe=BK();function QK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=zfe.sync(r.command,{path:t[Vfe({env:t})],pathExt:e?bK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=bK.resolve(n?r.options.cwd:"",o)),o}function Xfe(r){return QK(r)||QK(r,!0)}SK.exports=Xfe});var xK=y((mZe,cv)=>{"use strict";var lv=/([()\][%!^"`<>&|;, *?])/g;function _fe(r){return r=r.replace(lv,"^$1"),r}function Zfe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(lv,"^$1"),e&&(r=r.replace(lv,"^$1")),r}cv.exports.command=_fe;cv.exports.argument=Zfe});var DK=y((EZe,PK)=>{"use strict";PK.exports=/^#!(.*)/});var RK=y((IZe,kK)=>{"use strict";var $fe=DK();kK.exports=(r="")=>{let e=r.match($fe);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var NK=y((yZe,FK)=>{"use strict";var uv=J("fs"),ehe=RK();function the(r){let t=Buffer.alloc(150),i;try{i=uv.openSync(r,"r"),uv.readSync(i,t,0,150,0),uv.closeSync(i)}catch{}return ehe(t.toString())}FK.exports=the});var MK=y((wZe,OK)=>{"use strict";var rhe=J("path"),TK=vK(),LK=xK(),ihe=NK(),nhe=process.platform==="win32",she=/\.(?:com|exe)$/i,ohe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function ahe(r){r.file=TK(r);let e=r.file&&ihe(r.file);return e?(r.args.unshift(r.file),r.command=e,TK(r)):r.file}function Ahe(r){if(!nhe)return r;let e=ahe(r),t=!she.test(e);if(r.options.forceShell||t){let i=ohe.test(e);r.command=rhe.normalize(r.command),r.command=LK.command(r.command),r.args=r.args.map(s=>LK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function lhe(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:Ahe(i)}OK.exports=lhe});var HK=y((BZe,KK)=>{"use strict";var gv=process.platform==="win32";function fv(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function che(r,e){if(!gv)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=UK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function UK(r,e){return gv&&r===1&&!e.file?fv(e.original,"spawn"):null}function uhe(r,e){return gv&&r===1&&!e.file?fv(e.original,"spawnSync"):null}KK.exports={hookChildProcess:che,verifyENOENT:UK,verifyENOENTSync:uhe,notFoundError:fv}});var dv=y((bZe,Zg)=>{"use strict";var GK=J("child_process"),hv=MK(),pv=HK();function YK(r,e,t){let i=hv(r,e,t),n=GK.spawn(i.command,i.args,i.options);return pv.hookChildProcess(n,i),n}function ghe(r,e,t){let i=hv(r,e,t),n=GK.spawnSync(i.command,i.args,i.options);return n.error=n.error||pv.verifyENOENTSync(n.status,i),n}Zg.exports=YK;Zg.exports.spawn=YK;Zg.exports.sync=ghe;Zg.exports._parse=hv;Zg.exports._enoent=pv});var qK=y((QZe,jK)=>{"use strict";function fhe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function uc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,uc)}fhe(uc,Error);uc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",re=de(">>",!1),me=">&",tt=de(">&",!1),Rt=">",It=de(">",!1),Ur="<<<",oi=de("<<<",!1),pi="<&",pr=de("<&",!1),di="<",ai=de("<",!1),Os=function(m){return{type:"argument",segments:[].concat(...m)}},dr=function(m){return m},Bi="$'",_n=de("$'",!1),pa="'",EA=de("'",!1),kg=function(m){return[{type:"text",text:m}]},Zn='""',IA=de('""',!1),da=function(){return{type:"text",text:""}},Jp='"',yA=de('"',!1),wA=function(m){return m},Br=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},Vl=function(m){return{type:"shell",shell:m,quoted:!0}},Rg=function(m){return{type:"variable",...m,quoted:!0}},Eo=function(m){return{type:"text",text:m}},Fg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},Wp=function(m){return{type:"shell",shell:m,quoted:!1}},zp=function(m){return{type:"variable",...m,quoted:!1}},Pr=function(m){return{type:"glob",pattern:m}},oe=/^[^']/,Io=Ye(["'"],!0,!1),kn=function(m){return m.join("")},Ng=/^[^$"]/,bt=Ye(["$",'"'],!0,!1),Xl=`\\ +`,Rn=de(`\\ +`,!1),$n=function(){return""},es="\\",ut=de("\\",!1),yo=/^[\\$"`]/,at=Ye(["\\","$",'"',"`"],!1,!1),ln=function(m){return m},S="\\a",Lt=de("\\a",!1),Tg=function(){return"a"},_l="\\b",Vp=de("\\b",!1),Xp=function(){return"\b"},_p=/^[Ee]/,Zp=Ye(["E","e"],!1,!1),$p=function(){return"\x1B"},G="\\f",yt=de("\\f",!1),BA=function(){return"\f"},Wi="\\n",Zl=de("\\n",!1),We=function(){return` +`},Ca="\\r",Lg=de("\\r",!1),uI=function(){return"\r"},ed="\\t",gI=de("\\t",!1),ar=function(){return" "},Fn="\\v",$l=de("\\v",!1),td=function(){return"\v"},Ms=/^[\\'"?]/,ma=Ye(["\\","'",'"',"?"],!1,!1),cn=function(m){return String.fromCharCode(parseInt(m,16))},ke="\\x",Og=de("\\x",!1),ec="\\u",Us=de("\\u",!1),tc="\\U",bA=de("\\U",!1),Mg=function(m){return String.fromCodePoint(parseInt(m,16))},Ug=/^[0-7]/,Ea=Ye([["0","7"]],!1,!1),Ia=/^[0-9a-fA-f]/,$e=Ye([["0","9"],["a","f"],["A","f"]],!1,!1),wo=rt(),QA="-",rc=de("-",!1),Ks="+",ic=de("+",!1),fI=".",rd=de(".",!1),Kg=function(m,Q,F){return{type:"number",value:(m==="-"?-1:1)*parseFloat(Q.join("")+"."+F.join(""))}},id=function(m,Q){return{type:"number",value:(m==="-"?-1:1)*parseInt(Q.join(""))}},hI=function(m){return{type:"variable",...m}},nc=function(m){return{type:"variable",name:m}},pI=function(m){return m},Hg="*",SA=de("*",!1),Nr="/",dI=de("/",!1),Hs=function(m,Q,F){return{type:Q==="*"?"multiplication":"division",right:F}},Gs=function(m,Q){return Q.reduce((F,K)=>({left:F,...K}),m)},Gg=function(m,Q,F){return{type:Q==="+"?"addition":"subtraction",right:F}},vA="$((",R=de("$((",!1),q="))",pe=de("))",!1),Ne=function(m){return m},xe="$(",qe=de("$(",!1),dt=function(m){return m},Ft="${",Nn=de("${",!1),vS=":-",AU=de(":-",!1),lU=function(m,Q){return{name:m,defaultValue:Q}},xS=":-}",cU=de(":-}",!1),uU=function(m){return{name:m,defaultValue:[]}},PS=":+",gU=de(":+",!1),fU=function(m,Q){return{name:m,alternativeValue:Q}},DS=":+}",hU=de(":+}",!1),pU=function(m){return{name:m,alternativeValue:[]}},kS=function(m){return{name:m}},dU="$",CU=de("$",!1),mU=function(m){return e.isGlobPattern(m)},EU=function(m){return m},RS=/^[a-zA-Z0-9_]/,FS=Ye([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),NS=function(){return O()},TS=/^[$@*?#a-zA-Z0-9_\-]/,LS=Ye(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),IU=/^[(){}<>$|&; \t"']/,Yg=Ye(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),OS=/^[<>&; \t"']/,MS=Ye(["<",">","&",";"," "," ",'"',"'"],!1,!1),CI=/^[ \t]/,mI=Ye([" "," "],!1,!1),b=0,Fe=0,xA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function O(){return r.substring(Fe,b)}function X(){return Et(Fe,b)}function te(m,Q){throw Q=Q!==void 0?Q:Et(Fe,b),Fi([At(m)],r.substring(Fe,b),Q)}function ye(m,Q){throw Q=Q!==void 0?Q:Et(Fe,b),Tn(m,Q)}function de(m,Q){return{type:"literal",text:m,ignoreCase:Q}}function Ye(m,Q,F){return{type:"class",parts:m,inverted:Q,ignoreCase:F}}function rt(){return{type:"any"}}function wt(){return{type:"end"}}function At(m){return{type:"other",description:m}}function et(m){var Q=xA[m],F;if(Q)return Q;for(F=m-1;!xA[F];)F--;for(Q=xA[F],Q={line:Q.line,column:Q.column};Fd&&(d=b,E=[]),E.push(m))}function Tn(m,Q){return new uc(m,null,null,Q)}function Fi(m,Q,F){return new uc(uc.buildMessage(m,Q),m,Q,F)}function PA(){var m,Q;return m=b,Q=Kr(),Q===t&&(Q=null),Q!==t&&(Fe=m,Q=s(Q)),m=Q,m}function Kr(){var m,Q,F,K,ce;if(m=b,Q=Hr(),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();F!==t?(K=ya(),K!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Fe=m,Q=o(Q,K,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;if(m===t)if(m=b,Q=Hr(),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();F!==t?(K=ya(),K===t&&(K=null),K!==t?(Fe=m,Q=a(Q,K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function ts(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=Kr(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=l(F),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function ya(){var m;return r.charCodeAt(b)===59?(m=c,b++):(m=t,I===0&&Be(u)),m===t&&(r.charCodeAt(b)===38?(m=g,b++):(m=t,I===0&&Be(f))),m}function Hr(){var m,Q,F;return m=b,Q=yU(),Q!==t?(F=$ge(),F===t&&(F=null),F!==t?(Fe=m,Q=h(Q,F),m=Q):(b=m,m=t)):(b=m,m=t),m}function $ge(){var m,Q,F,K,ce,Qe,ft;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=efe(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Hr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=p(F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function efe(){var m;return r.substr(b,2)===C?(m=C,b+=2):(m=t,I===0&&Be(w)),m===t&&(r.substr(b,2)===B?(m=B,b+=2):(m=t,I===0&&Be(v))),m}function yU(){var m,Q,F;return m=b,Q=ife(),Q!==t?(F=tfe(),F===t&&(F=null),F!==t?(Fe=m,Q=D(Q,F),m=Q):(b=m,m=t)):(b=m,m=t),m}function tfe(){var m,Q,F,K,ce,Qe,ft;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=rfe(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=yU(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=T(F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function rfe(){var m;return r.substr(b,2)===H?(m=H,b+=2):(m=t,I===0&&Be(j)),m===t&&(r.charCodeAt(b)===124?(m=$,b++):(m=t,I===0&&Be(V))),m}function EI(){var m,Q,F,K,ce,Qe;if(m=b,Q=FU(),Q!==t)if(r.charCodeAt(b)===61?(F=W,b++):(F=t,I===0&&Be(Z)),F!==t)if(K=bU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(Fe=m,Q=A(Q,K),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;else b=m,m=t;if(m===t)if(m=b,Q=FU(),Q!==t)if(r.charCodeAt(b)===61?(F=W,b++):(F=t,I===0&&Be(Z)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=ae(Q),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function ife(){var m,Q,F,K,ce,Qe,ft,Bt,Vr,Ci,rs;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(r.charCodeAt(b)===40?(F=ge,b++):(F=t,I===0&&Be(_)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Kr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();if(Qe!==t)if(r.charCodeAt(b)===41?(ft=L,b++):(ft=t,I===0&&Be(N)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=nd();Ci!==t;)Vr.push(Ci),Ci=nd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Fe=m,Q=ue(ce,Vr),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(r.charCodeAt(b)===123?(F=we,b++):(F=t,I===0&&Be(Te)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Kr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();if(Qe!==t)if(r.charCodeAt(b)===125?(ft=Pe,b++):(ft=t,I===0&&Be(Le)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=nd();Ci!==t;)Vr.push(Ci),Ci=nd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Fe=m,Q=se(ce,Vr),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){for(F=[],K=EI();K!==t;)F.push(K),K=EI();if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t){if(ce=[],Qe=BU(),Qe!==t)for(;Qe!==t;)ce.push(Qe),Qe=BU();else ce=t;if(ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=Ae(F,ce),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t}else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){if(F=[],K=EI(),K!==t)for(;K!==t;)F.push(K),K=EI();else F=t;if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=be(F),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}}}return m}function wU(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){if(F=[],K=II(),K!==t)for(;K!==t;)F.push(K),K=II();else F=t;if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=fe(F),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t;return m}function BU(){var m,Q,F;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t?(F=nd(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();Q!==t?(F=II(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t)}return m}function nd(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();return Q!==t?(Ge.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(ie)),F===t&&(F=null),F!==t?(K=nfe(),K!==t?(ce=II(),ce!==t?(Fe=m,Q=Y(F,K,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function nfe(){var m;return r.substr(b,2)===he?(m=he,b+=2):(m=t,I===0&&Be(re)),m===t&&(r.substr(b,2)===me?(m=me,b+=2):(m=t,I===0&&Be(tt)),m===t&&(r.charCodeAt(b)===62?(m=Rt,b++):(m=t,I===0&&Be(It)),m===t&&(r.substr(b,3)===Ur?(m=Ur,b+=3):(m=t,I===0&&Be(oi)),m===t&&(r.substr(b,2)===pi?(m=pi,b+=2):(m=t,I===0&&Be(pr)),m===t&&(r.charCodeAt(b)===60?(m=di,b++):(m=t,I===0&&Be(ai))))))),m}function II(){var m,Q,F;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();return Q!==t?(F=bU(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t),m}function bU(){var m,Q,F;if(m=b,Q=[],F=QU(),F!==t)for(;F!==t;)Q.push(F),F=QU();else Q=t;return Q!==t&&(Fe=m,Q=Os(Q)),m=Q,m}function QU(){var m,Q;return m=b,Q=sfe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=ofe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=afe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=Afe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q))),m}function sfe(){var m,Q,F,K;return m=b,r.substr(b,2)===Bi?(Q=Bi,b+=2):(Q=t,I===0&&Be(_n)),Q!==t?(F=ufe(),F!==t?(r.charCodeAt(b)===39?(K=pa,b++):(K=t,I===0&&Be(EA)),K!==t?(Fe=m,Q=kg(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function ofe(){var m,Q,F,K;return m=b,r.charCodeAt(b)===39?(Q=pa,b++):(Q=t,I===0&&Be(EA)),Q!==t?(F=lfe(),F!==t?(r.charCodeAt(b)===39?(K=pa,b++):(K=t,I===0&&Be(EA)),K!==t?(Fe=m,Q=kg(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function afe(){var m,Q,F,K;if(m=b,r.substr(b,2)===Zn?(Q=Zn,b+=2):(Q=t,I===0&&Be(IA)),Q!==t&&(Fe=m,Q=da()),m=Q,m===t)if(m=b,r.charCodeAt(b)===34?(Q=Jp,b++):(Q=t,I===0&&Be(yA)),Q!==t){for(F=[],K=SU();K!==t;)F.push(K),K=SU();F!==t?(r.charCodeAt(b)===34?(K=Jp,b++):(K=t,I===0&&Be(yA)),K!==t?(Fe=m,Q=wA(F),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function Afe(){var m,Q,F;if(m=b,Q=[],F=vU(),F!==t)for(;F!==t;)Q.push(F),F=vU();else Q=t;return Q!==t&&(Fe=m,Q=wA(Q)),m=Q,m}function SU(){var m,Q;return m=b,Q=kU(),Q!==t&&(Fe=m,Q=Br(Q)),m=Q,m===t&&(m=b,Q=RU(),Q!==t&&(Fe=m,Q=Vl(Q)),m=Q,m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=Rg(Q)),m=Q,m===t&&(m=b,Q=cfe(),Q!==t&&(Fe=m,Q=Eo(Q)),m=Q))),m}function vU(){var m,Q;return m=b,Q=kU(),Q!==t&&(Fe=m,Q=Fg(Q)),m=Q,m===t&&(m=b,Q=RU(),Q!==t&&(Fe=m,Q=Wp(Q)),m=Q,m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=zp(Q)),m=Q,m===t&&(m=b,Q=hfe(),Q!==t&&(Fe=m,Q=Pr(Q)),m=Q,m===t&&(m=b,Q=ffe(),Q!==t&&(Fe=m,Q=Eo(Q)),m=Q)))),m}function lfe(){var m,Q,F;for(m=b,Q=[],oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io));F!==t;)Q.push(F),oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io));return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function cfe(){var m,Q,F;if(m=b,Q=[],F=xU(),F===t&&(Ng.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(bt))),F!==t)for(;F!==t;)Q.push(F),F=xU(),F===t&&(Ng.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(bt)));else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function xU(){var m,Q,F;return m=b,r.substr(b,2)===Xl?(Q=Xl,b+=2):(Q=t,I===0&&Be(Rn)),Q!==t&&(Fe=m,Q=$n()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(yo.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(at)),F!==t?(Fe=m,Q=ln(F),m=Q):(b=m,m=t)):(b=m,m=t)),m}function ufe(){var m,Q,F;for(m=b,Q=[],F=PU(),F===t&&(oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io)));F!==t;)Q.push(F),F=PU(),F===t&&(oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io)));return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function PU(){var m,Q,F;return m=b,r.substr(b,2)===S?(Q=S,b+=2):(Q=t,I===0&&Be(Lt)),Q!==t&&(Fe=m,Q=Tg()),m=Q,m===t&&(m=b,r.substr(b,2)===_l?(Q=_l,b+=2):(Q=t,I===0&&Be(Vp)),Q!==t&&(Fe=m,Q=Xp()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(_p.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Zp)),F!==t?(Fe=m,Q=$p(),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===G?(Q=G,b+=2):(Q=t,I===0&&Be(yt)),Q!==t&&(Fe=m,Q=BA()),m=Q,m===t&&(m=b,r.substr(b,2)===Wi?(Q=Wi,b+=2):(Q=t,I===0&&Be(Zl)),Q!==t&&(Fe=m,Q=We()),m=Q,m===t&&(m=b,r.substr(b,2)===Ca?(Q=Ca,b+=2):(Q=t,I===0&&Be(Lg)),Q!==t&&(Fe=m,Q=uI()),m=Q,m===t&&(m=b,r.substr(b,2)===ed?(Q=ed,b+=2):(Q=t,I===0&&Be(gI)),Q!==t&&(Fe=m,Q=ar()),m=Q,m===t&&(m=b,r.substr(b,2)===Fn?(Q=Fn,b+=2):(Q=t,I===0&&Be($l)),Q!==t&&(Fe=m,Q=td()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(Ms.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(ma)),F!==t?(Fe=m,Q=ln(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=gfe()))))))))),m}function gfe(){var m,Q,F,K,ce,Qe,ft,Bt,Vr,Ci,rs,YS;return m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(F=US(),F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===ke?(Q=ke,b+=2):(Q=t,I===0&&Be(Og)),Q!==t?(F=b,K=b,ce=US(),ce!==t?(Qe=Ln(),Qe!==t?(ce=[ce,Qe],K=ce):(b=K,K=t)):(b=K,K=t),K===t&&(K=US()),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===ec?(Q=ec,b+=2):(Q=t,I===0&&Be(Us)),Q!==t?(F=b,K=b,ce=Ln(),ce!==t?(Qe=Ln(),Qe!==t?(ft=Ln(),ft!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Qe,ft,Bt],K=ce):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===tc?(Q=tc,b+=2):(Q=t,I===0&&Be(bA)),Q!==t?(F=b,K=b,ce=Ln(),ce!==t?(Qe=Ln(),Qe!==t?(ft=Ln(),ft!==t?(Bt=Ln(),Bt!==t?(Vr=Ln(),Vr!==t?(Ci=Ln(),Ci!==t?(rs=Ln(),rs!==t?(YS=Ln(),YS!==t?(ce=[ce,Qe,ft,Bt,Vr,Ci,rs,YS],K=ce):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=Mg(F),m=Q):(b=m,m=t)):(b=m,m=t)))),m}function US(){var m;return Ug.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(Ea)),m}function Ln(){var m;return Ia.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be($e)),m}function ffe(){var m,Q,F,K,ce;if(m=b,Q=[],F=b,r.charCodeAt(b)===92?(K=es,b++):(K=t,I===0&&Be(ut)),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F===t&&(F=b,K=b,I++,ce=NU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t)),F!==t)for(;F!==t;)Q.push(F),F=b,r.charCodeAt(b)===92?(K=es,b++):(K=t,I===0&&Be(ut)),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F===t&&(F=b,K=b,I++,ce=NU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t));else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function KS(){var m,Q,F,K,ce,Qe;if(m=b,r.charCodeAt(b)===45?(Q=QA,b++):(Q=t,I===0&&Be(rc)),Q===t&&(r.charCodeAt(b)===43?(Q=Ks,b++):(Q=t,I===0&&Be(ic))),Q===t&&(Q=null),Q!==t){if(F=[],Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie)),K!==t)for(;K!==t;)F.push(K),Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie));else F=t;if(F!==t)if(r.charCodeAt(b)===46?(K=fI,b++):(K=t,I===0&&Be(rd)),K!==t){if(ce=[],Ge.test(r.charAt(b))?(Qe=r.charAt(b),b++):(Qe=t,I===0&&Be(ie)),Qe!==t)for(;Qe!==t;)ce.push(Qe),Ge.test(r.charAt(b))?(Qe=r.charAt(b),b++):(Qe=t,I===0&&Be(ie));else ce=t;ce!==t?(Fe=m,Q=Kg(Q,F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;if(m===t){if(m=b,r.charCodeAt(b)===45?(Q=QA,b++):(Q=t,I===0&&Be(rc)),Q===t&&(r.charCodeAt(b)===43?(Q=Ks,b++):(Q=t,I===0&&Be(ic))),Q===t&&(Q=null),Q!==t){if(F=[],Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie)),K!==t)for(;K!==t;)F.push(K),Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie));else F=t;F!==t?(Fe=m,Q=id(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;if(m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=hI(Q)),m=Q,m===t&&(m=b,Q=sc(),Q!==t&&(Fe=m,Q=nc(Q)),m=Q,m===t)))if(m=b,r.charCodeAt(b)===40?(Q=ge,b++):(Q=t,I===0&&Be(_)),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();if(F!==t)if(K=DU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(r.charCodeAt(b)===41?(Qe=L,b++):(Qe=t,I===0&&Be(N)),Qe!==t?(Fe=m,Q=pI(K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t}return m}function HS(){var m,Q,F,K,ce,Qe,ft,Bt;if(m=b,Q=KS(),Q!==t){for(F=[],K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===42?(Qe=Hg,b++):(Qe=t,I===0&&Be(SA)),Qe===t&&(r.charCodeAt(b)===47?(Qe=Nr,b++):(Qe=t,I===0&&Be(dI))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Fe=K,ce=Hs(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t;for(;K!==t;){for(F.push(K),K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===42?(Qe=Hg,b++):(Qe=t,I===0&&Be(SA)),Qe===t&&(r.charCodeAt(b)===47?(Qe=Nr,b++):(Qe=t,I===0&&Be(dI))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Fe=K,ce=Hs(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t}F!==t?(Fe=m,Q=Gs(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;return m}function DU(){var m,Q,F,K,ce,Qe,ft,Bt;if(m=b,Q=HS(),Q!==t){for(F=[],K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===43?(Qe=Ks,b++):(Qe=t,I===0&&Be(ic)),Qe===t&&(r.charCodeAt(b)===45?(Qe=QA,b++):(Qe=t,I===0&&Be(rc))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=HS(),Bt!==t?(Fe=K,ce=Gg(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t;for(;K!==t;){for(F.push(K),K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===43?(Qe=Ks,b++):(Qe=t,I===0&&Be(ic)),Qe===t&&(r.charCodeAt(b)===45?(Qe=QA,b++):(Qe=t,I===0&&Be(rc))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=HS(),Bt!==t?(Fe=K,ce=Gg(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t}F!==t?(Fe=m,Q=Gs(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;return m}function kU(){var m,Q,F,K,ce,Qe;if(m=b,r.substr(b,3)===vA?(Q=vA,b+=3):(Q=t,I===0&&Be(R)),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();if(F!==t)if(K=DU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(r.substr(b,2)===q?(Qe=q,b+=2):(Qe=t,I===0&&Be(pe)),Qe!==t?(Fe=m,Q=Ne(K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;return m}function RU(){var m,Q,F,K;return m=b,r.substr(b,2)===xe?(Q=xe,b+=2):(Q=t,I===0&&Be(qe)),Q!==t?(F=Kr(),F!==t?(r.charCodeAt(b)===41?(K=L,b++):(K=t,I===0&&Be(N)),K!==t?(Fe=m,Q=dt(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function GS(){var m,Q,F,K,ce,Qe;return m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,2)===vS?(K=vS,b+=2):(K=t,I===0&&Be(AU)),K!==t?(ce=wU(),ce!==t?(r.charCodeAt(b)===125?(Qe=Pe,b++):(Qe=t,I===0&&Be(Le)),Qe!==t?(Fe=m,Q=lU(F,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,3)===xS?(K=xS,b+=3):(K=t,I===0&&Be(cU)),K!==t?(Fe=m,Q=uU(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,2)===PS?(K=PS,b+=2):(K=t,I===0&&Be(gU)),K!==t?(ce=wU(),ce!==t?(r.charCodeAt(b)===125?(Qe=Pe,b++):(Qe=t,I===0&&Be(Le)),Qe!==t?(Fe=m,Q=fU(F,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,3)===DS?(K=DS,b+=3):(K=t,I===0&&Be(hU)),K!==t?(Fe=m,Q=pU(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.charCodeAt(b)===125?(K=Pe,b++):(K=t,I===0&&Be(Le)),K!==t?(Fe=m,Q=kS(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.charCodeAt(b)===36?(Q=dU,b++):(Q=t,I===0&&Be(CU)),Q!==t?(F=sc(),F!==t?(Fe=m,Q=kS(F),m=Q):(b=m,m=t)):(b=m,m=t)))))),m}function hfe(){var m,Q,F;return m=b,Q=pfe(),Q!==t?(Fe=b,F=mU(Q),F?F=void 0:F=t,F!==t?(Fe=m,Q=EU(Q),m=Q):(b=m,m=t)):(b=m,m=t),m}function pfe(){var m,Q,F,K,ce;if(m=b,Q=[],F=b,K=b,I++,ce=TU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F!==t)for(;F!==t;)Q.push(F),F=b,K=b,I++,ce=TU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t);else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function FU(){var m,Q,F;if(m=b,Q=[],RS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(FS)),F!==t)for(;F!==t;)Q.push(F),RS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(FS));else Q=t;return Q!==t&&(Fe=m,Q=NS()),m=Q,m}function sc(){var m,Q,F;if(m=b,Q=[],TS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(LS)),F!==t)for(;F!==t;)Q.push(F),TS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(LS));else Q=t;return Q!==t&&(Fe=m,Q=NS()),m=Q,m}function NU(){var m;return IU.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(Yg)),m}function TU(){var m;return OS.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(MS)),m}function Me(){var m,Q;if(m=[],CI.test(r.charAt(b))?(Q=r.charAt(b),b++):(Q=t,I===0&&Be(mI)),Q!==t)for(;Q!==t;)m.push(Q),CI.test(r.charAt(b))?(Q=r.charAt(b),b++):(Q=t,I===0&&Be(mI));else m=t;return m}if(k=n(),k!==t&&b===r.length)return k;throw k!==t&&b{"use strict";function phe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function fc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,fc)}phe(fc,Error);fc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ie))}function Le(ie,Y){return new fc(ie,null,null,Y)}function se(ie,Y,he){return new fc(fc.buildMessage(ie,Y),ie,Y,he)}function Ae(){var ie,Y,he,re;return ie=v,Y=be(),Y!==t?(r.charCodeAt(v)===47?(he=s,v++):(he=t,$===0&&Pe(o)),he!==t?(re=be(),re!==t?(D=ie,Y=a(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=be(),Y!==t&&(D=ie,Y=l(Y)),ie=Y),ie}function be(){var ie,Y,he,re;return ie=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(he=c,v++):(he=t,$===0&&Pe(u)),he!==t?(re=Ge(),re!==t?(D=ie,Y=g(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=fe(),Y!==t&&(D=ie,Y=f(Y)),ie=Y),ie}function fe(){var ie,Y,he,re,me;return ie=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Pe(u)),Y!==t?(he=le(),he!==t?(r.charCodeAt(v)===47?(re=s,v++):(re=t,$===0&&Pe(o)),re!==t?(me=le(),me!==t?(D=ie,Y=h(),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=le(),Y!==t&&(D=ie,Y=h()),ie=Y),ie}function le(){var ie,Y,he;if(ie=v,Y=[],p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C)),he!==t)for(;he!==t;)Y.push(he),p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}function Ge(){var ie,Y,he;if(ie=v,Y=[],w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B)),he!==t)for(;he!==t;)Y.push(he),w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function XK(r){return typeof r>"u"||r===null}function Che(r){return typeof r=="object"&&r!==null}function mhe(r){return Array.isArray(r)?r:XK(r)?[]:[r]}function Ehe(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function md(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}md.prototype=Object.create(Error.prototype);md.prototype.constructor=md;md.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};_K.exports=md});var e2=y((YZe,$K)=>{"use strict";var ZK=pc();function wv(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}wv.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),ZK.repeat(" ",e)+i+a+s+` +`+ZK.repeat(" ",e+this.position-n+i.length)+"^"};wv.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};$K.exports=wv});var Ai=y((jZe,r2)=>{"use strict";var t2=tf(),whe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Bhe=["scalar","sequence","mapping"];function bhe(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function Qhe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(whe.indexOf(t)===-1)throw new t2('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=bhe(e.styleAliases||null),Bhe.indexOf(this.kind)===-1)throw new t2('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}r2.exports=Qhe});var dc=y((qZe,n2)=>{"use strict";var i2=pc(),jI=tf(),She=Ai();function Bv(r,e,t){var i=[];return r.include.forEach(function(n){t=Bv(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function vhe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var xhe=Ai();s2.exports=new xhe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var A2=y((WZe,a2)=>{"use strict";var Phe=Ai();a2.exports=new Phe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var c2=y((zZe,l2)=>{"use strict";var Dhe=Ai();l2.exports=new Dhe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var qI=y((VZe,u2)=>{"use strict";var khe=dc();u2.exports=new khe({explicit:[o2(),A2(),c2()]})});var f2=y((XZe,g2)=>{"use strict";var Rhe=Ai();function Fhe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function Nhe(){return null}function The(r){return r===null}g2.exports=new Rhe("tag:yaml.org,2002:null",{kind:"scalar",resolve:Fhe,construct:Nhe,predicate:The,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var p2=y((_Ze,h2)=>{"use strict";var Lhe=Ai();function Ohe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function Mhe(r){return r==="true"||r==="True"||r==="TRUE"}function Uhe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}h2.exports=new Lhe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Ohe,construct:Mhe,predicate:Uhe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var C2=y((ZZe,d2)=>{"use strict";var Khe=pc(),Hhe=Ai();function Ghe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function Yhe(r){return 48<=r&&r<=55}function jhe(r){return 48<=r&&r<=57}function qhe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var I2=y(($Ze,E2)=>{"use strict";var m2=pc(),zhe=Ai(),Vhe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Xhe(r){return!(r===null||!Vhe.test(r)||r[r.length-1]==="_")}function _he(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var Zhe=/^[-+]?[0-9]+e/;function $he(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(m2.isNegativeZero(r))return"-0.0";return t=r.toString(10),Zhe.test(t)?t.replace("e",".e"):t}function epe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||m2.isNegativeZero(r))}E2.exports=new zhe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Xhe,construct:_he,predicate:epe,represent:$he,defaultStyle:"lowercase"})});var bv=y((e$e,y2)=>{"use strict";var tpe=dc();y2.exports=new tpe({include:[qI()],implicit:[f2(),p2(),C2(),I2()]})});var Qv=y((t$e,w2)=>{"use strict";var rpe=dc();w2.exports=new rpe({include:[bv()]})});var S2=y((r$e,Q2)=>{"use strict";var ipe=Ai(),B2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),b2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function npe(r){return r===null?!1:B2.exec(r)!==null||b2.exec(r)!==null}function spe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=B2.exec(r),e===null&&(e=b2.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function ope(r){return r.toISOString()}Q2.exports=new ipe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:npe,construct:spe,instanceOf:Date,represent:ope})});var x2=y((i$e,v2)=>{"use strict";var ape=Ai();function Ape(r){return r==="<<"||r===null}v2.exports=new ape("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Ape})});var k2=y((n$e,D2)=>{"use strict";var Cc;try{P2=J,Cc=P2("buffer").Buffer}catch{}var P2,lpe=Ai(),Sv=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function cpe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=Sv;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function upe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=Sv,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),Cc?Cc.from?Cc.from(a):new Cc(a):a}function gpe(r){var e="",t=0,i,n,s=r.length,o=Sv;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function fpe(r){return Cc&&Cc.isBuffer(r)}D2.exports=new lpe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:cpe,construct:upe,predicate:fpe,represent:gpe})});var F2=y((s$e,R2)=>{"use strict";var hpe=Ai(),ppe=Object.prototype.hasOwnProperty,dpe=Object.prototype.toString;function Cpe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Epe=Ai(),Ipe=Object.prototype.toString;function ype(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Bpe=Ai(),bpe=Object.prototype.hasOwnProperty;function Qpe(r){if(r===null)return!0;var e,t=r;for(e in t)if(bpe.call(t,e)&&t[e]!==null)return!1;return!0}function Spe(r){return r!==null?r:{}}L2.exports=new Bpe("tag:yaml.org,2002:set",{kind:"mapping",resolve:Qpe,construct:Spe})});var nf=y((A$e,M2)=>{"use strict";var vpe=dc();M2.exports=new vpe({include:[Qv()],implicit:[S2(),x2()],explicit:[k2(),F2(),T2(),O2()]})});var K2=y((l$e,U2)=>{"use strict";var xpe=Ai();function Ppe(){return!0}function Dpe(){}function kpe(){return""}function Rpe(r){return typeof r>"u"}U2.exports=new xpe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Ppe,construct:Dpe,predicate:Rpe,represent:kpe})});var G2=y((c$e,H2)=>{"use strict";var Fpe=Ai();function Npe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function Tpe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Lpe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function Ope(r){return Object.prototype.toString.call(r)==="[object RegExp]"}H2.exports=new Fpe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Npe,construct:Tpe,predicate:Ope,represent:Lpe})});var q2=y((u$e,j2)=>{"use strict";var JI;try{Y2=J,JI=Y2("esprima")}catch{typeof window<"u"&&(JI=window.esprima)}var Y2,Mpe=Ai();function Upe(r){if(r===null)return!1;try{var e="("+r+")",t=JI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Kpe(r){var e="("+r+")",t=JI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function Hpe(r){return r.toString()}function Gpe(r){return Object.prototype.toString.call(r)==="[object Function]"}j2.exports=new Mpe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Upe,construct:Kpe,predicate:Gpe,represent:Hpe})});var Ed=y((g$e,W2)=>{"use strict";var J2=dc();W2.exports=J2.DEFAULT=new J2({include:[nf()],explicit:[K2(),G2(),q2()]})});var gH=y((f$e,Id)=>{"use strict";var Qa=pc(),eH=tf(),Ype=e2(),tH=nf(),jpe=Ed(),NA=Object.prototype.hasOwnProperty,WI=1,rH=2,iH=3,zI=4,vv=1,qpe=2,z2=3,Jpe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Wpe=/[\x85\u2028\u2029]/,zpe=/[,\[\]\{\}]/,nH=/^(?:!|!!|![a-z\-]+!)$/i,sH=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function V2(r){return Object.prototype.toString.call(r)}function So(r){return r===10||r===13}function Ec(r){return r===9||r===32}function fn(r){return r===9||r===32||r===10||r===13}function sf(r){return r===44||r===91||r===93||r===123||r===125}function Vpe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Xpe(r){return r===120?2:r===117?4:r===85?8:0}function _pe(r){return 48<=r&&r<=57?r-48:-1}function X2(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function Zpe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var oH=new Array(256),aH=new Array(256);for(mc=0;mc<256;mc++)oH[mc]=X2(mc)?1:0,aH[mc]=X2(mc);var mc;function $pe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||jpe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function AH(r,e){return new eH(e,new Ype(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function gt(r,e){throw AH(r,e)}function VI(r,e){r.onWarning&&r.onWarning.call(null,AH(r,e))}var _2={YAML:function(e,t,i){var n,s,o;e.version!==null&>(e,"duplication of %YAML directive"),i.length!==1&>(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&>(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&>(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&VI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&>(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],nH.test(n)||gt(e,"ill-formed tag handle (first argument) of the TAG directive"),NA.call(e.tagMap,n)&>(e,'there is a previously declared suffix for "'+n+'" tag handle'),sH.test(s)||gt(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function FA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=Qa.repeat(` +`,e-1))}function ede(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),fn(h)||sf(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),fn(n)||t&&sf(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),fn(n)||t&&sf(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),fn(i))break}else{if(r.position===r.lineStart&&XI(r)||t&&sf(h))break;if(So(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,_r(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(FA(r,s,o,!1),Pv(r,r.line-l),s=o=r.position,a=!1),Ec(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return FA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function tde(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(FA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else So(t)?(FA(r,i,n,!0),Pv(r,_r(r,!1,e)),i=n=r.position):r.position===r.lineStart&&XI(r)?gt(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);gt(r,"unexpected end of the stream within a single quoted scalar")}function rde(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return FA(r,t,r.position,!0),r.position++,!0;if(a===92){if(FA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),So(a))_r(r,!1,e);else if(a<256&&oH[a])r.result+=aH[a],r.position++;else if((o=Xpe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=Vpe(a))>=0?s=(s<<4)+o:gt(r,"expected hexadecimal character");r.result+=Zpe(s),r.position++}else gt(r,"unknown escape sequence");t=i=r.position}else So(a)?(FA(r,t,i,!0),Pv(r,_r(r,!1,e)),t=i=r.position):r.position===r.lineStart&&XI(r)?gt(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}gt(r,"unexpected end of the stream within a double quoted scalar")}function ide(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,w;if(w=r.input.charCodeAt(r.position),w===91)l=93,g=!1,s=[];else if(w===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),w=r.input.charCodeAt(++r.position);w!==0;){if(_r(r,!0,e),w=r.input.charCodeAt(r.position),w===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||gt(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,w===63&&(a=r.input.charCodeAt(r.position+1),fn(a)&&(c=u=!0,r.position++,_r(r,!0,e))),i=r.line,af(r,e,WI,!1,!0),p=r.tag,h=r.result,_r(r,!0,e),w=r.input.charCodeAt(r.position),(u||r.line===i)&&w===58&&(c=!0,w=r.input.charCodeAt(++r.position),_r(r,!0,e),af(r,e,WI,!1,!0),C=r.result),g?of(r,s,f,p,h,C):c?s.push(of(r,null,f,p,h,C)):s.push(h),_r(r,!0,e),w=r.input.charCodeAt(r.position),w===44?(t=!0,w=r.input.charCodeAt(++r.position)):t=!1}gt(r,"unexpected end of the stream within a flow collection")}function nde(r,e){var t,i,n=vv,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)vv===n?n=g===43?z2:qpe:gt(r,"repeat of a chomping mode identifier");else if((u=_pe(g))>=0)u===0?gt(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?gt(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Ec(g)){do g=r.input.charCodeAt(++r.position);while(Ec(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!So(g)&&g!==0)}for(;g!==0;){for(xv(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),So(g)){l++;continue}if(r.lineIndente)&&l!==0)gt(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(af(r,e,zI,!0,n)&&(p?f=r.result:h=r.result),p||(of(r,c,u,g,f,h,s,o),g=f=h=null),_r(r,!0,-1),w=r.input.charCodeAt(r.position)),r.lineIndent>e&&w!==0)gt(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):gt(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):gt(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function lde(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(_r(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&>(r,"directive name must not be less than one character in length");o!==0;){for(;Ec(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!So(o));break}if(So(o))break;for(t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&xv(r),NA.call(_2,i)?_2[i](r,i,n):VI(r,'unknown document directive "'+i+'"')}if(_r(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,_r(r,!0,-1)):s&>(r,"directives end mark is expected"),af(r,r.lineIndent-1,zI,!1,!0),_r(r,!0,-1),r.checkLineBreaks&&Wpe.test(r.input.slice(e,r.position))&&VI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&XI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,_r(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=lH(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),cH(r,e,Qa.extend({schema:tH},t))}function ude(r,e){return uH(r,Qa.extend({schema:tH},e))}Id.exports.loadAll=cH;Id.exports.load=uH;Id.exports.safeLoadAll=cde;Id.exports.safeLoad=ude});var TH=y((h$e,Fv)=>{"use strict";var wd=pc(),Bd=tf(),gde=Ed(),fde=nf(),IH=Object.prototype.toString,yH=Object.prototype.hasOwnProperty,hde=9,yd=10,pde=13,dde=32,Cde=33,mde=34,wH=35,Ede=37,Ide=38,yde=39,wde=42,BH=44,Bde=45,bH=58,bde=61,Qde=62,Sde=63,vde=64,QH=91,SH=93,xde=96,vH=123,Pde=124,xH=125,Ti={};Ti[0]="\\0";Ti[7]="\\a";Ti[8]="\\b";Ti[9]="\\t";Ti[10]="\\n";Ti[11]="\\v";Ti[12]="\\f";Ti[13]="\\r";Ti[27]="\\e";Ti[34]='\\"';Ti[92]="\\\\";Ti[133]="\\N";Ti[160]="\\_";Ti[8232]="\\L";Ti[8233]="\\P";var Dde=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function kde(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&pH(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Af(o))return _I;a=s>0?r.charCodeAt(s-1):null,f=f&&pH(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?DH:kH:t>9&&PH(r)?_I:c?FH:RH}function Ode(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&Dde.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return Fde(r,l)}switch(Lde(e,o,r.indent,s,a)){case DH:return e;case kH:return"'"+e.replace(/'/g,"''")+"'";case RH:return"|"+dH(e,r.indent)+CH(hH(e,n));case FH:return">"+dH(e,r.indent)+CH(hH(Mde(e,s),n));case _I:return'"'+Ude(e,s)+'"';default:throw new Bd("impossible error: invalid scalar style")}}()}function dH(r,e){var t=PH(r)?String(e):"",i=r[r.length-1]===` +`,n=i&&(r[r.length-2]===` +`||r===` +`),s=n?"+":i?"":"-";return t+s+` +`}function CH(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function Mde(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,mH(r.slice(0,c),e)}(),n=r[0]===` +`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+mH(l,e),n=s}return i}function mH(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+r.slice(n,s),n=s+1),o=a;return l+=` +`,r.length-n>e&&o>n?l+=r.slice(n,o)+` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ude(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=fH((t-55296)*1024+i-56320+65536),s++;continue}n=Ti[t],e+=!n&&Af(t)?r[s]:n||fH(t)}return e}function Kde(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Ic(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function Yde(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Bd("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&yd===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=Dv(r,e)),Ic(r,e+1,u,!0,g)&&(r.dump&&yd===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function EH(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Ic(r,e,t,i,n,s){r.tag=null,r.dump=t,EH(r,t,!1)||EH(r,t,!0);var o=IH.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(Yde(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Gde(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(Hde(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Kde(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&Ode(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Bd("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function jde(r,e){var t=[],i=[],n,s;for(kv(r,t,i),n=0,s=i.length;n{"use strict";var ZI=gH(),LH=TH();function $I(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Tr.exports.Type=Ai();Tr.exports.Schema=dc();Tr.exports.FAILSAFE_SCHEMA=qI();Tr.exports.JSON_SCHEMA=bv();Tr.exports.CORE_SCHEMA=Qv();Tr.exports.DEFAULT_SAFE_SCHEMA=nf();Tr.exports.DEFAULT_FULL_SCHEMA=Ed();Tr.exports.load=ZI.load;Tr.exports.loadAll=ZI.loadAll;Tr.exports.safeLoad=ZI.safeLoad;Tr.exports.safeLoadAll=ZI.safeLoadAll;Tr.exports.dump=LH.dump;Tr.exports.safeDump=LH.safeDump;Tr.exports.YAMLException=tf();Tr.exports.MINIMAL_SCHEMA=qI();Tr.exports.SAFE_SCHEMA=nf();Tr.exports.DEFAULT_SCHEMA=Ed();Tr.exports.scan=$I("scan");Tr.exports.parse=$I("parse");Tr.exports.compose=$I("compose");Tr.exports.addConstructor=$I("addConstructor")});var UH=y((d$e,MH)=>{"use strict";var Jde=OH();MH.exports=Jde});var HH=y((C$e,KH)=>{"use strict";function Wde(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function yc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,yc)}Wde(yc,Error);yc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ne]:pe})))},H=function(R){return R},j=function(R){return R},$=Ms("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===vA*Gg},A=function(R){return R.length===(vA+1)*Gg},ae=function(){return vA++,!0},ge=function(){return vA--,!0},_=function(){return Lg()},L=Ms("pseudostring"),N=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Fn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),we=/^[^\r\n\t ,\][{}:#"']/,Te=Fn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Lg().replace(/^ *| *$/g,"")},Le="--",se=ar("--",!1),Ae=/^[a-zA-Z\/0-9]/,be=Fn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,le=Fn(["\r",` +`," "," ",":",","],!0,!1),Ge="null",ie=ar("null",!1),Y=function(){return null},he="true",re=ar("true",!1),me=function(){return!0},tt="false",Rt=ar("false",!1),It=function(){return!1},Ur=Ms("string"),oi='"',pi=ar('"',!1),pr=function(){return""},di=function(R){return R},ai=function(R){return R.join("")},Os=/^[^"\\\0-\x1F\x7F]/,dr=Fn(['"',"\\",["\0",""],"\x7F"],!0,!1),Bi='\\"',_n=ar('\\"',!1),pa=function(){return'"'},EA="\\\\",kg=ar("\\\\",!1),Zn=function(){return"\\"},IA="\\/",da=ar("\\/",!1),Jp=function(){return"/"},yA="\\b",wA=ar("\\b",!1),Br=function(){return"\b"},Vl="\\f",Rg=ar("\\f",!1),Eo=function(){return"\f"},Fg="\\n",Wp=ar("\\n",!1),zp=function(){return` +`},Pr="\\r",oe=ar("\\r",!1),Io=function(){return"\r"},kn="\\t",Ng=ar("\\t",!1),bt=function(){return" "},Xl="\\u",Rn=ar("\\u",!1),$n=function(R,q,pe,Ne){return String.fromCharCode(parseInt(`0x${R}${q}${pe}${Ne}`))},es=/^[0-9a-fA-F]/,ut=Fn([["0","9"],["a","f"],["A","F"]],!1,!1),yo=Ms("blank space"),at=/^[ \t]/,ln=Fn([" "," "],!1,!1),S=Ms("white space"),Lt=/^[ \t\n\r]/,Tg=Fn([" "," ",` +`,"\r"],!1,!1),_l=`\r +`,Vp=ar(`\r +`,!1),Xp=` +`,_p=ar(` +`,!1),Zp="\r",$p=ar("\r",!1),G=0,yt=0,BA=[{line:1,column:1}],Wi=0,Zl=[],We=0,Ca;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Lg(){return r.substring(yt,G)}function uI(){return cn(yt,G)}function ed(R,q){throw q=q!==void 0?q:cn(yt,G),ec([Ms(R)],r.substring(yt,G),q)}function gI(R,q){throw q=q!==void 0?q:cn(yt,G),Og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Fn(R,q,pe){return{type:"class",parts:R,inverted:q,ignoreCase:pe}}function $l(){return{type:"any"}}function td(){return{type:"end"}}function Ms(R){return{type:"other",description:R}}function ma(R){var q=BA[R],pe;if(q)return q;for(pe=R-1;!BA[pe];)pe--;for(q=BA[pe],q={line:q.line,column:q.column};peWi&&(Wi=G,Zl=[]),Zl.push(R))}function Og(R,q){return new yc(R,null,null,q)}function ec(R,q,pe){return new yc(yc.buildMessage(R,q),R,q,pe)}function Us(){var R;return R=Mg(),R}function tc(){var R,q,pe;for(R=G,q=[],pe=bA();pe!==t;)q.push(pe),pe=bA();return q!==t&&(yt=R,q=s(q)),R=q,R}function bA(){var R,q,pe,Ne,xe;return R=G,q=Ia(),q!==t?(r.charCodeAt(G)===45?(pe=o,G++):(pe=t,We===0&&ke(a)),pe!==t?(Ne=Nr(),Ne!==t?(xe=Ea(),xe!==t?(yt=R,q=l(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function Mg(){var R,q,pe;for(R=G,q=[],pe=Ug();pe!==t;)q.push(pe),pe=Ug();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ug(){var R,q,pe,Ne,xe,qe,dt,Ft,Nn;if(R=G,q=Nr(),q===t&&(q=null),q!==t){if(pe=G,r.charCodeAt(G)===35?(Ne=u,G++):(Ne=t,We===0&&ke(g)),Ne!==t){if(xe=[],qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&ke(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t),qe!==t)for(;qe!==t;)xe.push(qe),qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&ke(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t);else xe=t;xe!==t?(Ne=[Ne,xe],pe=Ne):(G=pe,pe=t)}else G=pe,pe=t;if(pe===t&&(pe=null),pe!==t){if(Ne=[],xe=Hs(),xe!==t)for(;xe!==t;)Ne.push(xe),xe=Hs();else Ne=t;Ne!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=Ia(),q!==t?(pe=rc(),pe!==t?(Ne=Nr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&ke(C)),xe!==t?(qe=Nr(),qe===t&&(qe=null),qe!==t?(dt=Ea(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Ia(),q!==t?(pe=Ks(),pe!==t?(Ne=Nr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&ke(C)),xe!==t?(qe=Nr(),qe===t&&(qe=null),qe!==t?(dt=Ea(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=Ia(),q!==t)if(pe=Ks(),pe!==t)if(Ne=Nr(),Ne!==t)if(xe=fI(),xe!==t){if(qe=[],dt=Hs(),dt!==t)for(;dt!==t;)qe.push(dt),dt=Hs();else qe=t;qe!==t?(yt=R,q=w(pe,xe),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=Ia(),q!==t)if(pe=Ks(),pe!==t){if(Ne=[],xe=G,qe=Nr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&ke(v)),dt!==t?(Ft=Nr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Ks(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t),xe!==t)for(;xe!==t;)Ne.push(xe),xe=G,qe=Nr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&ke(v)),dt!==t?(Ft=Nr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Ks(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t);else Ne=t;Ne!==t?(xe=Nr(),xe===t&&(xe=null),xe!==t?(r.charCodeAt(G)===58?(qe=p,G++):(qe=t,We===0&&ke(C)),qe!==t?(dt=Nr(),dt===t&&(dt=null),dt!==t?(Ft=Ea(),Ft!==t?(yt=R,q=T(pe,Ne,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function Ea(){var R,q,pe,Ne,xe,qe,dt;if(R=G,q=G,We++,pe=G,Ne=Gs(),Ne!==t?(xe=$e(),xe!==t?(r.charCodeAt(G)===45?(qe=o,G++):(qe=t,We===0&&ke(a)),qe!==t?(dt=Nr(),dt!==t?(Ne=[Ne,xe,qe,dt],pe=Ne):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t),We--,pe!==t?(G=q,q=void 0):q=t,q!==t?(pe=Hs(),pe!==t?(Ne=wo(),Ne!==t?(xe=tc(),xe!==t?(qe=QA(),qe!==t?(yt=R,q=H(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Gs(),q!==t?(pe=wo(),pe!==t?(Ne=Mg(),Ne!==t?(xe=QA(),xe!==t?(yt=R,q=H(Ne),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=ic(),q!==t){if(pe=[],Ne=Hs(),Ne!==t)for(;Ne!==t;)pe.push(Ne),Ne=Hs();else pe=t;pe!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function Ia(){var R,q,pe;for(We++,R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));return q!==t?(yt=G,pe=Z(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),We--,R===t&&(q=t,We===0&&ke($)),R}function $e(){var R,q,pe;for(R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));return q!==t?(yt=G,pe=A(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),R}function wo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function QA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function rc(){var R;return R=nc(),R===t&&(R=rd()),R}function Ks(){var R,q,pe;if(R=nc(),R===t){if(R=G,q=[],pe=Kg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Kg();else q=t;q!==t&&(yt=R,q=_()),R=q}return R}function ic(){var R;return R=id(),R===t&&(R=hI(),R===t&&(R=nc(),R===t&&(R=rd()))),R}function fI(){var R;return R=id(),R===t&&(R=nc(),R===t&&(R=Kg())),R}function rd(){var R,q,pe,Ne,xe,qe;if(We++,R=G,N.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ue)),q!==t){for(pe=[],Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&ke(Te)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&ke(Te)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;return We--,R===t&&(q=t,We===0&&ke(L)),R}function Kg(){var R,q,pe,Ne,xe;if(R=G,r.substr(G,2)===Le?(q=Le,G+=2):(q=t,We===0&&ke(se)),q===t&&(q=null),q!==t)if(Ae.test(r.charAt(G))?(pe=r.charAt(G),G++):(pe=t,We===0&&ke(be)),pe!==t){for(Ne=[],fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&ke(le));xe!==t;)Ne.push(xe),fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&ke(le));Ne!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function id(){var R,q;return R=G,r.substr(G,4)===Ge?(q=Ge,G+=4):(q=t,We===0&&ke(ie)),q!==t&&(yt=R,q=Y()),R=q,R}function hI(){var R,q;return R=G,r.substr(G,4)===he?(q=he,G+=4):(q=t,We===0&&ke(re)),q!==t&&(yt=R,q=me()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,We===0&&ke(Rt)),q!==t&&(yt=R,q=It()),R=q),R}function nc(){var R,q,pe,Ne;return We++,R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&ke(pi)),q!==t?(r.charCodeAt(G)===34?(pe=oi,G++):(pe=t,We===0&&ke(pi)),pe!==t?(yt=R,q=pr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&ke(pi)),q!==t?(pe=pI(),pe!==t?(r.charCodeAt(G)===34?(Ne=oi,G++):(Ne=t,We===0&&ke(pi)),Ne!==t?(yt=R,q=di(pe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),We--,R===t&&(q=t,We===0&&ke(Ur)),R}function pI(){var R,q,pe;if(R=G,q=[],pe=Hg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Hg();else q=t;return q!==t&&(yt=R,q=ai(q)),R=q,R}function Hg(){var R,q,pe,Ne,xe,qe;return Os.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&ke(dr)),R===t&&(R=G,r.substr(G,2)===Bi?(q=Bi,G+=2):(q=t,We===0&&ke(_n)),q!==t&&(yt=R,q=pa()),R=q,R===t&&(R=G,r.substr(G,2)===EA?(q=EA,G+=2):(q=t,We===0&&ke(kg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===IA?(q=IA,G+=2):(q=t,We===0&&ke(da)),q!==t&&(yt=R,q=Jp()),R=q,R===t&&(R=G,r.substr(G,2)===yA?(q=yA,G+=2):(q=t,We===0&&ke(wA)),q!==t&&(yt=R,q=Br()),R=q,R===t&&(R=G,r.substr(G,2)===Vl?(q=Vl,G+=2):(q=t,We===0&&ke(Rg)),q!==t&&(yt=R,q=Eo()),R=q,R===t&&(R=G,r.substr(G,2)===Fg?(q=Fg,G+=2):(q=t,We===0&&ke(Wp)),q!==t&&(yt=R,q=zp()),R=q,R===t&&(R=G,r.substr(G,2)===Pr?(q=Pr,G+=2):(q=t,We===0&&ke(oe)),q!==t&&(yt=R,q=Io()),R=q,R===t&&(R=G,r.substr(G,2)===kn?(q=kn,G+=2):(q=t,We===0&&ke(Ng)),q!==t&&(yt=R,q=bt()),R=q,R===t&&(R=G,r.substr(G,2)===Xl?(q=Xl,G+=2):(q=t,We===0&&ke(Rn)),q!==t?(pe=SA(),pe!==t?(Ne=SA(),Ne!==t?(xe=SA(),xe!==t?(qe=SA(),qe!==t?(yt=R,q=$n(pe,Ne,xe,qe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function SA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&ke(ut)),R}function Nr(){var R,q;if(We++,R=[],at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ln)),q!==t)for(;q!==t;)R.push(q),at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ln));else R=t;return We--,R===t&&(q=t,We===0&&ke(yo)),R}function dI(){var R,q;if(We++,R=[],Lt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(Tg)),q!==t)for(;q!==t;)R.push(q),Lt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(Tg));else R=t;return We--,R===t&&(q=t,We===0&&ke(S)),R}function Hs(){var R,q,pe,Ne,xe,qe;if(R=G,q=Gs(),q!==t){for(pe=[],Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(q=[q,pe],R=q):(G=R,R=t)}else G=R,R=t;return R}function Gs(){var R;return r.substr(G,2)===_l?(R=_l,G+=2):(R=t,We===0&&ke(Vp)),R===t&&(r.charCodeAt(G)===10?(R=Xp,G++):(R=t,We===0&&ke(_p)),R===t&&(r.charCodeAt(G)===13?(R=Zp,G++):(R=t,We===0&&ke($p)))),R}let Gg=2,vA=0;if(Ca=n(),Ca!==t&&G===r.length)return Ca;throw Ca!==t&&G{"use strict";var $de=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=$de(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};Tv.exports=JH;Tv.exports.default=JH});var zH=y((B$e,eCe)=>{eCe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var wc=y(Mn=>{"use strict";var XH=zH(),vo=process.env;Object.defineProperty(Mn,"_vendors",{value:XH.map(function(r){return r.constant})});Mn.name=null;Mn.isPR=null;XH.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return VH(i)});if(Mn[r.constant]=t,t)switch(Mn.name=r.name,typeof r.pr){case"string":Mn.isPR=!!vo[r.pr];break;case"object":"env"in r.pr?Mn.isPR=r.pr.env in vo&&vo[r.pr.env]!==r.pr.ne:"any"in r.pr?Mn.isPR=r.pr.any.some(function(i){return!!vo[i]}):Mn.isPR=VH(r.pr);break;default:Mn.isPR=null}});Mn.isCI=!!(vo.CI||vo.CONTINUOUS_INTEGRATION||vo.BUILD_NUMBER||vo.RUN_ID||Mn.name);function VH(r){return typeof r=="string"?!!vo[r]:Object.keys(r).every(function(e){return vo[e]===r[e]})}});var ry=y(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});var tCe=0,rCe=1,iCe=2,nCe="",sCe="\0",oCe=-1,aCe=/^(-h|--help)(?:=([0-9]+))?$/,ACe=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,lCe=/^-[a-zA-Z]{2,}$/,cCe=/^([^=]+)=([\s\S]*)$/,uCe=process.env.DEBUG_CLI==="1";Un.BATCH_REGEX=lCe;Un.BINDING_REGEX=cCe;Un.DEBUG=uCe;Un.END_OF_INPUT=sCe;Un.HELP_COMMAND_INDEX=oCe;Un.HELP_REGEX=aCe;Un.NODE_ERRORED=iCe;Un.NODE_INITIAL=tCe;Un.NODE_SUCCESS=rCe;Un.OPTION_REGEX=ACe;Un.START_OF_INPUT=nCe});var iy=y(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});var gCe=ry(),Lv=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Ov=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} + +${this.candidates.map(({usage:n})=>`$ ${n}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${i} +${Uv(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${Uv(e)}`}},Mv=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${Uv(e)}`}},Uv=r=>`While running ${r.filter(e=>e!==gCe.END_OF_INPUT).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;Qd.AmbiguousSyntaxError=Mv;Qd.UnknownSyntaxError=Ov;Qd.UsageError=Lv});var va=y(TA=>{"use strict";Object.defineProperty(TA,"__esModule",{value:!0});var _H=iy(),ZH=Symbol("clipanion/isOption");function fCe(r){return{...r,[ZH]:!0}}function hCe(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function Kv(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function $H(r,e){return e.length===1?new _H.UsageError(`${r}: ${Kv(e[0],!0)}`):new _H.UsageError(`${r}: +${e.map(t=>` +- ${Kv(t)}`).join("")}`)}function pCe(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw $H(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}TA.applyValidator=pCe;TA.cleanValidationError=Kv;TA.formatError=$H;TA.isOptionSymbol=ZH;TA.makeCommandOption=fCe;TA.rerouteArguments=hCe});var ns=y(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});var eG=/^[a-zA-Z_][a-zA-Z0-9_]*$/,tG=/^#[0-9a-f]{6}$/i,rG=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,iG=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,nG=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Hv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,sG=r=>()=>r;function Qt({test:r}){return sG(r)()}function Zr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function LA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:eG.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function Bc(r,e){return t=>{let i=r[e];return r[e]=t,Bc(r,e).bind(null,i)}}function oG(r,e){return t=>{r[e]=t}}function ny(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}var aG=()=>Qt({test:(r,e)=>!0});function dCe(r){return Qt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Zr(r)})`):!0})}var CCe=()=>Qt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Zr(r)})`):!0});function mCe(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return Qt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Zr(i)})`)})}var ECe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),ICe=()=>Qt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=ECe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Zr(r)})`)}return!0}}),yCe=()=>Qt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Zr(r)})`)}return!0}}),wCe=()=>Qt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&Hv.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Zr(r)})`)}return!0}}),BCe=(r,{delimiter:e}={})=>Qt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Zr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=AG(r.length);return Qt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Zr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;aQt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Zr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return Qt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Zr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:LA(n,l),coercion:Bc(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),`Extraneous property (got ${Zr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:oG(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},vCe=r=>Qt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Zr(e)})`)}),xCe=(r,{exclusive:e=!1}={})=>Qt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),PCe=(r,e)=>Qt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?Bc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),DCe=r=>Qt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),kCe=r=>Qt({test:(e,t)=>e===null?!0:r(e,t)}),RCe=r=>Qt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),FCe=r=>Qt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),AG=r=>Qt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),NCe=({map:r}={})=>Qt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sQt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),LCe=()=>Qt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),OCe=r=>Qt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),MCe=r=>Qt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),UCe=(r,e)=>Qt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),KCe=(r,e)=>Qt({test:(t,i)=>t>=r&&tQt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),GCe=r=>Qt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Zr(e)})`)}),YCe=()=>Qt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),jCe=()=>Qt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),qCe=()=>Qt({test:(r,e)=>nG.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Zr(r)})`)}),JCe=()=>Qt({test:(r,e)=>Hv.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Zr(r)})`)}),WCe=({alpha:r=!1})=>Qt({test:(e,t)=>(r?tG.test(e):rG.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Zr(e)})`)}),zCe=()=>Qt({test:(r,e)=>iG.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Zr(r)})`)}),VCe=(r=aG())=>Qt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Zr(e)})`)}return r(i,t)}}),XCe=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${ny(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},_Ce=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${ny(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},ZCe=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(st.KeyRelationship||(st.KeyRelationship={}));var $Ce={[st.KeyRelationship.Forbids]:{expect:!1,message:"forbids using"},[st.KeyRelationship.Requires]:{expect:!0,message:"requires using"}},eme=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=$Ce[e];return Qt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${ny(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})};st.applyCascade=PCe;st.base64RegExp=iG;st.colorStringAlphaRegExp=rG;st.colorStringRegExp=tG;st.computeKey=LA;st.getPrintable=Zr;st.hasExactLength=AG;st.hasForbiddenKeys=_Ce;st.hasKeyRelationship=eme;st.hasMaxLength=FCe;st.hasMinLength=RCe;st.hasMutuallyExclusiveKeys=ZCe;st.hasRequiredKeys=XCe;st.hasUniqueItems=NCe;st.isArray=BCe;st.isAtLeast=OCe;st.isAtMost=MCe;st.isBase64=zCe;st.isBoolean=ICe;st.isDate=wCe;st.isDict=QCe;st.isEnum=mCe;st.isHexColor=WCe;st.isISO8601=JCe;st.isInExclusiveRange=KCe;st.isInInclusiveRange=UCe;st.isInstanceOf=vCe;st.isInteger=HCe;st.isJSON=VCe;st.isLiteral=dCe;st.isLowerCase=YCe;st.isNegative=TCe;st.isNullable=kCe;st.isNumber=yCe;st.isObject=SCe;st.isOneOf=xCe;st.isOptional=DCe;st.isPositive=LCe;st.isString=CCe;st.isTuple=bCe;st.isUUID4=qCe;st.isUnknown=aG;st.isUpperCase=jCe;st.iso8601RegExp=Hv;st.makeCoercionFn=Bc;st.makeSetter=oG;st.makeTrait=sG;st.makeValidator=Qt;st.matchesRegExp=GCe;st.plural=ny;st.pushError=pt;st.simpleKeyRegExp=eG;st.uuid4RegExp=nG});var bc=y(Gv=>{"use strict";Object.defineProperty(Gv,"__esModule",{value:!0});var lG=va();function tme(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach(function(t){if(t!=="default"){var i=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:function(){return r[t]}})}}),e.default=r,Object.freeze(e)}var Sd=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(function(){return tme(ns())}),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw lG.formatError("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};Sd.isOption=lG.isOptionSymbol;Sd.Default=[];Gv.Command=Sd});var jv=y(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var cG=80,Yv=Array(cG).fill("\u2501");for(let r=0;r<=24;++r)Yv[Yv.length-r]=`\x1B[38;5;${232+r}m\u2501`;var rme={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},ime={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function nme(r){let e=r.split(` +`),t=e.filter(n=>n.match(/\S/)),i=t.length>0?t.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` +`)}function sme(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,` +`),r=nme(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),r=r.replace(/\n(\n)?\n*/g,"$1"),t&&(r=r.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` +`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` +`)}).join(` + +`)),r=r.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),r=r.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),r?`${r} +`:""}vd.formatMarkdownish=sme;vd.richFormat=rme;vd.textFormat=ime});var ly=y(Ar=>{"use strict";Object.defineProperty(Ar,"__esModule",{value:!0});var lt=ry(),ay=iy();function Vi(r){lt.DEBUG&&console.log(r)}var uG={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:lt.HELP_COMMAND_INDEX};function qv(){return{nodes:[Li(),Li(),Li()]}}function gG(r){let e=qv(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(lt.NODE_INITIAL)}function hG(r,{prefix:e=""}={}){if(lt.DEBUG){Vi(`${e}Nodes are:`);for(let t=0;tl!==lt.NODE_ERRORED).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===lt.NODE_ERRORED))throw new ay.UnknownSyntaxError(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=pG(a)}if(i.length>0){Vi(" Results:");for(let s of i)Vi(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else Vi(" No results");return i}function ome(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,lt.END_OF_INPUT)){for(let{to:t}of r.statics[lt.END_OF_INPUT])if(t===lt.NODE_SUCCESS)return!0}return!1}function ame(r,e,t){let i=t&&e.length>0?[""]:[],n=Jv(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],w=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=w[0];for(let{to:D,reducer:T}of C.statics[v])T==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=ome(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==lt.END_OF_INPUT||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===lt.NODE_ERRORED)continue;let p=IG(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function Ame(r,e){let t=Jv(r,[...e,lt.END_OF_INPUT]);return dG(e,t.map(({state:i})=>i))}function pG(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function dG(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new ay.UnknownSyntaxError(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=CG(c);if(u.length>1)throw new ay.AmbiguousSyntaxError(r,u.map(g=>g.candidateUsage));return u[0]}function CG(r){let e=[],t=[];for(let i of r)i.selectedIndex===lt.HELP_COMMAND_INDEX?t.push(i):e.push(i);return t.length>0&&e.push({...uG,path:mG(...t.map(i=>i.path)),options:t.reduce((i,n)=>i.concat(n.options),[])}),e}function mG(r,e,...t){return e===void 0?Array.from(r):mG(r.filter((i,n)=>i===e[n]),...t)}function Li(){return{dynamics:[],shortcuts:[],statics:{}}}function Wv(r){return r===lt.NODE_SUCCESS||r===lt.NODE_ERRORED}function sy(r,e=0){return{to:Wv(r.to)?r.to:r.to>2?r.to+e-2:r.to+e,reducer:r.reducer}}function EG(r,e=0){let t=Li();for(let[i,n]of r.dynamics)t.dynamics.push([i,sy(n,e)]);for(let i of r.shortcuts)t.shortcuts.push(sy(i,e));for(let[i,n]of Object.entries(r.statics))t.statics[i]=n.map(s=>sy(s,e));return t}function Ei(r,e,t,i,n){r.nodes[e].dynamics.push([t,{to:i,reducer:n}])}function Qc(r,e,t,i){r.nodes[e].shortcuts.push({to:t,reducer:i})}function xo(r,e,t,i,n){(Object.prototype.hasOwnProperty.call(r.nodes[e].statics,t)?r.nodes[e].statics[t]:r.nodes[e].statics[t]=[]).push({to:i,reducer:n})}function xd(r,e,t,i){if(Array.isArray(e)){let[n,...s]=e;return r[n](t,i,...s)}else return r[e](t,i)}function IG(r,e){let t=Array.isArray(r)?Pd[r[0]]:Pd[r];if(typeof t.suggest>"u")return null;let i=Array.isArray(r)?r.slice(1):[];return t.suggest(e,...i)}var Pd={always:()=>!0,isOptionLike:(r,e)=>!r.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(r,e)=>r.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(r,e,t,i)=>!r.ignoreOptions&&e===t,isBatchOption:(r,e,t)=>!r.ignoreOptions&<.BATCH_REGEX.test(e)&&[...e.slice(1)].every(i=>t.includes(`-${i}`)),isBoundOption:(r,e,t,i)=>{let n=e.match(lt.BINDING_REGEX);return!r.ignoreOptions&&!!n&<.OPTION_REGEX.test(n[1])&&t.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(r,e,t)=>!r.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(r,e)=>!r.ignoreOptions&<.HELP_REGEX.test(e),isUnsupportedOption:(r,e,t)=>!r.ignoreOptions&&e.startsWith("-")&<.OPTION_REGEX.test(e)&&!t.includes(e),isInvalidOption:(r,e)=>!r.ignoreOptions&&e.startsWith("-")&&!lt.OPTION_REGEX.test(e)};Pd.isOption.suggest=(r,e,t=!0)=>t?null:[e];var oy={setCandidateState:(r,e,t)=>({...r,...t}),setSelectedIndex:(r,e,t)=>({...r,selectedIndex:t}),pushBatch:(r,e)=>({...r,options:r.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(r,e)=>{let[,t,i]=e.match(lt.BINDING_REGEX);return{...r,options:r.options.concat({name:t,value:i})}},pushPath:(r,e)=>({...r,path:r.path.concat(e)}),pushPositional:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!1})}),pushExtra:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:Po})}),pushTrue:(r,e,t=e)=>({...r,options:r.options.concat({name:e,value:!0})}),pushFalse:(r,e,t=e)=>({...r,options:r.options.concat({name:t,value:!1})}),pushUndefined:(r,e)=>({...r,options:r.options.concat({name:e,value:void 0})}),pushStringValue:(r,e)=>{var t;let i={...r,options:[...r.options]},n=r.options[r.options.length-1];return n.value=((t=n.value)!==null&&t!==void 0?t:[]).concat([e]),i},setStringValue:(r,e)=>{let t={...r,options:[...r.options]},i=r.options[r.options.length-1];return i.value=e,t},inhibateOptions:r=>({...r,ignoreOptions:!0}),useHelp:(r,e,t)=>{let[,,i]=e.match(lt.HELP_REGEX);return typeof i<"u"?{...r,options:[{name:"-c",value:String(t)},{name:"-i",value:i}]}:{...r,options:[{name:"-c",value:String(t)}]}},setError:(r,e,t)=>e===lt.END_OF_INPUT?{...r,errorMessage:`${t}.`}:{...r,errorMessage:`${t} ("${e}").`},setOptionArityError:(r,e)=>{let t=r.options[r.options.length-1];return{...r,errorMessage:`Not enough arguments to option ${t.name}.`}}},Po=Symbol(),Ay=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:i,proxy:n})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Po)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Po?this.arity.extra.push(e):this.arity.extra!==Po&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Po)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Po?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=qv(),t=lt.NODE_INITIAL,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);t=ss(e,Li()),xo(e,lt.NODE_INITIAL,lt.START_OF_INPUT,t,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=t;if(a.length>0){let f=ss(e,Li());Qc(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=ss(e,Li());Ei(e,l,"isHelp",f,["useHelp",this.cliIndex]),xo(e,f,lt.END_OF_INPUT,lt.NODE_SUCCESS,["setSelectedIndex",lt.HELP_COMMAND_INDEX]),this.registerOptions(e,l)}this.arity.leading.length>0&&xo(e,l,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&xo(e,h,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]),Ei(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Po||this.arity.extra.length>0){let f=ss(e,Li());if(Qc(e,c,f),this.arity.extra===Po){let h=ss(e,Li());this.arity.proxy||this.registerOptions(e,h),Ei(e,c,s,h,"pushExtraNoLimits"),Ei(e,h,s,h,"pushExtraNoLimits"),Qc(e,h,f)}else for(let h=0;h0&&xo(e,u,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)Ei(e,t,["isOption",s,i.hidden||s!==n],t,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&Ei(e,t,["isNegatedOption",s],t,["pushFalse",s]);else{let s=ss(e,Li());for(let o of i.names)Ei(e,t,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&eAme(i,n),suggest:(n,s)=>ame(i,n,s)}}};Ar.CliBuilder=Dd;Ar.CommandBuilder=Ay;Ar.NoLimits=Po;Ar.aggregateHelpStates=CG;Ar.cloneNode=EG;Ar.cloneTransition=sy;Ar.debug=Vi;Ar.debugMachine=hG;Ar.execute=xd;Ar.injectNode=ss;Ar.isTerminalNode=Wv;Ar.makeAnyOfMachine=gG;Ar.makeNode=Li;Ar.makeStateMachine=qv;Ar.reducers=oy;Ar.registerDynamic=Ei;Ar.registerShortcut=Qc;Ar.registerStatic=xo;Ar.runMachineInternal=Jv;Ar.selectBestState=dG;Ar.simplifyMachine=fG;Ar.suggest=IG;Ar.tests=Pd;Ar.trimSmallerBranches=pG});var yG=y(zv=>{"use strict";Object.defineProperty(zv,"__esModule",{value:!0});var lme=bc(),kd=class extends lme.Command{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let i=new kd(t);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let t=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}};zv.HelpCommand=kd});var vG=y(Vv=>{"use strict";Object.defineProperty(Vv,"__esModule",{value:!0});var cme=ry(),wG=bc(),ume=J("tty"),gme=ly(),hn=jv(),fme=yG();function hme(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var BG=hme(ume),bG=Symbol("clipanion/errorCommand");function pme(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var OA=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new gme.CliBuilder({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new OA(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[wG.Command.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case cme.HELP_COMMAND_INDEX:return fme.HelpCommand.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[bG]=a,l}}break}}async run(e,t){var i;let n,s={...OA.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?dme(s):SG,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?hn.formatMarkdownish(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?hn.formatMarkdownish(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?hn.formatMarkdownish(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[hn.formatMarkdownish(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof wG.Command?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=hn.formatMarkdownish(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` +`),(c!==""||u.length>0)&&(a+=`${this.format(t).header("Usage")} +`,a+=` +`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(t).bold(n)}${g} +`,f.length>0){a+=` +`,a+=`${hn.richFormat.header("Options")} +`;let h=f.reduce((p,C)=>Math.max(p,C.definition.length),0);a+=` +`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${hn.formatMarkdownish(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` +`,a+=`${this.format(t).header("Details")} +`,a+=` +`,a+=hn.formatMarkdownish(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=` +`,a+=`${this.format(t).header("Examples")} +`;for(let[h,p]of u)a+=` +`,a+=hn.formatMarkdownish(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(t).bold(n)}${l} +`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?hn.formatMarkdownish(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:w}=this.getUsageByIndex(h);C.push({commandClass:f,usage:w})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:u?a+=`${this.format(t).header(`${this.binaryLabel}`)} +`:a+=`${this.format(t).header(`${this.binaryVersion}`)} +`,a+=` ${this.format(t).bold(n)}${this.binaryName} +`):a+=`${this.format(t).bold(n)}${this.binaryName} +`;for(let f of c){let h=l.get(f).slice().sort((C,w)=>C.usage.localeCompare(w.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` +`,a+=`${this.format(t).header(`${p}`)} +`;for(let{commandClass:C,usage:w}of h){let B=C.usage.description||"undocumented";a+=` +`,a+=` ${this.format(t).bold(w)} +`,a+=` ${hn.formatMarkdownish(B,{format:this.format(t),paragraphs:!1})}`}}a+=` +`,a+=hn.formatMarkdownish("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[bG])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} +`;let l=e.clipanion;return typeof l<"u"?l.type==="usage"&&(o+=` +`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} +`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:OA.defaultContext.colorDepth>1)?hn.richFormat:hn.textFormat}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};OA.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in BG.default.WriteStream.prototype?BG.default.WriteStream.prototype.getColorDepth():pme()};var QG;function dme(r){let e=QG;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return SG;let{AsyncLocalStorage:t}=J("async_hooks");e=QG=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function SG(r){return r()}Vv.Cli=OA});var xG=y(Xv=>{"use strict";Object.defineProperty(Xv,"__esModule",{value:!0});var Cme=bc(),cy=class extends Cme.Command{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};cy.paths=[["--clipanion=definitions"]];Xv.DefinitionsCommand=cy});var PG=y(_v=>{"use strict";Object.defineProperty(_v,"__esModule",{value:!0});var mme=bc(),uy=class extends mme.Command{async execute(){this.context.stdout.write(this.cli.usage())}};uy.paths=[["-h"],["--help"]];_v.HelpCommand=uy});var DG=y(Zv=>{"use strict";Object.defineProperty(Zv,"__esModule",{value:!0});var Eme=bc(),gy=class extends Eme.Command{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};gy.paths=[["-v"],["--version"]];Zv.VersionCommand=gy});var kG=y(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});var Ime=xG(),yme=PG(),wme=DG();Rd.DefinitionsCommand=Ime.DefinitionsCommand;Rd.HelpCommand=yme.HelpCommand;Rd.VersionCommand=wme.VersionCommand});var FG=y($v=>{"use strict";Object.defineProperty($v,"__esModule",{value:!0});var RG=va();function Bme(r,e,t){let[i,n]=RG.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return RG.makeCommandOption({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}$v.Array=Bme});var TG=y(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var NG=va();function bme(r,e,t){let[i,n]=NG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return NG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}ex.Boolean=bme});var OG=y(tx=>{"use strict";Object.defineProperty(tx,"__esModule",{value:!0});var LG=va();function Qme(r,e,t){let[i,n]=LG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return LG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}tx.Counter=Qme});var MG=y(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Sme=va();function vme(r={}){return Sme.makeCommandOption({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}rx.Proxy=vme});var UG=y(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var xme=va(),Pme=ly();function Dme(r={}){return xme.makeCommandOption({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===Pme.NoLimits||a.extra===!1&&oo)}})}ix.Rest=Dme});var KG=y(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var Fd=va(),kme=ly();function Rme(r,e,t){let[i,n]=Fd.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Fd.makeCommandOption({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Fd.applyValidator(g!=null?g:c,f,n.validator):f}})}function Fme(r={}){let{required:e=!0}=r;return Fd.makeCommandOption({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});var lf=va(),Tme=FG(),Lme=TG(),Ome=OG(),Mme=MG(),Ume=UG(),Kme=KG();pn.applyValidator=lf.applyValidator;pn.cleanValidationError=lf.cleanValidationError;pn.formatError=lf.formatError;pn.isOptionSymbol=lf.isOptionSymbol;pn.makeCommandOption=lf.makeCommandOption;pn.rerouteArguments=lf.rerouteArguments;pn.Array=Tme.Array;pn.Boolean=Lme.Boolean;pn.Counter=Ome.Counter;pn.Proxy=Mme.Proxy;pn.Rest=Ume.Rest;pn.String=Kme.String});var Xe=y(MA=>{"use strict";Object.defineProperty(MA,"__esModule",{value:!0});var Hme=iy(),Gme=bc(),Yme=jv(),jme=vG(),qme=kG(),Jme=HG();MA.UsageError=Hme.UsageError;MA.Command=Gme.Command;MA.formatMarkdownish=Yme.formatMarkdownish;MA.Cli=jme.Cli;MA.Builtins=qme;MA.Option=Jme});var YG=y((J$e,GG)=>{"use strict";GG.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var cf=y((W$e,sx)=>{"use strict";var Wme=YG(),jG=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Wme(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};sx.exports=jG;sx.exports.default=jG});var Nd=y((V$e,qG)=>{var zme="2.0.0",Vme=Number.MAX_SAFE_INTEGER||9007199254740991,Xme=16;qG.exports={SEMVER_SPEC_VERSION:zme,MAX_LENGTH:256,MAX_SAFE_INTEGER:Vme,MAX_SAFE_COMPONENT_LENGTH:Xme}});var Td=y((X$e,JG)=>{var _me=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};JG.exports=_me});var Sc=y((KA,WG)=>{var{MAX_SAFE_COMPONENT_LENGTH:ox}=Nd(),Zme=Td();KA=WG.exports={};var $me=KA.re=[],_e=KA.src=[],Ze=KA.t={},eEe=0,St=(r,e,t)=>{let i=eEe++;Zme(i,e),Ze[r]=i,_e[i]=e,$me[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${_e[Ze.NUMERICIDENTIFIER]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${_e[Ze.NUMERICIDENTIFIERLOOSE]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${_e[Ze.PRERELEASEIDENTIFIER]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${_e[Ze.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${_e[Ze.BUILDIDENTIFIER]}(?:\\.${_e[Ze.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${_e[Ze.MAINVERSION]}${_e[Ze.PRERELEASE]}?${_e[Ze.BUILD]}?`);St("FULL",`^${_e[Ze.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${_e[Ze.MAINVERSIONLOOSE]}${_e[Ze.PRERELEASELOOSE]}?${_e[Ze.BUILD]}?`);St("LOOSE",`^${_e[Ze.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${_e[Ze.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${_e[Ze.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:${_e[Ze.PRERELEASE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:${_e[Ze.PRERELEASELOOSE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${ox}})(?:\\.(\\d{1,${ox}}))?(?:\\.(\\d{1,${ox}}))?(?:$|[^\\d])`);St("COERCERTL",_e[Ze.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${_e[Ze.LONETILDE]}\\s+`,!0);KA.tildeTrimReplace="$1~";St("TILDE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${_e[Ze.LONECARET]}\\s+`,!0);KA.caretTrimReplace="$1^";St("CARET",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]}|${_e[Ze.XRANGEPLAIN]})`,!0);KA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${_e[Ze.XRANGEPLAIN]})\\s+-\\s+(${_e[Ze.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${_e[Ze.XRANGEPLAINLOOSE]})\\s+-\\s+(${_e[Ze.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Ld=y((_$e,zG)=>{var tEe=["includePrerelease","loose","rtl"],rEe=r=>r?typeof r!="object"?{loose:!0}:tEe.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};zG.exports=rEe});var hy=y((Z$e,_G)=>{var VG=/^[0-9]+$/,XG=(r,e)=>{let t=VG.test(r),i=VG.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rXG(e,r);_G.exports={compareIdentifiers:XG,rcompareIdentifiers:iEe}});var Oi=y(($$e,tY)=>{var py=Td(),{MAX_LENGTH:ZG,MAX_SAFE_INTEGER:dy}=Nd(),{re:$G,t:eY}=Sc(),nEe=Ld(),{compareIdentifiers:Od}=hy(),Kn=class{constructor(e,t){if(t=nEe(t),e instanceof Kn){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>ZG)throw new TypeError(`version is longer than ${ZG} characters`);py("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?$G[eY.LOOSE]:$G[eY.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>dy||this.major<0)throw new TypeError("Invalid major version");if(this.minor>dy||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>dy||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};tY.exports=Kn});var vc=y((eet,sY)=>{var{MAX_LENGTH:sEe}=Nd(),{re:rY,t:iY}=Sc(),nY=Oi(),oEe=Ld(),aEe=(r,e)=>{if(e=oEe(e),r instanceof nY)return r;if(typeof r!="string"||r.length>sEe||!(e.loose?rY[iY.LOOSE]:rY[iY.FULL]).test(r))return null;try{return new nY(r,e)}catch{return null}};sY.exports=aEe});var aY=y((tet,oY)=>{var AEe=vc(),lEe=(r,e)=>{let t=AEe(r,e);return t?t.version:null};oY.exports=lEe});var lY=y((ret,AY)=>{var cEe=vc(),uEe=(r,e)=>{let t=cEe(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};AY.exports=uEe});var uY=y((iet,cY)=>{var gEe=Oi(),fEe=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new gEe(r,t).inc(e,i).version}catch{return null}};cY.exports=fEe});var os=y((net,fY)=>{var gY=Oi(),hEe=(r,e,t)=>new gY(r,t).compare(new gY(e,t));fY.exports=hEe});var Cy=y((set,hY)=>{var pEe=os(),dEe=(r,e,t)=>pEe(r,e,t)===0;hY.exports=dEe});var CY=y((oet,dY)=>{var pY=vc(),CEe=Cy(),mEe=(r,e)=>{if(CEe(r,e))return null;{let t=pY(r),i=pY(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};dY.exports=mEe});var EY=y((aet,mY)=>{var EEe=Oi(),IEe=(r,e)=>new EEe(r,e).major;mY.exports=IEe});var yY=y((Aet,IY)=>{var yEe=Oi(),wEe=(r,e)=>new yEe(r,e).minor;IY.exports=wEe});var BY=y((cet,wY)=>{var BEe=Oi(),bEe=(r,e)=>new BEe(r,e).patch;wY.exports=bEe});var QY=y((uet,bY)=>{var QEe=vc(),SEe=(r,e)=>{let t=QEe(r,e);return t&&t.prerelease.length?t.prerelease:null};bY.exports=SEe});var vY=y((get,SY)=>{var vEe=os(),xEe=(r,e,t)=>vEe(e,r,t);SY.exports=xEe});var PY=y((fet,xY)=>{var PEe=os(),DEe=(r,e)=>PEe(r,e,!0);xY.exports=DEe});var my=y((het,kY)=>{var DY=Oi(),kEe=(r,e,t)=>{let i=new DY(r,t),n=new DY(e,t);return i.compare(n)||i.compareBuild(n)};kY.exports=kEe});var FY=y((pet,RY)=>{var REe=my(),FEe=(r,e)=>r.sort((t,i)=>REe(t,i,e));RY.exports=FEe});var TY=y((det,NY)=>{var NEe=my(),TEe=(r,e)=>r.sort((t,i)=>NEe(i,t,e));NY.exports=TEe});var Md=y((Cet,LY)=>{var LEe=os(),OEe=(r,e,t)=>LEe(r,e,t)>0;LY.exports=OEe});var Ey=y((met,OY)=>{var MEe=os(),UEe=(r,e,t)=>MEe(r,e,t)<0;OY.exports=UEe});var ax=y((Eet,MY)=>{var KEe=os(),HEe=(r,e,t)=>KEe(r,e,t)!==0;MY.exports=HEe});var Iy=y((Iet,UY)=>{var GEe=os(),YEe=(r,e,t)=>GEe(r,e,t)>=0;UY.exports=YEe});var yy=y((yet,KY)=>{var jEe=os(),qEe=(r,e,t)=>jEe(r,e,t)<=0;KY.exports=qEe});var Ax=y((wet,HY)=>{var JEe=Cy(),WEe=ax(),zEe=Md(),VEe=Iy(),XEe=Ey(),_Ee=yy(),ZEe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return JEe(r,t,i);case"!=":return WEe(r,t,i);case">":return zEe(r,t,i);case">=":return VEe(r,t,i);case"<":return XEe(r,t,i);case"<=":return _Ee(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};HY.exports=ZEe});var YY=y((Bet,GY)=>{var $Ee=Oi(),eIe=vc(),{re:wy,t:By}=Sc(),tIe=(r,e)=>{if(r instanceof $Ee)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(wy[By.COERCE]);else{let i;for(;(i=wy[By.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),wy[By.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;wy[By.COERCERTL].lastIndex=-1}return t===null?null:eIe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};GY.exports=tIe});var qY=y((bet,jY)=>{"use strict";jY.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Ud=y((Qet,JY)=>{"use strict";JY.exports=Ht;Ht.Node=xc;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var sIe=Ud(),Pc=Symbol("max"),Pa=Symbol("length"),uf=Symbol("lengthCalculator"),Hd=Symbol("allowStale"),Dc=Symbol("maxAge"),xa=Symbol("dispose"),WY=Symbol("noDisposeOnSet"),Ii=Symbol("lruList"),zs=Symbol("cache"),VY=Symbol("updateAgeOnGet"),lx=()=>1,ux=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[Pc]=e.max||1/0,i=e.length||lx;if(this[uf]=typeof i!="function"?lx:i,this[Hd]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Dc]=e.maxAge||0,this[xa]=e.dispose,this[WY]=e.noDisposeOnSet||!1,this[VY]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Pc]=e||1/0,Kd(this)}get max(){return this[Pc]}set allowStale(e){this[Hd]=!!e}get allowStale(){return this[Hd]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Dc]=e,Kd(this)}get maxAge(){return this[Dc]}set lengthCalculator(e){typeof e!="function"&&(e=lx),e!==this[uf]&&(this[uf]=e,this[Pa]=0,this[Ii].forEach(t=>{t.length=this[uf](t.value,t.key),this[Pa]+=t.length})),Kd(this)}get lengthCalculator(){return this[uf]}get length(){return this[Pa]}get itemCount(){return this[Ii].length}rforEach(e,t){t=t||this;for(let i=this[Ii].tail;i!==null;){let n=i.prev;zY(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[Ii].head;i!==null;){let n=i.next;zY(this,e,i,t),i=n}}keys(){return this[Ii].toArray().map(e=>e.key)}values(){return this[Ii].toArray().map(e=>e.value)}reset(){this[xa]&&this[Ii]&&this[Ii].length&&this[Ii].forEach(e=>this[xa](e.key,e.value)),this[zs]=new Map,this[Ii]=new sIe,this[Pa]=0}dump(){return this[Ii].map(e=>by(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ii]}set(e,t,i){if(i=i||this[Dc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uf](t,e);if(this[zs].has(e)){if(s>this[Pc])return gf(this,this[zs].get(e)),!1;let l=this[zs].get(e).value;return this[xa]&&(this[WY]||this[xa](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Pa]+=s-l.length,l.length=s,this.get(e),Kd(this),!0}let o=new gx(e,t,s,n,i);return o.length>this[Pc]?(this[xa]&&this[xa](e,t),!1):(this[Pa]+=o.length,this[Ii].unshift(o),this[zs].set(e,this[Ii].head),Kd(this),!0)}has(e){if(!this[zs].has(e))return!1;let t=this[zs].get(e).value;return!by(this,t)}get(e){return cx(this,e,!0)}peek(e){return cx(this,e,!1)}pop(){let e=this[Ii].tail;return e?(gf(this,e),e.value):null}del(e){gf(this,this[zs].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[zs].forEach((e,t)=>cx(this,t,!1))}},cx=(r,e,t)=>{let i=r[zs].get(e);if(i){let n=i.value;if(by(r,n)){if(gf(r,i),!r[Hd])return}else t&&(r[VY]&&(i.value.now=Date.now()),r[Ii].unshiftNode(i));return n.value}},by=(r,e)=>{if(!e||!e.maxAge&&!r[Dc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[Dc]&&t>r[Dc]},Kd=r=>{if(r[Pa]>r[Pc])for(let e=r[Ii].tail;r[Pa]>r[Pc]&&e!==null;){let t=e.prev;gf(r,e),e=t}},gf=(r,e)=>{if(e){let t=e.value;r[xa]&&r[xa](t.key,t.value),r[Pa]-=t.length,r[zs].delete(t.key),r[Ii].removeNode(e)}},gx=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},zY=(r,e,t,i)=>{let n=t.value;by(r,n)&&(gf(r,t),r[Hd]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};XY.exports=ux});var as=y((xet,tj)=>{var kc=class{constructor(e,t){if(t=aIe(t),e instanceof kc)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new kc(e.raw,t);if(e instanceof fx)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!$Y(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&gIe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=ZY.get(i);if(n)return n;let s=this.options.loose,o=s?Mi[Qi.HYPHENRANGELOOSE]:Mi[Qi.HYPHENRANGE];e=e.replace(o,wIe(this.options.includePrerelease)),jr("hyphen replace",e),e=e.replace(Mi[Qi.COMPARATORTRIM],lIe),jr("comparator trim",e,Mi[Qi.COMPARATORTRIM]),e=e.replace(Mi[Qi.TILDETRIM],cIe),e=e.replace(Mi[Qi.CARETTRIM],uIe),e=e.split(/\s+/).join(" ");let a=s?Mi[Qi.COMPARATORLOOSE]:Mi[Qi.COMPARATOR],l=e.split(" ").map(f=>fIe(f,this.options)).join(" ").split(/\s+/).map(f=>yIe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new fx(f,this.options)),c=l.length,u=new Map;for(let f of l){if($Y(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return ZY.set(i,g),g}intersects(e,t){if(!(e instanceof kc))throw new TypeError("a Range is required");return this.set.some(i=>ej(i,t)&&e.set.some(n=>ej(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new AIe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",gIe=r=>r.value==="",ej=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},fIe=(r,e)=>(jr("comp",r,e),r=dIe(r,e),jr("caret",r),r=hIe(r,e),jr("tildes",r),r=mIe(r,e),jr("xrange",r),r=IIe(r,e),jr("stars",r),r),Xi=r=>!r||r.toLowerCase()==="x"||r==="*",hIe=(r,e)=>r.trim().split(/\s+/).map(t=>pIe(t,e)).join(" "),pIe=(r,e)=>{let t=e.loose?Mi[Qi.TILDELOOSE]:Mi[Qi.TILDE];return r.replace(t,(i,n,s,o,a)=>{jr("tilde",r,i,n,s,o,a);let l;return Xi(n)?l="":Xi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Xi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(jr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,jr("tilde return",l),l})},dIe=(r,e)=>r.trim().split(/\s+/).map(t=>CIe(t,e)).join(" "),CIe=(r,e)=>{jr("caret",r,e);let t=e.loose?Mi[Qi.CARETLOOSE]:Mi[Qi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{jr("caret",r,n,s,o,a,l);let c;return Xi(s)?c="":Xi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Xi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(jr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(jr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),jr("caret return",c),c})},mIe=(r,e)=>(jr("replaceXRanges",r,e),r.split(/\s+/).map(t=>EIe(t,e)).join(" ")),EIe=(r,e)=>{r=r.trim();let t=e.loose?Mi[Qi.XRANGELOOSE]:Mi[Qi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{jr("xRange",r,i,n,s,o,a,l);let c=Xi(s),u=c||Xi(o),g=u||Xi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),jr("xRange return",i),i})},IIe=(r,e)=>(jr("replaceStars",r,e),r.trim().replace(Mi[Qi.STAR],"")),yIe=(r,e)=>(jr("replaceGTE0",r,e),r.trim().replace(Mi[e.includePrerelease?Qi.GTE0PRE:Qi.GTE0],"")),wIe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Xi(i)?t="":Xi(n)?t=`>=${i}.0.0${r?"-0":""}`:Xi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Xi(c)?l="":Xi(u)?l=`<${+c+1}.0.0-0`:Xi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),BIe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Gd=y((Pet,oj)=>{var Yd=Symbol("SemVer ANY"),ff=class{static get ANY(){return Yd}constructor(e,t){if(t=bIe(t),e instanceof ff){if(e.loose===!!t.loose)return e;e=e.value}px("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Yd?this.value="":this.value=this.operator+this.semver.version,px("comp",this)}parse(e){let t=this.options.loose?rj[ij.COMPARATORLOOSE]:rj[ij.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new nj(i[2],this.options.loose):this.semver=Yd}toString(){return this.value}test(e){if(px("Comparator.test",e,this.options.loose),this.semver===Yd||e===Yd)return!0;if(typeof e=="string")try{e=new nj(e,this.options)}catch{return!1}return hx(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof ff))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new sj(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new sj(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=hx(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=hx(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};oj.exports=ff;var bIe=Ld(),{re:rj,t:ij}=Sc(),hx=Ax(),px=Td(),nj=Oi(),sj=as()});var jd=y((Det,aj)=>{var QIe=as(),SIe=(r,e,t)=>{try{e=new QIe(e,t)}catch{return!1}return e.test(r)};aj.exports=SIe});var lj=y((ket,Aj)=>{var vIe=as(),xIe=(r,e)=>new vIe(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));Aj.exports=xIe});var uj=y((Ret,cj)=>{var PIe=Oi(),DIe=as(),kIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new DIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new PIe(i,t))}),i};cj.exports=kIe});var fj=y((Fet,gj)=>{var RIe=Oi(),FIe=as(),NIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new FIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new RIe(i,t))}),i};gj.exports=NIe});var dj=y((Net,pj)=>{var dx=Oi(),TIe=as(),hj=Md(),LIe=(r,e)=>{r=new TIe(r,e);let t=new dx("0.0.0");if(r.test(t)||(t=new dx("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new dx(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||hj(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||hj(t,s))&&(t=s)}return t&&r.test(t)?t:null};pj.exports=LIe});var mj=y((Tet,Cj)=>{var OIe=as(),MIe=(r,e)=>{try{return new OIe(r,e).range||"*"}catch{return null}};Cj.exports=MIe});var Qy=y((Let,wj)=>{var UIe=Oi(),yj=Gd(),{ANY:KIe}=yj,HIe=as(),GIe=jd(),Ej=Md(),Ij=Ey(),YIe=yy(),jIe=Iy(),qIe=(r,e,t,i)=>{r=new UIe(r,i),e=new HIe(e,i);let n,s,o,a,l;switch(t){case">":n=Ej,s=YIe,o=Ij,a=">",l=">=";break;case"<":n=Ij,s=jIe,o=Ej,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(GIe(r,e,i))return!1;for(let c=0;c{h.semver===KIe&&(h=new yj(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};wj.exports=qIe});var bj=y((Oet,Bj)=>{var JIe=Qy(),WIe=(r,e,t)=>JIe(r,e,">",t);Bj.exports=WIe});var Sj=y((Met,Qj)=>{var zIe=Qy(),VIe=(r,e,t)=>zIe(r,e,"<",t);Qj.exports=VIe});var Pj=y((Uet,xj)=>{var vj=as(),XIe=(r,e,t)=>(r=new vj(r,t),e=new vj(e,t),r.intersects(e));xj.exports=XIe});var kj=y((Ket,Dj)=>{var _Ie=jd(),ZIe=os();Dj.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>ZIe(u,g,t));for(let u of o)_Ie(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var Rj=as(),Sy=Gd(),{ANY:Cx}=Sy,qd=jd(),mx=os(),$Ie=(r,e,t={})=>{if(r===e)return!0;r=new Rj(r,t),e=new Rj(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=eye(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},eye=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Cx){if(e.length===1&&e[0].semver===Cx)return!0;t.includePrerelease?r=[new Sy(">=0.0.0-0")]:r=[new Sy(">=0.0.0")]}if(e.length===1&&e[0].semver===Cx){if(t.includePrerelease)return!0;e=[new Sy(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=Fj(n,h,t):h.operator==="<"||h.operator==="<="?s=Nj(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=mx(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!qd(h,String(n),t)||s&&!qd(h,String(s),t))return null;for(let p of e)if(!qd(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=Fj(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!qd(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=Nj(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!qd(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},Fj=(r,e,t)=>{if(!r)return e;let i=mx(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},Nj=(r,e,t)=>{if(!r)return e;let i=mx(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};Tj.exports=$Ie});var $r=y((Get,Oj)=>{var Ex=Sc();Oj.exports={re:Ex.re,src:Ex.src,tokens:Ex.t,SEMVER_SPEC_VERSION:Nd().SEMVER_SPEC_VERSION,SemVer:Oi(),compareIdentifiers:hy().compareIdentifiers,rcompareIdentifiers:hy().rcompareIdentifiers,parse:vc(),valid:aY(),clean:lY(),inc:uY(),diff:CY(),major:EY(),minor:yY(),patch:BY(),prerelease:QY(),compare:os(),rcompare:vY(),compareLoose:PY(),compareBuild:my(),sort:FY(),rsort:TY(),gt:Md(),lt:Ey(),eq:Cy(),neq:ax(),gte:Iy(),lte:yy(),cmp:Ax(),coerce:YY(),Comparator:Gd(),Range:as(),satisfies:jd(),toComparators:lj(),maxSatisfying:uj(),minSatisfying:fj(),minVersion:dj(),validRange:mj(),outside:Qy(),gtr:bj(),ltr:Sj(),intersects:Pj(),simplifyRange:kj(),subset:Lj()}});var Ix=y(vy=>{"use strict";Object.defineProperty(vy,"__esModule",{value:!0});vy.VERSION=void 0;vy.VERSION="9.1.0"});var Gt=y((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof xy=="object"&&xy.exports?xy.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:Mj,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var w={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(w,"global");break;case"i":o(w,"ignoreCase");break;case"m":o(w,"multiLine");break;case"u":o(w,"unicode");break;case"y":o(w,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:w,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var w=this.disjunction();return this.consumeChar(")"),{type:C,value:w,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,w=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(w),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var w=this.classAtom(),B=w.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(w){C.push(w)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var w=p[C];p.hasOwnProperty(C)&&(w.type!==void 0?this.visit(w):Array.isArray(w)&&w.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var ky=y(hf=>{"use strict";Object.defineProperty(hf,"__esModule",{value:!0});hf.clearRegExpParserCache=hf.getRegExpAst=void 0;var tye=Py(),Dy={},rye=new tye.RegExpParser;function iye(r){var e=r.toString();if(Dy.hasOwnProperty(e))return Dy[e];var t=rye.pattern(e);return Dy[e]=t,t}hf.getRegExpAst=iye;function nye(){Dy={}}hf.clearRegExpParserCache=nye});var Yj=y(dn=>{"use strict";var sye=dn&&dn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.canMatchCharCode=dn.firstCharOptimizedIndices=dn.getOptimizedStartCodesIndices=dn.failedOptimizationPrefixMsg=void 0;var Kj=Py(),As=Gt(),Hj=ky(),Da=wx(),Gj="Complement Sets are not supported for first char optimization";dn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function oye(r,e){e===void 0&&(e=!1);try{var t=(0,Hj.getRegExpAst)(r),i=Fy(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===Gj)e&&(0,As.PRINT_WARNING)(""+dn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,As.PRINT_ERROR)(dn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+r.toString()+` > +`)+(" Using the regexp-to-ast library version: "+Kj.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}dn.getOptimizedStartCodesIndices=oye;function Fy(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=Da.minOptimizationVal)for(var f=u.from>=Da.minOptimizationVal?u.from:Da.minOptimizationVal,h=u.to,p=(0,Da.charCodeToOptimizedIndex)(f),C=(0,Da.charCodeToOptimizedIndex)(h),w=p;w<=C;w++)e[w]=w}}});break;case"Group":Fy(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&yx(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,As.values)(e)}dn.firstCharOptimizedIndices=Fy;function Ry(r,e,t){var i=(0,Da.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&aye(r,e)}function aye(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,Da.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,Da.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function Uj(r,e){return(0,As.find)(r.value,function(t){if(typeof t=="number")return(0,As.contains)(e,t);var i=t;return(0,As.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function yx(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,As.isArray)(r.value)?(0,As.every)(r.value,yx):yx(r.value):!1}var Aye=function(r){sye(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,As.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?Uj(t,this.targetCharCodes)===void 0&&(this.found=!0):Uj(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(Kj.BaseRegExpVisitor);function lye(r,e){if(e instanceof RegExp){var t=(0,Hj.getRegExpAst)(e),i=new Aye(r);return i.visit(t),i.found}else return(0,As.find)(e,function(n){return(0,As.contains)(r,n.charCodeAt(0))})!==void 0}dn.canMatchCharCode=lye});var wx=y(Je=>{"use strict";var jj=Je&&Je.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Je,"__esModule",{value:!0});Je.charCodeToOptimizedIndex=Je.minOptimizationVal=Je.buildLineBreakIssueMessage=Je.LineTerminatorOptimizedTester=Je.isShortPattern=Je.isCustomPattern=Je.cloneEmptyGroups=Je.performWarningRuntimeChecks=Je.performRuntimeChecks=Je.addStickyFlag=Je.addStartOfInput=Je.findUnreachablePatterns=Je.findModesThatDoNotExist=Je.findInvalidGroupType=Je.findDuplicatePatterns=Je.findUnsupportedFlags=Je.findStartOfInputAnchor=Je.findEmptyMatchRegExps=Je.findEndOfInputAnchor=Je.findInvalidPatterns=Je.findMissingPatterns=Je.validatePatterns=Je.analyzeTokenTypes=Je.enableSticky=Je.disableSticky=Je.SUPPORT_STICKY=Je.MODES=Je.DEFAULT_MODE=void 0;var qj=Py(),ir=Jd(),Se=Gt(),pf=Yj(),Jj=ky(),Do="PATTERN";Je.DEFAULT_MODE="defaultMode";Je.MODES="modes";Je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function cye(){Je.SUPPORT_STICKY=!1}Je.disableSticky=cye;function uye(){Je.SUPPORT_STICKY=!0}Je.enableSticky=uye;function gye(r,e){e=(0,Se.defaults)(e,{useSticky:Je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){wye()});var i;t("Reject Lexer.NA",function(){i=(0,Se.reject)(r,function(v){return v[Do]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,Se.map)(i,function(v){var D=v[Do];if((0,Se.isRegExp)(D)){var T=D.source;return T.length===1&&T!=="^"&&T!=="$"&&T!=="."&&!D.ignoreCase?T:T.length===2&&T[0]==="\\"&&!(0,Se.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],T[1])?T[1]:e.useSticky?Qx(D):bx(D)}else{if((0,Se.isFunction)(D))return n=!0,{exec:D};if((0,Se.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Qx(j):bx(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,Se.map)(i,function(v){return v.tokenTypeIdx}),a=(0,Se.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,Se.isString)(D))return D;if((0,Se.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,Se.map)(i,function(v){var D=v.LONGER_ALT;if(D){var T=(0,Se.isArray)(D)?(0,Se.map)(D,function(H){return(0,Se.indexOf)(i,H)}):[(0,Se.indexOf)(i,D)];return T}}),c=(0,Se.map)(i,function(v){return v.PUSH_MODE}),u=(0,Se.map)(i,function(v){return(0,Se.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=oq(e.lineTerminatorCharacters);g=(0,Se.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Se.map)(i,function(D){if((0,Se.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(nq(D,v)===!1)return(0,pf.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,Se.map)(i,vx),h=(0,Se.map)(s,iq),p=(0,Se.reduce)(i,function(v,D){var T=D.GROUP;return(0,Se.isString)(T)&&T!==ir.Lexer.SKIPPED&&(v[T]=[]),v},{}),C=(0,Se.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var w=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,Se.reduce)(i,function(v,D,T){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Sx(H);Bx(v,j,C[T])}else if((0,Se.isArray)(D.START_CHARS_HINT)){var $;(0,Se.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=Sx(Z);$!==A&&($=A,Bx(v,A,C[T]))})}else if((0,Se.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)w=!1,e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+pf.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,pf.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,Se.isEmpty)(V)&&(w=!1),(0,Se.forEach)(V,function(W){Bx(v,W,C[T])})}else e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+pf.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),w=!1;return v},[])}),t("ArrayPacking",function(){B=(0,Se.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:w}}Je.analyzeTokenTypes=gye;function fye(r,e){var t=[],i=Wj(r);t=t.concat(i.errors);var n=zj(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(hye(s)),t=t.concat(eq(s)),t=t.concat(tq(s,e)),t=t.concat(rq(s)),t}Je.validatePatterns=fye;function hye(r){var e=[],t=(0,Se.filter)(r,function(i){return(0,Se.isRegExp)(i[Do])});return e=e.concat(Vj(t)),e=e.concat(_j(t)),e=e.concat(Zj(t)),e=e.concat($j(t)),e=e.concat(Xj(t)),e}function Wj(r){var e=(0,Se.filter)(r,function(n){return!(0,Se.has)(n,Do)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findMissingPatterns=Wj;function zj(r){var e=(0,Se.filter)(r,function(n){var s=n[Do];return!(0,Se.isRegExp)(s)&&!(0,Se.isFunction)(s)&&!(0,Se.has)(s,"exec")&&!(0,Se.isString)(s)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findInvalidPatterns=zj;var pye=/[^\\][\$]/;function Vj(r){var e=function(n){jj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(qj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Jj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return pye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findEndOfInputAnchor=Vj;function Xj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n.test("")}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Je.findEmptyMatchRegExps=Xj;var dye=/[^\\[][\^]|^\^/;function _j(r){var e=function(n){jj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(qj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Jj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return dye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findStartOfInputAnchor=_j;function Zj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Je.findUnsupportedFlags=Zj;function $j(r){var e=[],t=(0,Se.map)(r,function(s){return(0,Se.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Se.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,Se.compact)(t);var i=(0,Se.filter)(t,function(s){return s.length>1}),n=(0,Se.map)(i,function(s){var o=(0,Se.map)(s,function(l){return l.name}),a=(0,Se.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Je.findDuplicatePatterns=$j;function eq(r){var e=(0,Se.filter)(r,function(i){if(!(0,Se.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,Se.isString)(n)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Je.findInvalidGroupType=eq;function tq(r,e){var t=(0,Se.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,Se.contains)(e,n.PUSH_MODE)}),i=(0,Se.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Je.findModesThatDoNotExist=tq;function rq(r){var e=[],t=(0,Se.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,Se.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Se.isRegExp)(o)&&mye(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Se.forEach)(r,function(i,n){(0,Se.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Je.findUnreachablePatterns=rq;function Cye(r,e){if((0,Se.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,Se.isFunction)(e))return e(r,0,[],{});if((0,Se.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function mye(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Se.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function bx(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Je.addStartOfInput=bx;function Qx(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Je.addStickyFlag=Qx;function Eye(r,e,t){var i=[];return(0,Se.has)(r,Je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.DEFAULT_MODE+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Se.has)(r,Je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.MODES+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Se.has)(r,Je.MODES)&&(0,Se.has)(r,Je.DEFAULT_MODE)&&!(0,Se.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Je.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Se.has)(r,Je.MODES)&&(0,Se.forEach)(r.modes,function(n,s){(0,Se.forEach)(n,function(o,a){(0,Se.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Je.performRuntimeChecks=Eye;function Iye(r,e,t){var i=[],n=!1,s=(0,Se.compact)((0,Se.flatten)((0,Se.mapValues)(r.modes,function(l){return l}))),o=(0,Se.reject)(s,function(l){return l[Do]===ir.Lexer.NA}),a=oq(t);return e&&(0,Se.forEach)(o,function(l){var c=nq(l,a);if(c!==!1){var u=sq(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Se.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,pf.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Je.performWarningRuntimeChecks=Iye;function yye(r){var e={},t=(0,Se.keys)(r);return(0,Se.forEach)(t,function(i){var n=r[i];if((0,Se.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Je.cloneEmptyGroups=yye;function vx(r){var e=r.PATTERN;if((0,Se.isRegExp)(e))return!1;if((0,Se.isFunction)(e))return!0;if((0,Se.has)(e,"exec"))return!0;if((0,Se.isString)(e))return!1;throw Error("non exhaustive match")}Je.isCustomPattern=vx;function iq(r){return(0,Se.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Je.isShortPattern=iq;Je.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+r.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Je.buildLineBreakIssueMessage=sq;function oq(r){var e=(0,Se.map)(r,function(t){return(0,Se.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function Bx(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Je.minOptimizationVal=256;var Ny=[];function Sx(r){return r255?255+~~(r/255):r}}});var df=y(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var ei=Gt();function Bye(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Bye;function bye(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=bye;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Qye(r){var e=aq(r);Aq(e),cq(e),lq(e),(0,ei.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Qye;function aq(r){for(var e=(0,ei.cloneArr)(r),t=r,i=!0;i;){t=(0,ei.compact)((0,ei.flatten)((0,ei.map)(t,function(s){return s.CATEGORIES})));var n=(0,ei.difference)(t,e);e=e.concat(n),(0,ei.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=aq;function Aq(r){(0,ei.forEach)(r,function(e){uq(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),xx(e)&&!(0,ei.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),xx(e)||(e.CATEGORIES=[]),gq(e)||(e.categoryMatches=[]),fq(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=Aq;function lq(r){(0,ei.forEach)(r,function(e){e.categoryMatches=[],(0,ei.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=lq;function cq(r){(0,ei.forEach)(r,function(e){Px([],e)})}Nt.assignCategoriesMapProp=cq;function Px(r,e){(0,ei.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,ei.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,ei.contains)(i,t)||Px(i,t)})}Nt.singleAssignCategoriesToksMap=Px;function uq(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=uq;function xx(r){return(0,ei.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=xx;function gq(r){return(0,ei.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=gq;function fq(r){return(0,ei.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=fq;function Sye(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.isTokenType=Sye});var Dx=y(Ty=>{"use strict";Object.defineProperty(Ty,"__esModule",{value:!0});Ty.defaultLexerErrorProvider=void 0;Ty.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var Jd=y(Rc=>{"use strict";Object.defineProperty(Rc,"__esModule",{value:!0});Rc.Lexer=Rc.LexerDefinitionErrorType=void 0;var Vs=wx(),nr=Gt(),vye=df(),xye=Dx(),Pye=ky(),Dye;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(Dye=Rc.LexerDefinitionErrorType||(Rc.LexerDefinitionErrorType={}));var Wd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:xye.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(Wd);var kye=function(){function r(e,t){var i=this;if(t===void 0&&(t=Wd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(Wd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===Wd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Vs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===Wd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[Vs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[Vs.DEFAULT_MODE]=Vs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Vs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,vye.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Vs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Vs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,Pye.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,w,B,v,D,T=e,H=T.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,Vs.cloneEmptyGroups)(this.emptyGroups),_=this.trackStartLines,L=this.config.lineTerminatorsPattern,N=0,ue=[],we=[],Te=[],Pe=[];Object.freeze(Pe);var Le=void 0;function se(){return ue}function Ae(dr){var Bi=(0,Vs.charCodeToOptimizedIndex)(dr),_n=we[Bi];return _n===void 0?Pe:_n}var be=function(dr){if(Te.length===1&&dr.tokenType.PUSH_MODE===void 0){var Bi=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(dr);Z.push({offset:dr.startOffset,line:dr.startLine!==void 0?dr.startLine:void 0,column:dr.startColumn!==void 0?dr.startColumn:void 0,length:dr.image.length,message:Bi})}else{Te.pop();var _n=(0,nr.last)(Te);ue=i.patternIdxToConfig[_n],we=i.charCodeToPatternIdxToConfig[_n],N=ue.length;var pa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;we&&pa?Le=Ae:Le=se}};function fe(dr){Te.push(dr),we=this.charCodeToPatternIdxToConfig[dr],ue=this.patternIdxToConfig[dr],N=ue.length,N=ue.length;var Bi=this.canModeBeOptimized[dr]&&this.config.safeMode===!1;we&&Bi?Le=Ae:Le=se}fe.call(this,t);for(var le;jc.length){c=a,u=g,le=tt;break}}}break}}if(c!==null){if(f=c.length,h=le.group,h!==void 0&&(p=le.tokenTypeIdx,C=this.createTokenInstance(c,j,p,le.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),_===!0&&le.canLineTerminator===!0){var It=0,Ur=void 0,oi=void 0;L.lastIndex=0;do Ur=L.test(c),Ur===!0&&(oi=L.lastIndex-1,It++);while(Ur===!0);It!==0&&(A=A+It,ae=f-oi,this.updateTokenEndLineColumnLocation(C,h,oi,It,A,ae,f))}this.handleModes(le,be,fe,C)}else{for(var pi=j,pr=A,di=ae,ai=!1;!ai&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();Rc.Lexer=kye});var HA=y(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.tokenMatcher=Si.createTokenInstance=Si.EOF=Si.createToken=Si.hasTokenLabel=Si.tokenName=Si.tokenLabel=void 0;var Xs=Gt(),Rye=Jd(),kx=df();function Fye(r){return wq(r)?r.LABEL:r.name}Si.tokenLabel=Fye;function Nye(r){return r.name}Si.tokenName=Nye;function wq(r){return(0,Xs.isString)(r.LABEL)&&r.LABEL!==""}Si.hasTokenLabel=wq;var Tye="parent",hq="categories",pq="label",dq="group",Cq="push_mode",mq="pop_mode",Eq="longer_alt",Iq="line_breaks",yq="start_chars_hint";function Bq(r){return Lye(r)}Si.createToken=Bq;function Lye(r){var e=r.pattern,t={};if(t.name=r.name,(0,Xs.isUndefined)(e)||(t.PATTERN=e),(0,Xs.has)(r,Tye))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Xs.has)(r,hq)&&(t.CATEGORIES=r[hq]),(0,kx.augmentTokenTypes)([t]),(0,Xs.has)(r,pq)&&(t.LABEL=r[pq]),(0,Xs.has)(r,dq)&&(t.GROUP=r[dq]),(0,Xs.has)(r,mq)&&(t.POP_MODE=r[mq]),(0,Xs.has)(r,Cq)&&(t.PUSH_MODE=r[Cq]),(0,Xs.has)(r,Eq)&&(t.LONGER_ALT=r[Eq]),(0,Xs.has)(r,Iq)&&(t.LINE_BREAKS=r[Iq]),(0,Xs.has)(r,yq)&&(t.START_CHARS_HINT=r[yq]),t}Si.EOF=Bq({name:"EOF",pattern:Rye.Lexer.NA});(0,kx.augmentTokenTypes)([Si.EOF]);function Oye(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Si.createTokenInstance=Oye;function Mye(r,e){return(0,kx.tokenStructuredMatcher)(r,e)}Si.tokenMatcher=Mye});var Cn=y(Wt=>{"use strict";var ka=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var lr=Gt(),Uye=HA(),ko=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,lr.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=ko;var bq=function(r){ka(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(ko);Wt.NonTerminal=bq;var Qq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Rule=Qq;var Sq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Alternative=Sq;var vq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Option=vq;var xq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatory=xq;var Pq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatoryWithSeparator=Pq;var Dq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Repetition=Dq;var kq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionWithSeparator=kq;var Rq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(ko);Wt.Alternation=Rq;var Ly=function(){function r(e){this.idx=1,(0,lr.assign)(this,(0,lr.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=Ly;function Kye(r){return(0,lr.map)(r,zd)}Wt.serializeGrammar=Kye;function zd(r){function e(s){return(0,lr.map)(s,zd)}if(r instanceof bq){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,lr.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof Sq)return{type:"Alternative",definition:e(r.definition)};if(r instanceof vq)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof xq)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof Pq)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:zd(new Ly({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof kq)return{type:"RepetitionWithSeparator",idx:r.idx,separator:zd(new Ly({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof Dq)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof Rq)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof Ly){var i={type:"Terminal",name:r.terminalType.name,label:(0,Uye.tokenLabel)(r.terminalType),idx:r.idx};(0,lr.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,lr.isRegExp)(n)?n.source:n),i}else{if(r instanceof Qq)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=zd});var My=y(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0});Oy.RestWalker=void 0;var Rx=Gt(),mn=Cn(),Hye=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,Rx.forEach)(e.definition,function(n,s){var o=(0,Rx.drop)(e.definition,s+1);if(n instanceof mn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof mn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof mn.Alternative)i.walkFlat(n,o,t);else if(n instanceof mn.Option)i.walkOption(n,o,t);else if(n instanceof mn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof mn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof mn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof mn.Repetition)i.walkMany(n,o,t);else if(n instanceof mn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=Fq(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=Fq(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,Rx.forEach)(e.definition,function(o){var a=new mn.Alternative({definition:[o]});n.walk(a,s)})},r}();Oy.RestWalker=Hye;function Fq(r,e,t){var i=[new mn.Option({definition:[new mn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Cf=y(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});Uy.GAstVisitor=void 0;var Ro=Cn(),Gye=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case Ro.NonTerminal:return this.visitNonTerminal(t);case Ro.Alternative:return this.visitAlternative(t);case Ro.Option:return this.visitOption(t);case Ro.RepetitionMandatory:return this.visitRepetitionMandatory(t);case Ro.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case Ro.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case Ro.Repetition:return this.visitRepetition(t);case Ro.Alternation:return this.visitAlternation(t);case Ro.Terminal:return this.visitTerminal(t);case Ro.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();Uy.GAstVisitor=Gye});var Xd=y(Ui=>{"use strict";var Yye=Ui&&Ui.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ui,"__esModule",{value:!0});Ui.collectMethods=Ui.DslMethodsCollectorVisitor=Ui.getProductionDslName=Ui.isBranchingProd=Ui.isOptionalProd=Ui.isSequenceProd=void 0;var Vd=Gt(),Qr=Cn(),jye=Cf();function qye(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Ui.isSequenceProd=qye;function Fx(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,Vd.some)(r.definition,function(i){return Fx(i,e)}):r instanceof Qr.NonTerminal&&(0,Vd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,Vd.every)(r.definition,function(i){return Fx(i,e)})):!1}Ui.isOptionalProd=Fx;function Jye(r){return r instanceof Qr.Alternation}Ui.isBranchingProd=Jye;function Wye(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Ui.getProductionDslName=Wye;var Nq=function(r){Yye(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,Vd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,Vd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(jye.GAstVisitor);Ui.DslMethodsCollectorVisitor=Nq;var Ky=new Nq;function zye(r){Ky.reset(),r.accept(Ky);var e=Ky.dslMethods;return Ky.reset(),e}Ui.collectMethods=zye});var Tx=y(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.firstForTerminal=Fo.firstForBranching=Fo.firstForSequence=Fo.first=void 0;var Hy=Gt(),Tq=Cn(),Nx=Xd();function Gy(r){if(r instanceof Tq.NonTerminal)return Gy(r.referencedRule);if(r instanceof Tq.Terminal)return Mq(r);if((0,Nx.isSequenceProd)(r))return Lq(r);if((0,Nx.isBranchingProd)(r))return Oq(r);throw Error("non exhaustive match")}Fo.first=Gy;function Lq(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Nx.isOptionalProd)(s),e=e.concat(Gy(s)),i=i+1,n=t.length>i;return(0,Hy.uniq)(e)}Fo.firstForSequence=Lq;function Oq(r){var e=(0,Hy.map)(r.definition,function(t){return Gy(t)});return(0,Hy.uniq)((0,Hy.flatten)(e))}Fo.firstForBranching=Oq;function Mq(r){return[r.terminalType]}Fo.firstForTerminal=Mq});var Lx=y(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.IN=void 0;Yy.IN="_~IN~_"});var Yq=y(ls=>{"use strict";var Vye=ls&&ls.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(ls,"__esModule",{value:!0});ls.buildInProdFollowPrefix=ls.buildBetweenProdsFollowPrefix=ls.computeAllProdsFollows=ls.ResyncFollowsWalker=void 0;var Xye=My(),_ye=Tx(),Uq=Gt(),Kq=Lx(),Zye=Cn(),Hq=function(r){Vye(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=Gq(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new Zye.Alternative({definition:o}),l=(0,_ye.first)(a);this.follows[s]=l},e}(Xye.RestWalker);ls.ResyncFollowsWalker=Hq;function $ye(r){var e={};return(0,Uq.forEach)(r,function(t){var i=new Hq(t).startWalking();(0,Uq.assign)(e,i)}),e}ls.computeAllProdsFollows=$ye;function Gq(r,e){return r.name+e+Kq.IN}ls.buildBetweenProdsFollowPrefix=Gq;function ewe(r){var e=r.terminalType.name;return e+r.idx+Kq.IN}ls.buildInProdFollowPrefix=ewe});var _d=y(Ra=>{"use strict";Object.defineProperty(Ra,"__esModule",{value:!0});Ra.defaultGrammarValidatorErrorProvider=Ra.defaultGrammarResolverErrorProvider=Ra.defaultParserErrorProvider=void 0;var mf=HA(),twe=Gt(),_s=Gt(),Ox=Cn(),jq=Xd();Ra.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,mf.hasTokenLabel)(e),o=s?"--> "+(0,mf.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,_s.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,_s.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,_s.map)(c,function(h){return"["+(0,_s.map)(h,function(p){return(0,mf.tokenLabel)(p)}).join(", ")+"]"}),g=(0,_s.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,_s.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,_s.map)(e,function(u){return"["+(0,_s.map)(u,function(g){return(0,mf.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ra.defaultParserErrorProvider);Ra.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};Ra.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Ox.Terminal?u.terminalType.name:u instanceof Ox.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,_s.first)(e),s=n.idx,o=(0,jq.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,mf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,mf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,jq.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+r.topLevelRule.name+`> Rule. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=twe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Ox.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Wq=y(GA=>{"use strict";var rwe=GA&&GA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(GA,"__esModule",{value:!0});GA.GastRefResolverVisitor=GA.resolveGrammar=void 0;var iwe=Hn(),qq=Gt(),nwe=Cf();function swe(r,e){var t=new Jq(r,e);return t.resolveRefs(),t.errors}GA.resolveGrammar=swe;var Jq=function(r){rwe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,qq.forEach)((0,qq.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:iwe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(nwe.GAstVisitor);GA.GastRefResolverVisitor=Jq});var $d=y(Lr=>{"use strict";var Fc=Lr&&Lr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Lr,"__esModule",{value:!0});Lr.nextPossibleTokensAfter=Lr.possiblePathsFrom=Lr.NextTerminalAfterAtLeastOneSepWalker=Lr.NextTerminalAfterAtLeastOneWalker=Lr.NextTerminalAfterManySepWalker=Lr.NextTerminalAfterManyWalker=Lr.AbstractNextTerminalAfterProductionWalker=Lr.NextAfterTokenWalker=Lr.AbstractNextPossibleTokensWalker=void 0;var zq=My(),Ut=Gt(),owe=Tx(),Dt=Cn(),Vq=function(r){Fc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Ut.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Ut.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Ut.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(zq.RestWalker);Lr.AbstractNextPossibleTokensWalker=Vq;var awe=function(r){Fc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Dt.Alternative({definition:s});this.possibleTokTypes=(0,owe.first)(o),this.found=!0}},e}(Vq);Lr.NextAfterTokenWalker=awe;var Zd=function(r){Fc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(zq.RestWalker);Lr.AbstractNextTerminalAfterProductionWalker=Zd;var Awe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterManyWalker=Awe;var lwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterManySepWalker=lwe;var cwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterAtLeastOneWalker=cwe;var uwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterAtLeastOneSepWalker=uwe;function Xq(r,e,t){t===void 0&&(t=[]),t=(0,Ut.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Ut.drop)(r,n+1))}function o(c){var u=Xq(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var _=B.definition[ge],L={idx:p,def:_.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:w};g.push(L),g.push(o)}else if(B instanceof Dt.Alternative)g.push({idx:p,def:B.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:w});else if(B instanceof Dt.Rule)g.push(fwe(B,p,C,w));else throw Error("non exhaustive match")}}return u}Lr.nextPossibleTokensAfter=gwe;function fwe(r,e,t,i){var n=(0,Ut.cloneArr)(t);n.push(r.name);var s=(0,Ut.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var eC=y(_t=>{"use strict";var $q=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),_q=$d(),hwe=My(),jy=df(),YA=Cn(),pwe=Cf(),li;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(li=_t.PROD_TYPE||(_t.PROD_TYPE={}));function dwe(r){if(r instanceof YA.Option)return li.OPTION;if(r instanceof YA.Repetition)return li.REPETITION;if(r instanceof YA.RepetitionMandatory)return li.REPETITION_MANDATORY;if(r instanceof YA.RepetitionMandatoryWithSeparator)return li.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof YA.RepetitionWithSeparator)return li.REPETITION_WITH_SEPARATOR;if(r instanceof YA.Alternation)return li.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=dwe;function Cwe(r,e,t,i,n,s){var o=tJ(r,e,t),a=Kx(o)?jy.tokenStructuredMatcherNoCategories:jy.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=Cwe;function mwe(r,e,t,i,n,s){var o=rJ(r,e,n,t),a=Kx(o)?jy.tokenStructuredMatcherNoCategories:jy.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=mwe;function Ewe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Hx=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),Sr=Gt(),No=Hn(),Gx=Xd(),Ef=eC(),bwe=$d(),Zs=Cn(),Yx=Cf();function Qwe(r,e,t,i,n){var s=er.map(r,function(h){return Swe(h,i)}),o=er.map(r,function(h){return jx(h,h,i)}),a=[],l=[],c=[];(0,Sr.every)(o,Sr.isEmpty)&&(a=(0,Sr.map)(r,function(h){return AJ(h,i)}),l=(0,Sr.map)(r,function(h){return lJ(h,e,i)}),c=gJ(r,e,i));var u=Pwe(r,t,i),g=(0,Sr.map)(r,function(h){return uJ(h,i)}),f=(0,Sr.map)(r,function(h){return aJ(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=Qwe;function Swe(r,e){var t=new oJ;r.accept(t);var i=t.allProductions,n=er.groupBy(i,nJ),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Gx.getProductionDslName)(l),g={message:c,type:No.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=sJ(l);return f&&(g.parameter=f),g});return o}function nJ(r){return(0,Gx.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+sJ(r)}zt.identifyProductionForDuplicates=nJ;function sJ(r){return r instanceof Zs.Terminal?r.terminalType.name:r instanceof Zs.NonTerminal?r.nonTerminalName:""}var oJ=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Yx.GAstVisitor);zt.OccurrenceValidationCollector=oJ;function aJ(r,e,t,i){var n=[],s=(0,Sr.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:No.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=aJ;function vwe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:No.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=vwe;function jx(r,e,t,i){i===void 0&&(i=[]);var n=[],s=tC(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:No.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),jx(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=jx;function tC(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof Zs.NonTerminal)e.push(t.referencedRule);else if(t instanceof Zs.Alternative||t instanceof Zs.Option||t instanceof Zs.RepetitionMandatory||t instanceof Zs.RepetitionMandatoryWithSeparator||t instanceof Zs.RepetitionWithSeparator||t instanceof Zs.Repetition)e=e.concat(tC(t.definition));else if(t instanceof Zs.Alternation)e=er.flatten(er.map(t.definition,function(o){return tC(o.definition)}));else if(!(t instanceof Zs.Terminal))throw Error("non exhaustive match");var i=(0,Gx.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(tC(s))}else return e}zt.getFirstNoneTerminal=tC;var qx=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Yx.GAstVisitor);function AJ(r,e){var t=new qx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,bwe.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:No.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=AJ;function lJ(r,e,t){var i=new qx;r.accept(i);var n=i.alternations;n=(0,Sr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Ef.getLookaheadPathsForOr)(l,r,c,a),g=xwe(u,a,r,t),f=fJ(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=lJ;var cJ=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Yx.GAstVisitor);zt.RepetionCollector=cJ;function uJ(r,e){var t=new qx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:No.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=uJ;function gJ(r,e,t){var i=[];return(0,Sr.forEach)(r,function(n){var s=new cJ;n.accept(s);var o=s.allProductions;(0,Sr.forEach)(o,function(a){var l=(0,Ef.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Ef.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Sr.isEmpty)((0,Sr.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:No.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=gJ;function xwe(r,e,t,i){var n=[],s=(0,Sr.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Sr.forEach)(l,function(u){var g=[c];(0,Sr.forEach)(r,function(f,h){c!==h&&(0,Ef.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Ef.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,Sr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:No.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function fJ(r,e,t,i){var n=[],s=(0,Sr.reduce)(r,function(o,a,l){var c=(0,Sr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Sr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Sr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(If,"__esModule",{value:!0});If.validateGrammar=If.resolveGrammar=void 0;var Wx=Gt(),Dwe=Wq(),kwe=Jx(),hJ=_d();function Rwe(r){r=(0,Wx.defaults)(r,{errMsgProvider:hJ.defaultGrammarResolverErrorProvider});var e={};return(0,Wx.forEach)(r.rules,function(t){e[t.name]=t}),(0,Dwe.resolveGrammar)(e,r.errMsgProvider)}If.resolveGrammar=Rwe;function Fwe(r){return r=(0,Wx.defaults)(r,{errMsgProvider:hJ.defaultGrammarValidatorErrorProvider}),(0,kwe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}If.validateGrammar=Fwe});var yf=y(En=>{"use strict";var rC=En&&En.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(En,"__esModule",{value:!0});En.EarlyExitException=En.NotAllInputParsedException=En.NoViableAltException=En.MismatchedTokenException=En.isRecognitionException=void 0;var Nwe=Gt(),dJ="MismatchedTokenException",CJ="NoViableAltException",mJ="EarlyExitException",EJ="NotAllInputParsedException",IJ=[dJ,CJ,mJ,EJ];Object.freeze(IJ);function Twe(r){return(0,Nwe.contains)(IJ,r.name)}En.isRecognitionException=Twe;var qy=function(r){rC(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),Lwe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=dJ,s}return e}(qy);En.MismatchedTokenException=Lwe;var Owe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=CJ,s}return e}(qy);En.NoViableAltException=Owe;var Mwe=function(r){rC(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=EJ,n}return e}(qy);En.NotAllInputParsedException=Mwe;var Uwe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=mJ,s}return e}(qy);En.EarlyExitException=Uwe});var Vx=y(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.attemptInRepetitionRecovery=Ki.Recoverable=Ki.InRuleRecoveryException=Ki.IN_RULE_RECOVERY_EXCEPTION=Ki.EOF_FOLLOW_KEY=void 0;var Jy=HA(),cs=Gt(),Kwe=yf(),Hwe=Lx(),Gwe=Hn();Ki.EOF_FOLLOW_KEY={};Ki.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function zx(r){this.name=Ki.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Ki.InRuleRecoveryException=zx;zx.prototype=Error.prototype;var Ywe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,cs.has)(e,"recoveryEnabled")?e.recoveryEnabled:Gwe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=yJ)},r.prototype.getTokenToInsert=function(e){var t=(0,Jy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new Kwe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,cs.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new zx("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,cs.isEmpty)(t))return!1;var n=this.LA(1),s=(0,cs.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,cs.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,cs.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Ki.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,cs.map)(t,function(n,s){return s===0?Ki.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,cs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,cs.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Ki.EOF_FOLLOW_KEY)return[Jy.EOF];var t=e.ruleName+e.idxInCallingRule+Hwe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,Jy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,cs.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,cs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,cs.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Ki.Recoverable=Ywe;function yJ(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=Jy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Ki.attemptInRepetitionRecovery=yJ});var Wy=y(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(zy,"__esModule",{value:!0});zy.LooksAhead=void 0;var Fa=eC(),$s=Gt(),wJ=Hn(),Na=Wy(),Nc=Xd(),qwe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,$s.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:wJ.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,$s.has)(e,"maxLookahead")?e.maxLookahead:wJ.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,$s.isES2015MapSupported)()?new Map:[],(0,$s.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,$s.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,$s.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,Nc.getProductionDslName)(g)+f,function(){var h=(0,Fa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,Na.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],Na.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,$s.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,Na.MANY_IDX,Fa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,Na.OPTION_IDX,Fa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,Na.AT_LEAST_ONE_IDX,Fa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,Na.AT_LEAST_ONE_SEP_IDX,Fa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,Na.MANY_SEP_IDX,Fa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Fa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,Na.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Fa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Fa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,Na.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();zy.LooksAhead=qwe});var bJ=y(To=>{"use strict";Object.defineProperty(To,"__esModule",{value:!0});To.addNoneTerminalToCst=To.addTerminalToCst=To.setNodeLocationFull=To.setNodeLocationOnlyOffset=void 0;function Jwe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(jA,"__esModule",{value:!0});jA.defineNameProp=jA.functionName=jA.classNameFromInstance=void 0;var Xwe=Gt();function _we(r){return SJ(r.constructor)}jA.classNameFromInstance=_we;var QJ="name";function SJ(r){var e=r.name;return e||"anonymous"}jA.functionName=SJ;function Zwe(r,e){var t=Object.getOwnPropertyDescriptor(r,QJ);return(0,Xwe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,QJ,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}jA.defineNameProp=Zwe});var kJ=y(vi=>{"use strict";Object.defineProperty(vi,"__esModule",{value:!0});vi.validateRedundantMethods=vi.validateMissingCstMethods=vi.validateVisitor=vi.CstVisitorDefinitionError=vi.createBaseVisitorConstructorWithDefaults=vi.createBaseSemanticVisitorConstructor=vi.defaultVisit=void 0;var us=Gt(),iC=Xx();function vJ(r,e){for(var t=(0,us.keys)(r),i=t.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}vi.createBaseSemanticVisitorConstructor=$we;function eBe(r,e,t){var i=function(){};(0,iC.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,us.forEach)(e,function(s){n[s]=vJ}),i.prototype=n,i.prototype.constructor=i,i}vi.createBaseVisitorConstructorWithDefaults=eBe;var _x;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(_x=vi.CstVisitorDefinitionError||(vi.CstVisitorDefinitionError={}));function xJ(r,e){var t=PJ(r,e),i=DJ(r,e);return t.concat(i)}vi.validateVisitor=xJ;function PJ(r,e){var t=(0,us.map)(e,function(i){if(!(0,us.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,iC.functionName)(r.constructor)+" CST Visitor.",type:_x.MISSING_METHOD,methodName:i}});return(0,us.compact)(t)}vi.validateMissingCstMethods=PJ;var tBe=["constructor","visit","validateVisitor"];function DJ(r,e){var t=[];for(var i in r)(0,us.isFunction)(r[i])&&!(0,us.contains)(tBe,i)&&!(0,us.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,iC.functionName)(r.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:_x.REDUNDANT_METHOD,methodName:i});return t}vi.validateRedundantMethods=DJ});var FJ=y(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});Vy.TreeBuilder=void 0;var wf=bJ(),ti=Gt(),RJ=kJ(),rBe=Hn(),iBe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,ti.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:rBe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ti.NOOP,this.cstFinallyStateUpdate=ti.NOOP,this.cstPostTerminal=ti.NOOP,this.cstPostNonTerminal=ti.NOOP,this.cstPostRule=ti.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=wf.setNodeLocationFull,this.setNodeLocationFromNode=wf.setNodeLocationFull,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=wf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=wf.setNodeLocationOnlyOffset,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=ti.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,wf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,wf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,ti.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,RJ.createBaseSemanticVisitorConstructor)(this.className,(0,ti.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,ti.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,RJ.createBaseVisitorConstructorWithDefaults)(this.className,(0,ti.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();Vy.TreeBuilder=iBe});var TJ=y(Xy=>{"use strict";Object.defineProperty(Xy,"__esModule",{value:!0});Xy.LexerAdapter=void 0;var NJ=Hn(),nBe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):NJ.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?NJ.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();Xy.LexerAdapter=nBe});var OJ=y(_y=>{"use strict";Object.defineProperty(_y,"__esModule",{value:!0});_y.RecognizerApi=void 0;var LJ=Gt(),sBe=yf(),Zx=Hn(),oBe=_d(),aBe=Jx(),ABe=Cn(),lBe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Zx.DEFAULT_RULE_CONFIG),(0,LJ.contains)(this.definedRulesNames,e)){var n=oBe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Zx.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Zx.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,aBe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,sBe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,ABe.serializeGrammar)((0,LJ.values)(this.gastProductionsCache))},r}();_y.RecognizerApi=lBe});var HJ=y($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.RecognizerEngine=void 0;var kr=Gt(),Gn=Wy(),Zy=yf(),MJ=eC(),Bf=$d(),UJ=Hn(),cBe=Vx(),KJ=HA(),nC=df(),uBe=Xx(),gBe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,uBe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=nC.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,kr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,kr.isArray)(e)){if((0,kr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,kr.isArray)(e))this.tokensMap=(0,kr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,kr.has)(e,"modes")&&(0,kr.every)((0,kr.flatten)((0,kr.values)(e.modes)),nC.isTokenType)){var i=(0,kr.flatten)((0,kr.values)(e.modes)),n=(0,kr.uniq)(i);this.tokensMap=(0,kr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,kr.isObject)(e))this.tokensMap=(0,kr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=KJ.EOF;var s=(0,kr.every)((0,kr.values)(e),function(o){return(0,kr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?nC.tokenStructuredMatcherNoCategories:nC.tokenStructuredMatcher,(0,nC.augmentTokenTypes)((0,kr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,kr.has)(i,"resyncEnabled")?i.resyncEnabled:UJ.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,kr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:UJ.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,kr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Zy.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,Zy.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Zy.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===cBe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,kr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),KJ.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();$y.RecognizerEngine=gBe});var YJ=y(ew=>{"use strict";Object.defineProperty(ew,"__esModule",{value:!0});ew.ErrorHandler=void 0;var $x=yf(),eP=Gt(),GJ=eC(),fBe=Hn(),hBe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,eP.has)(e,"errorMessageProvider")?e.errorMessageProvider:fBe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,$x.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,eP.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,eP.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,GJ.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new $x.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,GJ.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $x.NoViableAltException(c,this.LA(1),l))},r}();ew.ErrorHandler=hBe});var JJ=y(tw=>{"use strict";Object.defineProperty(tw,"__esModule",{value:!0});tw.ContentAssist=void 0;var jJ=$d(),qJ=Gt(),pBe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,qJ.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,jJ.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,qJ.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new jJ.NextAfterTokenWalker(n,e).startWalking();return s},r}();tw.ContentAssist=pBe});var e3=y(nw=>{"use strict";Object.defineProperty(nw,"__esModule",{value:!0});nw.GastRecorder=void 0;var In=Gt(),Lo=Cn(),dBe=Jd(),XJ=df(),_J=HA(),CBe=Hn(),mBe=Wy(),iw={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(iw);var WJ=!0,zJ=Math.pow(2,mBe.BITS_FOR_OCCURRENCE_IDX)-1,ZJ=(0,_J.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:dBe.Lexer.NA});(0,XJ.augmentTokenTypes)([ZJ]);var $J=(0,_J.createTokenInstance)(ZJ,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze($J);var EBe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},IBe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return CBe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Lo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return sC.call(this,Lo.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){sC.call(this,Lo.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){sC.call(this,Lo.RepetitionMandatoryWithSeparator,t,e,WJ)},r.prototype.manyInternalRecord=function(e,t){sC.call(this,Lo.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){sC.call(this,Lo.RepetitionWithSeparator,t,e,WJ)},r.prototype.orInternalRecord=function(e,t){return yBe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(rw(t),!e||(0,In.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=e.ruleName,a=new Lo.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?EBe:iw},r.prototype.consumeInternalRecord=function(e,t,i){if(rw(t),!(0,XJ.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=new Lo.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),$J},r}();nw.GastRecorder=IBe;function sC(r,e,t,i){i===void 0&&(i=!1),rw(t);var n=(0,In.peek)(this.recordingProdStack),s=(0,In.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,In.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),iw}function yBe(r,e){var t=this;rw(e);var i=(0,In.peek)(this.recordingProdStack),n=(0,In.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Lo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,In.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,In.some)(s,function(l){return(0,In.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,In.forEach)(s,function(l){var c=new Lo.Alternative({definition:[]});o.definition.push(c),(0,In.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,In.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),iw}function VJ(r){return r===0?"":""+r}function rw(r){if(r<0||r>zJ){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(zJ+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var r3=y(sw=>{"use strict";Object.defineProperty(sw,"__esModule",{value:!0});sw.PerformanceTracer=void 0;var t3=Gt(),wBe=Hn(),BBe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,t3.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=wBe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,t3.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();sw.PerformanceTracer=BBe});var i3=y(ow=>{"use strict";Object.defineProperty(ow,"__esModule",{value:!0});ow.applyMixins=void 0;function bBe(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}ow.applyMixins=bBe});var Hn=y(Cr=>{"use strict";var o3=Cr&&Cr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Cr,"__esModule",{value:!0});Cr.EmbeddedActionsParser=Cr.CstParser=Cr.Parser=Cr.EMPTY_ALT=Cr.ParserDefinitionErrorType=Cr.DEFAULT_RULE_CONFIG=Cr.DEFAULT_PARSER_CONFIG=Cr.END_OF_FILE=void 0;var _i=Gt(),QBe=Yq(),n3=HA(),a3=_d(),s3=pJ(),SBe=Vx(),vBe=BJ(),xBe=FJ(),PBe=TJ(),DBe=OJ(),kBe=HJ(),RBe=YJ(),FBe=JJ(),NBe=e3(),TBe=r3(),LBe=i3();Cr.END_OF_FILE=(0,n3.createTokenInstance)(n3.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Cr.END_OF_FILE);Cr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:a3.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});Cr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var OBe;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(OBe=Cr.ParserDefinitionErrorType||(Cr.ParserDefinitionErrorType={}));function MBe(r){return r===void 0&&(r=void 0),function(){return r}}Cr.EMPTY_ALT=MBe;var aw=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,_i.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,_i.has)(t,"skipValidations")?t.skipValidations:Cr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,_i.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,_i.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,s3.resolveGrammar)({rules:(0,_i.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,_i.isEmpty)(n)&&e.skipValidations===!1){var s=(0,s3.validateGrammar)({rules:(0,_i.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,_i.values)(e.tokensMap),errMsgProvider:a3.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,_i.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,QBe.computeAllProdsFollows)((0,_i.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,_i.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,_i.isEmpty)(e.definitionErrors))throw t=(0,_i.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();Cr.Parser=aw;(0,LBe.applyMixins)(aw,[SBe.Recoverable,vBe.LooksAhead,xBe.TreeBuilder,PBe.LexerAdapter,kBe.RecognizerEngine,DBe.RecognizerApi,RBe.ErrorHandler,FBe.ContentAssist,NBe.GastRecorder,TBe.PerformanceTracer]);var UBe=function(r){o3(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(aw);Cr.CstParser=UBe;var KBe=function(r){o3(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(aw);Cr.EmbeddedActionsParser=KBe});var l3=y(Aw=>{"use strict";Object.defineProperty(Aw,"__esModule",{value:!0});Aw.createSyntaxDiagramsCode=void 0;var A3=Ix();function HBe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+A3.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+A3.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` +