From 65be49c7df636eb55ddf2d65a9eb7faa039d471e Mon Sep 17 00:00:00 2001 From: MonoHauki Date: Sat, 24 Feb 2024 20:09:09 -0600 Subject: [PATCH 01/87] More Sprite Bits Added: Synth Dangle Ears, Kaiju Spikes (with glowing variant), Kaiju Tail (with glowing variant) Includes WIP sprites for Bishop Proto Fat and Slim variants, not yet implemented --- .../new_player/sprite_accessories_ear_vr.dm | 7 +++++++ .../new_player/sprite_accessories_tail_vr.dm | 19 +++++++++++++++++- .../new_player/sprite_accessories_wing_vr.dm | 17 +++++++++++++++- .../cyberlimbs/bishop/bishop_proto.dmi | Bin 0 -> 3282 bytes .../cyberlimbs/bishop/bishop_proto_f.dmi | Bin 0 -> 3630 bytes .../cyberlimbs/bishop/bishop_proto_s.dmi | Bin 0 -> 3629 bytes .../human_races/sprite_accessories/ears.dmi | Bin 26518 -> 26876 bytes .../human_races/sprite_accessories/wings.dmi | Bin 30977 -> 31202 bytes icons/mob/vore/ears_vr.dmi | Bin 36434 -> 36814 bytes icons/mob/vore/taurs_vr.dmi | Bin 212883 -> 212973 bytes icons/mob/vore/wings_vr.dmi | Bin 60053 -> 60332 bytes 11 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 icons/mob/human_races/cyberlimbs/bishop/bishop_proto.dmi create mode 100644 icons/mob/human_races/cyberlimbs/bishop/bishop_proto_f.dmi create mode 100644 icons/mob/human_races/cyberlimbs/bishop/bishop_proto_s.dmi diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm index de137460cb..22f8354bf6 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm @@ -164,6 +164,13 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/dangles_robot + name = "synth dangle antennae, colorable" + desc = "" + icon_state = "dangleantennae_robot" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + /datum/sprite_accessory/ears/oni_h1 name = "oni horns" desc = "" diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index 87beb3a6a4..3312799469 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -1467,4 +1467,21 @@ icon_state = "spiketail" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - extra_overlay = "spiketail-1" \ No newline at end of file + extra_overlay = "spiketail-1" + +/datum/sprite_accessory/tail/longtail/kaiju_tail_a_long + name = "Kaiju tail A, dual color" + icon = 'icons/mob/vore/taurs_vr.dmi' + icon_state = "kaiju_long_a" + extra_overlay = "kaiju_long_a_spikes" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/longtail/kaiju_tail_a_long_glow + name = "Kaiju tail A, dual color, glow" + icon = 'icons/mob/vore/taurs_vr.dmi' + icon_state = "kaiju_long_a" + extra_overlay = "kaiju_long_a_spikes" + extra_overlay2 = "kaiju_long_a_spikes_glow" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm index 1f85bd1566..1e8f6d4919 100644 --- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm @@ -374,4 +374,19 @@ icon_state = "pterodactyl_wing_frame" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - extra_overlay = "pterodactyl_wing_membrane" \ No newline at end of file + extra_overlay = "pterodactyl_wing_membrane" + +/datum/sprite_accessory/wing/kaiju_spines_a + name = "kaiju spines A, colorable" + desc = "" + icon_state = "kaiju_spikes_a" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/kaiju_spines_a_glow + name = "kaiju spines A, colorable, glow" + desc = "" + icon_state = "kaiju_spikes_a" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "kaiju_spikes_a_glow" \ No newline at end of file diff --git a/icons/mob/human_races/cyberlimbs/bishop/bishop_proto.dmi b/icons/mob/human_races/cyberlimbs/bishop/bishop_proto.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b5551b5e0a77c2a1492e567a5a4fb6f064fe4219 GIT binary patch literal 3282 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 literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/cyberlimbs/bishop/bishop_proto_f.dmi b/icons/mob/human_races/cyberlimbs/bishop/bishop_proto_f.dmi new file mode 100644 index 0000000000000000000000000000000000000000..aa4b37228a402492910f459b30b36abfc91d0000 GIT binary patch literal 3630 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

RN*? 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%0DMu$BL66fLq>Zo&|LQu#%o`fpl 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%0DB>cz0Gf*d qmjl#mUOeHZqY)@AO5Ru?pQGa4{oFmm@d^9_d!nMHjCx@8`u_o0?IoK4 delta 15740 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 H=N$b%tFEbM diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi index a5ebaa2b71ee7a8ea0600711607c5a0507d61f04..85bd00e9205bc59b4be1ccad91c778b2affb9a84 100644 GIT binary patch delta 16168 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 delta 15887 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 From 85ea90fb79e3a80bc7a7ab9f50fe7d669f4b5c35 Mon Sep 17 00:00:00 2001 From: Killian <49700375+KillianKirilenko@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:25:21 +0000 Subject: [PATCH 02/87] Smart Storage Tweaks (#15774) * Smart Storage Tweaks * Update smartfridge.dm --- code/modules/persistence/storage/smartfridge.dm | 13 ++++++++++--- code/modules/persistence/storage/storage.dm | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/modules/persistence/storage/smartfridge.dm b/code/modules/persistence/storage/smartfridge.dm index ef7b643ceb..addb37ed16 100644 --- a/code/modules/persistence/storage/smartfridge.dm +++ b/code/modules/persistence/storage/smartfridge.dm @@ -25,12 +25,17 @@ store_per_type = TRUE target_type = /obj/machinery/smartfridge/sheets + var/min_retained = 75 //minimum percentage of current stock for retention + var/max_retained = 80 //maximum percentage of current stock for retention var/stacks_go_missing = FALSE // Variable rate depletion of stacks inter-round + var/minimum_storage_reserve = FALSE // ...but still try to maintain a minimum reserve? /datum/persistent/storage/smartfridge/sheet_storage/lossy name = "sheet storage lossy" - max_storage = 250 + min_storage = 20 //if the amount is at or below this, don't cull + max_storage = 500 //if the amount is above this, cull it to this amount THEN do math stacks_go_missing = TRUE + minimum_storage_reserve = TRUE /datum/persistent/storage/smartfridge/sheet_storage/variable_max name = "variable max storage" @@ -65,8 +70,10 @@ // Delete some stacks if we want if(stacks_go_missing) - var/fuzzy = rand(55,65)*0.01 // loss of 35-45% with rounding down - count = round(count*fuzzy) + var/fuzzy = rand(min_retained,max_retained)*0.01 // loss of 35-45% with rounding down + if(!minimum_storage_reserve || (count > min_storage && minimum_storage_reserve)) + count = round(count*fuzzy) + if(count <= 0) continue diff --git a/code/modules/persistence/storage/storage.dm b/code/modules/persistence/storage/storage.dm index a1b16e39b1..d430ee8cda 100644 --- a/code/modules/persistence/storage/storage.dm +++ b/code/modules/persistence/storage/storage.dm @@ -9,6 +9,7 @@ entry_decay_weight = 0 // // // // + var/min_storage = 0 var/max_storage = 0 var/store_per_type = FALSE // If true, will store up to max_storage for each type stored var/target_type = null // Path of the thing that this expects to put stuff into From 578f576d90a69febb20ff0094a4670bd791b9a89 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Tue, 27 Feb 2024 19:37:15 +0100 Subject: [PATCH 03/87] Fix datum components (#15788) --- code/datums/components/_component.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 2e177c8ff3..0aa3c9889f 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -297,12 +297,12 @@ */ /datum/component/proc/_GetInverseTypeList(our_type = type) //we can do this one simple trick + . = list(our_type) var/current_type = parent_type - . = list(our_type, current_type) //and since most components are root level + 1, this won't even have to run while (current_type != /datum/component) - current_type = type2parent(current_type) . += current_type + current_type = type2parent(current_type) /** * Internal proc to handle most all of the signaling procedure From 45bd77d758b48c6cc0a0028e912d4d985b989166 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Feb 2024 20:21:06 +0100 Subject: [PATCH 04/87] Bump es5-ext from 0.10.62 to 0.10.64 in /tgui (#15789) Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.62 to 0.10.64. - [Release notes](https://github.com/medikoo/es5-ext/releases) - [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md) - [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.62...v0.10.64) --- updated-dependencies: - dependency-name: es5-ext dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tgui/yarn.lock | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tgui/yarn.lock b/tgui/yarn.lock index 3b264ef346..6e758a873c 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -3353,14 +3353,15 @@ __metadata: languageName: node linkType: hard -"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.61, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": - version: 0.10.62 - resolution: "es5-ext@npm:0.10.62" +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.61, es5-ext@npm:^0.10.62, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": + version: 0.10.64 + resolution: "es5-ext@npm:0.10.64" dependencies: es6-iterator: ^2.0.3 es6-symbol: ^3.1.3 + esniff: ^2.0.1 next-tick: ^1.1.0 - checksum: 25f42f6068cfc6e393cf670bc5bba249132c5f5ec2dd0ed6e200e6274aca2fed8e9aec8a31c76031744c78ca283c57f0b41c7e737804c6328c7b8d3fbcba7983 + checksum: 01179fab0769fdbef213062222f99d0346724dbaccf04b87c0e6ee7f0c97edabf14be647ca1321f0497425ea7145de0fd278d1b3f3478864b8933e7136a5c645 languageName: node linkType: hard @@ -3696,6 +3697,18 @@ __metadata: languageName: node linkType: hard +"esniff@npm:^2.0.1": + version: 2.0.1 + resolution: "esniff@npm:2.0.1" + dependencies: + d: ^1.0.1 + es5-ext: ^0.10.62 + event-emitter: ^0.3.5 + type: ^2.7.2 + checksum: d814c0e5c39bce9925b2e65b6d8767af72c9b54f35a65f9f3d6e8c606dce9aebe35a9599d30f15b0807743f88689f445163cfb577a425de4fb8c3c5bc16710cc + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" From 0cd455304fbaf02f1b49695892dd1068e2d29236 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Fri, 1 Mar 2024 07:36:56 +0100 Subject: [PATCH 05/87] negatives and no rounding for integrated_electronics debugger (#15793) --- code/modules/integrated_electronics/core/tools.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm index 75b6e85fb4..d5d01b38c4 100644 --- a/code/modules/integrated_electronics/core/tools.dm +++ b/code/modules/integrated_electronics/core/tools.dm @@ -33,7 +33,7 @@ to_chat(user, "Wiring \the [selected_io.holder]'s [selected_io.name] into itself is rather pointless.") return if(io.io_type != selected_io.io_type) - to_chat(user, "Those two types of channels are incompatible. The first is a [selected_io.io_type], \ + to_chat(user, "Those two types of channels are incompatible. The first is a [selected_io.io_type], \ while the second is a [io.io_type].") return if(io.holder.assembly && io.holder.assembly != selected_io.holder.assembly) @@ -106,7 +106,7 @@ /obj/item/device/integrated_electronics/debugger name = "circuit debugger" desc = "This small tool allows one working with custom machinery to directly set data to a specific pin, useful for writing \ - settings to specific circuits, or for debugging purposes. It can also pulse activation pins." + settings to specific circuits, or for debugging purposes. It can also pulse activation pins." icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "debugger" w_class = 2 @@ -129,13 +129,13 @@ to_chat(user, "You set \the [src]'s memory to \"[new_data]\".") if("number") accepting_refs = 0 - new_data = tgui_input_number(usr, "Now type in a number.","[src] number writing") + new_data = tgui_input_number(usr, "Now type in a number.","[src] number writing", min_value=-INFINITY, round_value=FALSE) if(isnum(new_data) && CanInteract(user, GLOB.tgui_physical_state)) data_to_write = new_data to_chat(user, "You set \the [src]'s memory to [new_data].") if("ref") accepting_refs = 1 - to_chat(user, "You turn \the [src]'s ref scanner on. Slide it across \ + to_chat(user, "You turn \the [src]'s ref scanner on. Slide it across \ an object for a ref of that object to save it in memory.") if("null") data_to_write = null @@ -145,7 +145,7 @@ if(accepting_refs && proximity) data_to_write = WEAKREF(target) visible_message("[user] slides \a [src]'s over \the [target].") - to_chat(user, "You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \ + to_chat(user, "You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \ now off.") accepting_refs = 0 @@ -206,7 +206,7 @@ to_chat(user, "Wiring \the [selected_io.holder]'s [selected_io.name] into itself is rather pointless.") return if(io.io_type != selected_io.io_type) - to_chat(user, "Those two types of channels are incompatible. The first is a [selected_io.io_type], \ + to_chat(user, "Those two types of channels are incompatible. The first is a [selected_io.io_type], \ while the second is a [io.io_type].") return if(io.holder.assembly && io.holder.assembly != selected_io.holder.assembly) @@ -246,7 +246,7 @@ if(accepting_refs && toolmode == MULTITOOL_MODE_INTCIRCUITS && proximity) weakref_wiring = WEAKREF(target) visible_message("[user] slides \a [src]'s over \the [target].") - to_chat(user, "You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \ + to_chat(user, "You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \ now off.") accepting_refs = 0 From beffafd8691e45c6c34b620346ccf4f7b4d9509b Mon Sep 17 00:00:00 2001 From: MonoHauki <69777971+MonoHauki@users.noreply.github.com> Date: Fri, 1 Mar 2024 01:17:44 -0600 Subject: [PATCH 06/87] Whitelist Update (#15792) draykenthedragon - Protean --- config/alienwhitelist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index f2eeb08cab..4f44df93be 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -42,6 +42,7 @@ digitalsquirrel95 - Black-Eyed Shadekin digitalsquirrel95 - Protean draycu - Vox draykenthedragon - Xenochimera +draykenthedragon - Protean durandaal - Teppi essbie - Black-Eyed Shadekin exgame - Vox From 1940e1c62fdcbd2465a98a38ee0a3881f0c4b34a Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 13:11:02 +0100 Subject: [PATCH 07/87] tgui and nif runtimes from chomp (#15796) --- code/controllers/subsystems/tgui.dm | 6 +++--- code/modules/nifsoft/nif.dm | 5 ++++- code/modules/tgui/tgui.dm | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/code/controllers/subsystems/tgui.dm b/code/controllers/subsystems/tgui.dm index 578e3c486a..46b3ae90c2 100644 --- a/code/controllers/subsystems/tgui.dm +++ b/code/controllers/subsystems/tgui.dm @@ -266,13 +266,13 @@ SUBSYSTEM_DEF(tgui) * * return int The number of UIs closed. */ -/datum/controller/subsystem/tgui/proc/close_user_uis(mob/user, datum/src_object) +/datum/controller/subsystem/tgui/proc/close_user_uis(mob/user, datum/src_object, logout = FALSE) var/count = 0 if(length(user?.tgui_open_uis) == 0) return count for(var/datum/tgui/ui in user.tgui_open_uis) if(isnull(src_object) || ui.src_object == src_object) - ui.close() + ui.close(logout = logout) count++ return count @@ -318,7 +318,7 @@ SUBSYSTEM_DEF(tgui) * return int The number of UIs closed. */ /datum/controller/subsystem/tgui/proc/on_logout(mob/user) - close_user_uis(user) + close_user_uis(user, logout = TRUE) /** * private diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index 5461bfaa74..7890e52206 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -457,7 +457,10 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable //Uninstall a piece of software /obj/item/device/nif/proc/uninstall(var/datum/nifsoft/old_soft) - var/datum/nifsoft/NS = nifsofts[old_soft.list_pos] + var/datum/nifsoft/NS + if(nifsofts) + NS = nifsofts[old_soft.list_pos] + if(!NS || NS != old_soft) return FALSE //what?? diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index fd45f9723d..91b0b8fb2b 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -229,7 +229,7 @@ * optional force bool Send an update even if UI is not interactive. */ /datum/tgui/proc/send_update(custom_data, force) - if(!user.client || !initialized || closing) + if(!user?.client || !initialized || closing) return var/should_update_data = force || status >= STATUS_UPDATE window.send_message("update", get_payload( @@ -321,7 +321,8 @@ */ /datum/tgui/proc/process_status() var/prev_status = status - status = src_object.tgui_status(user, state) + if(src_object) + status = src_object.tgui_status(user, state) if(parent_ui) status = min(status, parent_ui.status) return prev_status != status From a3e33e43705923fa57b696d4007e4e1749bdf126 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 13:11:39 +0100 Subject: [PATCH 08/87] Various fixes upport from chomp (#15794) * up-port * more upstream commonality --- code/ATMOSPHERICS/datum_pipe_network.dm | 2 - code/ATMOSPHERICS/pipes/simple.dm | 2 +- code/__defines/machinery.dm | 16 ++--- code/_helpers/sorts/__main.dm | 8 +-- code/controllers/subsystems/garbage.dm | 1 + code/controllers/subsystems/machines.dm | 74 ++++++++++++++---------- code/datums/datum.dm | 9 +++ code/datums/reference_tracking.dm | 8 ++- code/game/machinery/machinery.dm | 4 +- code/global.dm | 5 +- code/modules/admin/verbs/atmosdebug.dm | 4 +- code/modules/admin/verbs/grief_fixers.dm | 4 +- 12 files changed, 79 insertions(+), 58 deletions(-) diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm index 20a4dbc159..2306775ad5 100644 --- a/code/ATMOSPHERICS/datum_pipe_network.dm +++ b/code/ATMOSPHERICS/datum_pipe_network.dm @@ -1,5 +1,3 @@ -var/global/list/datum/pipe_network/pipe_networks = list() // TODO - Move into SSmachines - /datum/pipe_network var/list/datum/gas_mixture/gases = list() //All of the gas_mixtures continuously connected in this network var/volume = 0 //caches the total volume for atmos machines to use in gas calculations diff --git a/code/ATMOSPHERICS/pipes/simple.dm b/code/ATMOSPHERICS/pipes/simple.dm index 1f427fb151..def462a354 100644 --- a/code/ATMOSPHERICS/pipes/simple.dm +++ b/code/ATMOSPHERICS/pipes/simple.dm @@ -96,7 +96,7 @@ node1 = null if(node2) node2.disconnect(src) - node1 = null + node2 = null . = ..() diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 3edae54b47..76e5b0b768 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -154,17 +154,17 @@ if (!(DATUM.datum_flags & DF_ISPROCESSING)) {\ #define STOP_PROCESSING_IN_LIST(DATUM, LIST) LIST.Remove(DATUM);DATUM.datum_flags &= ~DF_ISPROCESSING // Note - I would prefer these be defined machines.dm, but some are used prior in file order. ~Leshana -#define START_MACHINE_PROCESSING(Datum) START_PROCESSING_IN_LIST(Datum, global.processing_machines) -#define STOP_MACHINE_PROCESSING(Datum) STOP_PROCESSING_IN_LIST(Datum, global.processing_machines) +#define START_MACHINE_PROCESSING(Datum) START_PROCESSING_IN_LIST(Datum, SSmachines.processing_machines) +#define STOP_MACHINE_PROCESSING(Datum) STOP_PROCESSING_IN_LIST(Datum, SSmachines.processing_machines) -#define START_PROCESSING_PIPENET(Datum) START_PROCESSING_IN_LIST(Datum, global.pipe_networks) -#define STOP_PROCESSING_PIPENET(Datum) STOP_PROCESSING_IN_LIST(Datum, global.pipe_networks) +#define START_PROCESSING_PIPENET(Datum) START_PROCESSING_IN_LIST(Datum, SSmachines.networks) +#define STOP_PROCESSING_PIPENET(Datum) STOP_PROCESSING_IN_LIST(Datum, SSmachines.networks) -#define START_PROCESSING_POWERNET(Datum) START_PROCESSING_IN_LIST(Datum, global.powernets) -#define STOP_PROCESSING_POWERNET(Datum) STOP_PROCESSING_IN_LIST(Datum, global.powernets) +#define START_PROCESSING_POWERNET(Datum) START_PROCESSING_IN_LIST(Datum, SSmachines.powernets) +#define STOP_PROCESSING_POWERNET(Datum) STOP_PROCESSING_IN_LIST(Datum, SSmachines.powernets) -#define START_PROCESSING_POWER_OBJECT(Datum) START_PROCESSING_IN_LIST(Datum, global.processing_power_items) -#define STOP_PROCESSING_POWER_OBJECT(Datum) STOP_PROCESSING_IN_LIST(Datum, global.processing_power_items) +#define START_PROCESSING_POWER_OBJECT(Datum) START_PROCESSING_IN_LIST(Datum, SSmachines.powerobjs) +#define STOP_PROCESSING_POWER_OBJECT(Datum) STOP_PROCESSING_IN_LIST(Datum, SSmachines.powerobjs) // Computer login types #define LOGIN_TYPE_NORMAL 1 diff --git a/code/_helpers/sorts/__main.dm b/code/_helpers/sorts/__main.dm index 622d88f147..7fd0a505c7 100644 --- a/code/_helpers/sorts/__main.dm +++ b/code/_helpers/sorts/__main.dm @@ -102,7 +102,8 @@ start the index of the first element in the range that is not already known to b if(start <= lo) start = lo + 1 - for(,start < hi, ++start) + var/list/L = src.L + for(start in start to hi - 1) var/pivot = fetchElement(L,start) //set left and right to the index where pivot belongs @@ -626,20 +627,17 @@ reverse a descending sequence without violating stability. var/val2 = fetchElement(L,cursor2) while(1) - if(call(cmp)(val1,val2) < 0) + if(call(cmp)(val1,val2) <= 0) if(++cursor1 >= end1) break val1 = fetchElement(L,cursor1) else moveElement(L,cursor2,cursor1) - ++cursor2 if(++cursor2 >= end2) break ++end1 ++cursor1 - //if(++cursor1 >= end1) - // break val2 = fetchElement(L,cursor2) diff --git a/code/controllers/subsystems/garbage.dm b/code/controllers/subsystems/garbage.dm index c1fe92295d..400a61b0f9 100644 --- a/code/controllers/subsystems/garbage.dm +++ b/code/controllers/subsystems/garbage.dm @@ -26,6 +26,7 @@ SUBSYSTEM_DEF(garbage) var/list/queues #ifdef REFERENCE_TRACKING var/list/reference_find_on_fail = list() + var/find_reference_on_fail_global_toggle = FALSE #endif diff --git a/code/controllers/subsystems/machines.dm b/code/controllers/subsystems/machines.dm index 100811f5c0..62e5be38d3 100644 --- a/code/controllers/subsystems/machines.dm +++ b/code/controllers/subsystems/machines.dm @@ -23,10 +23,18 @@ SUBSYSTEM_DEF(machines) var/list/current_run = list() + var/list/all_machines = list() + + var/list/networks = list() + var/list/processing_machines = list() + var/list/powernets = list() + var/list/powerobjs = list() + /datum/controller/subsystem/machines/Initialize(timeofday) makepowernets() admin_notice("Initializing atmos machinery.", R_DEBUG) - setup_atmos_machinery(global.machines) + machines = all_machines //stupid god damn globals + setup_atmos_machinery(all_machines) fire() ..() @@ -83,24 +91,24 @@ SUBSYSTEM_DEF(machines) msg += "PN:[round(cost_powernets,1)]|" msg += "PO:[round(cost_power_objects,1)]" msg += "} " - msg += "PI:[global.pipe_networks.len]|" - msg += "MC:[global.processing_machines.len]|" - msg += "PN:[global.powernets.len]|" - msg += "PO:[global.processing_power_items.len]|" - msg += "MC/MS:[round((cost ? global.processing_machines.len/cost_machinery : 0),0.1)]" + msg += "PI:[SSmachines.networks.len]|" + msg += "MC:[SSmachines.processing_machines.len]|" + msg += "PN:[SSmachines.powernets.len]|" + msg += "PO:[SSmachines.powerobjs.len]|" + msg += "MC/MS:[round((cost ? SSmachines.processing_machines.len/cost_machinery : 0),0.1)]" ..(jointext(msg, null)) /datum/controller/subsystem/machines/proc/process_pipenets(resumed = 0) if (!resumed) - src.current_run = global.pipe_networks.Copy() + src.current_run = networks.Copy() //cache for sanic speed (lists are references anyways) var/wait = src.wait var/list/current_run = src.current_run while(current_run.len) var/datum/pipe_network/PN = current_run[current_run.len] current_run.len-- - if(QDELETED(PN)) - global.pipe_networks.Remove(PN) + if(!PN) + networks.Remove(PN) DISABLE_BITFIELD(PN?.datum_flags, DF_ISPROCESSING) else PN.process(wait) @@ -109,30 +117,30 @@ SUBSYSTEM_DEF(machines) /datum/controller/subsystem/machines/proc/process_machinery(resumed = 0) if (!resumed) - src.current_run = global.processing_machines.Copy() + src.current_run = processing_machines.Copy() var/wait = src.wait var/list/current_run = src.current_run while(current_run.len) var/obj/machinery/M = current_run[current_run.len] current_run.len-- - if(QDELETED(M) || (M.process(wait) == PROCESS_KILL)) - global.processing_machines.Remove(M) + if(!M || (M.process(wait) == PROCESS_KILL)) + processing_machines.Remove(M) DISABLE_BITFIELD(M?.datum_flags, DF_ISPROCESSING) if(MC_TICK_CHECK) return /datum/controller/subsystem/machines/proc/process_powernets(resumed = 0) if (!resumed) - src.current_run = global.powernets.Copy() + src.current_run = powernets.Copy() var/wait = src.wait var/list/current_run = src.current_run while(current_run.len) var/datum/powernet/PN = current_run[current_run.len] current_run.len-- - if(QDELETED(PN)) - global.powernets.Remove(PN) + if(!PN) + powernets.Remove(PN) DISABLE_BITFIELD(PN?.datum_flags, DF_ISPROCESSING) else PN.reset(wait) @@ -143,36 +151,42 @@ SUBSYSTEM_DEF(machines) // Currently only used by powersinks. These items get priority processed before machinery /datum/controller/subsystem/machines/proc/process_power_objects(resumed = 0) if (!resumed) - src.current_run = global.processing_power_items.Copy() + src.current_run = powerobjs.Copy() var/wait = src.wait var/list/current_run = src.current_run while(current_run.len) var/obj/item/I = current_run[current_run.len] current_run.len-- - if(QDELETED(I) || (I.pwr_drain(wait) == PROCESS_KILL)) - global.processing_power_items.Remove(I) + if(!I || (I.pwr_drain(wait) == PROCESS_KILL)) + powerobjs.Remove(I) DISABLE_BITFIELD(I?.datum_flags, DF_ISPROCESSING) if(MC_TICK_CHECK) return /datum/controller/subsystem/machines/Recover() - for(var/datum/D as anything in global.pipe_networks) + for(var/datum/D as anything in SSmachines.networks) if(!istype(D, /datum/pipe_network)) - error("Found wrong type during SSmachinery recovery: list=global.pipe_networks, item=[D], type=[D?.type]") - global.pipe_networks -= D - for(var/datum/D as anything in global.processing_machines) + error("Found wrong type during SSmachinery recovery: list=SSmachines.networks, item=[D], type=[D?.type]") + SSmachines.networks -= D + for(var/datum/D as anything in SSmachines.processing_machines) if(!istype(D, /obj/machinery)) - error("Found wrong type during SSmachinery recovery: list=global.processing_machines, item=[D], type=[D?.type]") - global.processing_machines -= D - for(var/datum/D as anything in global.powernets) + error("Found wrong type during SSmachinery recovery: list=SSmachines.machines, item=[D], type=[D?.type]") + SSmachines.processing_machines -= D + for(var/datum/D as anything in SSmachines.powernets) if(!istype(D, /datum/powernet)) - error("Found wrong type during SSmachinery recovery: list=global.powernets, item=[D], type=[D?.type]") - global.powernets -= D - for(var/datum/D as anything in global.processing_power_items) + error("Found wrong type during SSmachinery recovery: list=SSmachines.powernets, item=[D], type=[D?.type]") + SSmachines.powernets -= D + for(var/datum/D as anything in SSmachines.powerobjs) if(!istype(D, /obj/item)) - error("Found wrong type during SSmachinery recovery: list=global.processing_power_items, item=[D], type=[D?.type]") - global.processing_power_items -= D + error("Found wrong type during SSmachinery recovery: list=SSmachines.powerobjs, item=[D], type=[D?.type]") + SSmachines.powerobjs -= D + + all_machines = SSmachines.all_machines + networks = SSmachines.networks + processing_machines = SSmachines.processing_machines + powernets = SSmachines.powernets + powerobjs = SSmachines.powerobjs #undef SSMACHINES_PIPENETS #undef SSMACHINES_MACHINERY diff --git a/code/datums/datum.dm b/code/datums/datum.dm index af085fbc14..a9bd003fa7 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -56,6 +56,7 @@ #ifdef REFERENCE_TRACKING var/tmp/running_find_references var/tmp/last_find_references = 0 + var/tmp/find_references_on_destroy = FALSE //set this to true on an item to have it find refs after #ifdef REFERENCE_TRACKING_DEBUG ///Stores info about where refs are found, used for sanity checks and testing var/list/found_refs @@ -113,6 +114,14 @@ tag = null SStgui.close_uis(src) + + #ifdef REFERENCE_TRACKING + if(find_references_on_destroy) + return QDEL_HINT_FINDREFERENCE + if(SSgarbage.find_reference_on_fail_global_toggle) + return QDEL_HINT_IFFAIL_FINDREFERENCE + #endif + return QDEL_HINT_QUEUE /** diff --git a/code/datums/reference_tracking.dm b/code/datums/reference_tracking.dm index 3154f64740..0f317b026c 100644 --- a/code/datums/reference_tracking.dm +++ b/code/datums/reference_tracking.dm @@ -1,6 +1,6 @@ #ifdef REFERENCE_TRACKING -/datum/proc/find_references(skip_alert) +/datum/proc/find_references(skip_alert = TRUE) running_find_references = type if(usr?.client) if(usr.client.running_find_references) @@ -28,7 +28,11 @@ //Time to search the whole game for our ref DoSearchVar(GLOB, "GLOB") //globals - log_reftracker("Finished searching globals") + log_reftracker("Finished searching GLOB") + + for(var/thing in global.vars) + DoSearchVar(thing, "Global variable -> [nameof(thing)]", search_time = starting_time) + log_reftracker("Finished searching global.vars") for(var/datum/thing in world) //atoms (don't beleive its lies) DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index d991eddae9..b275821a59 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -130,7 +130,7 @@ Class Procs: /obj/machinery/Initialize(var/mapload) . = ..() - global.machines += src + SSmachines.all_machines += src if(ispath(circuit)) circuit = new circuit(src) if(!speed_process) @@ -145,7 +145,7 @@ Class Procs: STOP_MACHINE_PROCESSING(src) else STOP_PROCESSING(SSfastprocess, src) - global.machines -= src + SSmachines.all_machines -= src if(component_parts) for(var/atom/A in component_parts) if(A.loc == src) // If the components are inside the machine, delete them. diff --git a/code/global.dm b/code/global.dm index c6e450ceac..da077ef48c 100644 --- a/code/global.dm +++ b/code/global.dm @@ -1,8 +1,7 @@ // Items that ask to be called every cycle. var/global/datum/datacore/data_core = null var/global/list/machines = list() // ALL Machines, wether processing or not. -var/global/list/processing_machines = list() // TODO - Move into SSmachines -var/global/list/processing_power_items = list() // TODO - Move into SSmachines + var/global/list/active_diseases = list() var/global/list/hud_icon_reference = list() @@ -91,8 +90,6 @@ var/list/IClog = list() var/list/OOClog = list() var/list/adminlog = list() -var/list/powernets = list() // TODO - Move into SSmachines - var/Debug2 = 0 var/datum/debug/debugobj diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 082f0e26b0..64c33419d0 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -48,7 +48,7 @@ feedback_add_details("admin_verb","CPOW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - for (var/datum/powernet/PN in powernets) + for (var/datum/powernet/PN in SSmachines.powernets) if (!PN.nodes || !PN.nodes.len) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] @@ -57,4 +57,4 @@ if (!PN.cables || (PN.cables.len < 10)) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") \ No newline at end of file + to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") diff --git a/code/modules/admin/verbs/grief_fixers.dm b/code/modules/admin/verbs/grief_fixers.dm index 9ad4619166..1024fb7d32 100644 --- a/code/modules/admin/verbs/grief_fixers.dm +++ b/code/modules/admin/verbs/grief_fixers.dm @@ -20,7 +20,7 @@ to_chat(usr, "\[1/5\] - Supermatter depowered") // Remove all gases from all pipenets - for(var/datum/pipe_network/PN in pipe_networks) + for(var/datum/pipe_network/PN in SSmachines.networks) for(var/datum/gas_mixture/G in PN.gases) G.gas = list() G.update_values() @@ -48,4 +48,4 @@ SSair.RebootZAS() to_chat(usr, "\[5/5\] - ZAS Rebooted") - to_world("Atmosphere restart completed in [(world.timeofday - current_time)/10] seconds.") \ No newline at end of file + to_world("Atmosphere restart completed in [(world.timeofday - current_time)/10] seconds.") From 3b2e27c8717d31d1122df555f2977fa2f8b0a052 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 13:12:34 +0100 Subject: [PATCH 09/87] Chatmessage runtime (#15795) * Chatmessage runtimes (#7863) * no QDEL_IN_STOPPABLE, default behavior for you, neat. --- code/datums/chat_message.dm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm index 4dd8d42537..40a1239acc 100644 --- a/code/datums/chat_message.dm +++ b/code/datums/chat_message.dm @@ -51,6 +51,9 @@ var/list/runechat_image_cache = list() /// If we are currently processing animation and cleanup at EOL var/ending_life + /// deletion timer + var/timer_delete + /** * Constructs a chat message overlay * @@ -72,11 +75,14 @@ var/list/runechat_image_cache = list() generate_image(text, target, owner, extra_classes, lifespan) /datum/chatmessage/Destroy() - if(owned_by) + if(timer_delete) + deltimer(timer_delete) + timer_delete = null + if(!QDELETED(owned_by)) UnregisterSignal(owned_by, COMSIG_PARENT_QDELETING) LAZYREMOVEASSOC(owned_by.seen_messages, message_loc, src) owned_by.images.Remove(message) - if(message_loc) + if(!QDELETED(message_loc)) UnregisterSignal(message_loc, COMSIG_PARENT_QDELETING) owned_by = null message_loc = null @@ -219,8 +225,7 @@ var/list/runechat_image_cache = list() return ending_life = TRUE animate(message, alpha = 0, time = fadetime, flags = ANIMATION_PARALLEL) - spawn(fadetime) - qdel(src) + timer_delete = QDEL_IN(src, fadetime) /** * Creates a message overlay at a defined location for a given speaker From b808d8daaf1a0dccdfb8c6e1613040b119e57c46 Mon Sep 17 00:00:00 2001 From: Runa Dacino Date: Sat, 2 Mar 2024 13:14:34 +0100 Subject: [PATCH 10/87] Add: Cascade mode for resonators (#15791) Adds a new operating mode for resonators for mining: a recursively spreading delayed mining "explosion" that drills the tile it spreads to. Confirmed working as intended up to fieldlimit of 9. --- code/modules/mining/resonator_vr.dm | 49 +++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/code/modules/mining/resonator_vr.dm b/code/modules/mining/resonator_vr.dm index d3c3246a24..b007a3212f 100644 --- a/code/modules/mining/resonator_vr.dm +++ b/code/modules/mining/resonator_vr.dm @@ -18,6 +18,8 @@ var/fieldsactive = 0 var/burst_time = 50 var/fieldlimit = 3 + var/spreadmode = 0 + var/cascading = 0 /obj/item/resonator/upgraded name = "upgraded resonator" @@ -30,20 +32,28 @@ var/turf/T = get_turf(target) if(locate(/obj/effect/resonance) in T) return - if(fieldsactive < fieldlimit) + + if((!spreadmode && fieldsactive < fieldlimit) || (spreadmode && !cascading) ) playsound(src,'sound/weapons/resonator_fire.ogg',50,1) - new /obj/effect/resonance(T, creator, burst_time) + new /obj/effect/resonance(T, WEAKREF(creator), burst_time, spreadmode, fieldlimit, get_cardinal_dir(src, T)) fieldsactive++ + cascading = TRUE spawn(burst_time) fieldsactive-- + cascading = FALSE /obj/item/resonator/attack_self(mob/user) - if(burst_time == 50) - burst_time = 30 - to_chat(user, "You set the resonator's fields to detonate after 3 seconds.") - else - burst_time = 50 - to_chat(user, "You set the resonator's fields to detonate after 5 seconds.") + switch(tgui_alert(user, "Change Detonation Time or toggle Cascading?","Setting", list("Toggle Cascade", "Resonance Time"))) + if("Resonance Time") + if(burst_time == 50) + burst_time = 30 + to_chat(user, "You set the resonator's fields to detonate after 3 seconds.") + else + burst_time = 50 + to_chat(user, "You set the resonator's fields to detonate after 5 seconds.") + if("Toggle Cascade") + spreadmode = !spreadmode + to_chat(user, span_info("You have [(spreadmode ? "enabled" : "disabled")] the resonance cascade mode.")) /obj/item/resonator/afterattack(atom/target, mob/user, proximity_flag) if(proximity_flag) @@ -61,11 +71,30 @@ mouse_opacity = 0 var/resonance_damage = 20 -/obj/effect/resonance/Initialize(mapload, var/creator = null, var/timetoburst) + +/obj/effect/resonance/Initialize(mapload, var/creator = null, var/timetoburst, var/spread, var/fields, var/origin_dir, var/depth = 0) . = ..() // Start small and grow to big size as we are about to burst transform = matrix()*0.75 animate(src, transform = matrix()*1.5, time = timetoburst) + //Spread if requested + if(spread) + fields-- + var/new_dir = turn(origin_dir, 90) + var/new_fields = fields + for(var/i=0, i<=2, i++) //We place cascade the resonance by 3 entries each time in a "T shape" around the original resonance + if(fields > 0) + switch(i) + if(0) + new_dir = origin_dir + if(1) + new_dir = turn(origin_dir, 90) + if(2) + new_dir = turn(origin_dir, -90) + var/turf/T = get_step(get_turf(src), new_dir) + new_fields = fields - 2 - (i*3) - depth + fields-- + new /obj/effect/resonance(T, WEAKREF(creator), timetoburst, spread, new_fields, get_cardinal_dir(src, T), depth++) // Queue the actual bursting spawn(timetoburst) if(!QDELETED(src)) @@ -90,7 +119,7 @@ if(environment.temperature < 250) name = "strong resonance field" resonance_damage = 50 - + for(var/mob/living/L in src.loc) if(creator) add_attack_logs(creator, L, "used a resonator field on") From 744515e21ee38749a559e1ebae386d2b43780558 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 15:53:33 +0100 Subject: [PATCH 11/87] fix a bad icon_state, vscode use dmieditor (#15797) --- .vscode/settings.json | 2 +- code/game/objects/effects/mines.dm | 2 +- code/game/objects/random/mapping.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6dbde89cd6..a004179bb7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ "**/.pnp.*": true }, "workbench.editorAssociations": { - "*.dmi": "imagePreview.previewEditor" + "*.dmi": "dmiEditor.dmiEditor" }, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index f6051c0318..74a7e624b8 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -288,7 +288,7 @@ name = "mine" desc = "A small explosive mine with 'HE' and a grenade symbol on the side." icon = 'icons/obj/weapons.dmi' - icon_state = "uglymine" + icon_state = "landmine" var/countdown = 10 var/minetype = /obj/effect/mine //This MUST be an /obj/effect/mine type, or it'll runtime. diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index a3c040d4aa..8062d7db2a 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -140,7 +140,7 @@ name = "Random Land Mine" desc = "This is a random land mine." icon = 'icons/obj/weapons.dmi' - icon_state = "uglymine" + icon_state = "landmine" spawn_nothing_percentage = 25 /obj/random/landmine/item_to_spawn() From c210465fd098ff14ce11ad40ee84eba8d039a3ae Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 22:52:17 +0100 Subject: [PATCH 12/87] fix (#15798) --- code/controllers/subsystems/machines.dm | 1 - code/global.dm | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/code/controllers/subsystems/machines.dm b/code/controllers/subsystems/machines.dm index 62e5be38d3..a4a836f200 100644 --- a/code/controllers/subsystems/machines.dm +++ b/code/controllers/subsystems/machines.dm @@ -33,7 +33,6 @@ SUBSYSTEM_DEF(machines) /datum/controller/subsystem/machines/Initialize(timeofday) makepowernets() admin_notice("Initializing atmos machinery.", R_DEBUG) - machines = all_machines //stupid god damn globals setup_atmos_machinery(all_machines) fire() ..() diff --git a/code/global.dm b/code/global.dm index da077ef48c..40fcb05722 100644 --- a/code/global.dm +++ b/code/global.dm @@ -1,6 +1,6 @@ // Items that ask to be called every cycle. var/global/datum/datacore/data_core = null -var/global/list/machines = list() // ALL Machines, wether processing or not. +var/global/list/machines = SSmachines.all_machines //I would upgrade all instances of global.machines to SSmachines.all_machines but it's used in so many places and a search returns so many matches for 'machines' that isn't a use of the global... var/global/list/active_diseases = list() var/global/list/hud_icon_reference = list() From 896ec24e27909506d65aa994d0a73a82e4245027 Mon Sep 17 00:00:00 2001 From: Casey Date: Sun, 3 Mar 2024 05:45:19 -0500 Subject: [PATCH 13/87] Map swap --- vorestation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vorestation.dme b/vorestation.dme index 227e6bd43f..f94882b483 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4300,6 +4300,6 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\stellar_delight\stellar_delight.dm" +#include "maps\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From 0d55fc9fb2a346761565b3b65b1fcc19f646233c Mon Sep 17 00:00:00 2001 From: Runa Dacino Date: Sun, 3 Mar 2024 13:44:02 +0100 Subject: [PATCH 14/87] fix(overmap machines): Fixes number inputs not allowing decimals (#15801) *Adds flag of round_value = FALSE to sensor range on sensor console *Adds flag of round_value = FALSE to acceleration limiter on helm console *Adds flag of round_value = FALSE to global volume limiter on engine console *Adds flag of round_value = FALSE on per-engine volume limiter on engine console --- code/modules/overmap/ships/computers/engine_control.dm | 6 +++--- code/modules/overmap/ships/computers/helm.dm | 4 ++-- code/modules/overmap/ships/computers/sensors.dm | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/overmap/ships/computers/engine_control.dm b/code/modules/overmap/ships/computers/engine_control.dm index ab1bb61b74..e2b2defea8 100644 --- a/code/modules/overmap/ships/computers/engine_control.dm +++ b/code/modules/overmap/ships/computers/engine_control.dm @@ -62,7 +62,7 @@ . = TRUE if("set_global_limit") - var/newlim = tgui_input_number(usr, "Input new thrust limit (0..100%)", "Thrust limit", linked.thrust_limit*100, 100, 0) + var/newlim = tgui_input_number(usr, "Input new thrust limit (0..100%)", "Thrust limit", linked.thrust_limit*100, 100, 0, round_value = FALSE) if(tgui_status(usr, state) != STATUS_INTERACTIVE) return FALSE linked.thrust_limit = clamp(newlim/100, 0, 1) @@ -78,7 +78,7 @@ if("set_limit") var/datum/ship_engine/E = locate(params["engine"]) - var/newlim = tgui_input_number(usr, "Input new thrust limit (0..100)", "Thrust limit", E.get_thrust_limit(), 100, 0) + var/newlim = tgui_input_number(usr, "Input new thrust limit (0..100)", "Thrust limit", E.get_thrust_limit(), 100, 0, round_value = FALSE) if(tgui_status(usr, state) != STATUS_INTERACTIVE) return FALSE var/limit = clamp(newlim/100, 0, 1) @@ -100,4 +100,4 @@ . = TRUE if(. && !issilicon(usr)) - playsound(src, "terminal_type", 50, 1) \ No newline at end of file + playsound(src, "terminal_type", 50, 1) diff --git a/code/modules/overmap/ships/computers/helm.dm b/code/modules/overmap/ships/computers/helm.dm index 95657cb43c..518d3955a5 100644 --- a/code/modules/overmap/ships/computers/helm.dm +++ b/code/modules/overmap/ships/computers/helm.dm @@ -217,13 +217,13 @@ GLOBAL_LIST_EMPTY(all_waypoints) . = TRUE if("speedlimit") - var/newlimit = tgui_input_number(usr, "Input new speed limit for autopilot (0 to brake)", "Autopilot speed limit", speedlimit*1000, 100000) + var/newlimit = tgui_input_number(usr, "Input new speed limit for autopilot (0 to brake)", "Autopilot speed limit", speedlimit*1000, 100000, round_value = FALSE) if(newlimit) speedlimit = CLAMP(newlimit/1000, 0, 100) . = TRUE if("accellimit") - var/newlimit = tgui_input_number(usr, "Input new acceleration limit", "Acceleration limit", accellimit*1000) + var/newlimit = tgui_input_number(usr, "Input new acceleration limit", "Acceleration limit", accellimit*1000, round_value = FALSE) if(newlimit) accellimit = max(newlimit/1000, 0) . = TRUE diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index 5990c6f146..33fb4219f8 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -106,7 +106,7 @@ if(sensors) switch(action) if("range") - var/nrange = tgui_input_number(usr, "Set new sensors range", "Sensor range", sensors.range, world.view) + var/nrange = tgui_input_number(usr, "Set new sensors range", "Sensor range", sensors.range, world.view, round_value = FALSE ) if(tgui_status(usr, state) != STATUS_INTERACTIVE) return FALSE if(nrange) From a252f5c9e54d2c9a06cd5ae6b32024ec812dfdf1 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 3 Mar 2024 21:19:39 +0100 Subject: [PATCH 15/87] adjusts smes ui size --- tgui/packages/tgui/interfaces/Smes.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/packages/tgui/interfaces/Smes.jsx b/tgui/packages/tgui/interfaces/Smes.jsx index 7d2b4e890e..093a0bc946 100644 --- a/tgui/packages/tgui/interfaces/Smes.jsx +++ b/tgui/packages/tgui/interfaces/Smes.jsx @@ -38,7 +38,7 @@ export const Smes = (props) => { const outputState = (outputting && 'good') || (charge > 0 && 'average') || 'bad'; return ( - +

{ bad: [-Infinity, 0.15], }} > - {round(charge / (1000 * 60), 1)} kWh /{' '} + {round(charge / (1000 * 60), 1)} kWh / {round(capacity / (1000 * 60))} kWh ({capacityPercent}%)
From c8a61f63dd54703e1b63fba5045708e3081c5743 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Mon, 4 Mar 2024 11:53:27 +0100 Subject: [PATCH 16/87] A few more harddels and runtimes (#7880) (#15805) --- code/controllers/subsystems/ping.dm | 2 +- code/modules/clothing/spacesuits/rig/modules/modules.dm | 9 +++++++++ code/modules/clothing/spacesuits/rig/rig.dm | 8 +++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystems/ping.dm b/code/controllers/subsystems/ping.dm index 7b41519737..0b76d7dea1 100644 --- a/code/controllers/subsystems/ping.dm +++ b/code/controllers/subsystems/ping.dm @@ -27,7 +27,7 @@ SUBSYSTEM_DEF(ping) var/client/client = currentrun[currentrun.len] currentrun.len-- - if(!client.is_preference_enabled(/datum/client_preference/vchat_enable)) + if(!client?.is_preference_enabled(/datum/client_preference/vchat_enable)) winset(client, "output", "on-show=&is-disabled=0&is-visible=1") winset(client, "browseroutput", "is-disabled=1;is-visible=0") client.tgui_panel.oldchat = TRUE diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index f8821c89d0..7b27dfb9ac 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -135,6 +135,11 @@ stat_modules += new/stat_rig_module/select(src) stat_modules += new/stat_rig_module/charge(src) +/obj/item/rig_module/Destroy(force, ...) + QDEL_NULL_LIST(stat_modules) + . = ..() + + // Called when the module is installed into a suit. /obj/item/rig_module/proc/installed(var/obj/item/weapon/rig/new_holder) holder = new_holder @@ -260,6 +265,10 @@ ..() src.module = module +/stat_rig_module/Destroy() + module = null + . = ..() + /stat_rig_module/proc/AddHref(var/list/href_list) return diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 081f08ed49..742a10ffab 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -159,11 +159,17 @@ update_icon(1) /obj/item/weapon/rig/Destroy() - for(var/obj/item/piece in list(gloves,boots,helmet,chest)) + for(var/obj/item/piece in list(gloves,boots,helmet,chest,cell,air_supply)) var/mob/living/M = piece.loc if(istype(M)) M.drop_from_inventory(piece) qdel(piece) + gloves = null + boots = null + helmet = null + chest = null + cell = null + air_supply = null STOP_PROCESSING(SSobj, src) qdel(wires) wires = null From 7bc483a6454ca34af02c53ca8595b0bc0985991e Mon Sep 17 00:00:00 2001 From: Runa-Dacino Date: Mon, 4 Mar 2024 20:55:26 +0100 Subject: [PATCH 17/87] fix(resonators): Changes cascade algorithm to eliminate GC dependence Unfortunately, old algorithm would bug out if the GC took its time clearing out the original resonances. Now, the logic is done entirely in a single proc rather than recursive procedures. --- code/modules/mining/resonator_vr.dm | 77 ++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/code/modules/mining/resonator_vr.dm b/code/modules/mining/resonator_vr.dm index b007a3212f..796a2a12fd 100644 --- a/code/modules/mining/resonator_vr.dm +++ b/code/modules/mining/resonator_vr.dm @@ -33,14 +33,61 @@ if(locate(/obj/effect/resonance) in T) return - if((!spreadmode && fieldsactive < fieldlimit) || (spreadmode && !cascading) ) - playsound(src,'sound/weapons/resonator_fire.ogg',50,1) - new /obj/effect/resonance(T, WEAKREF(creator), burst_time, spreadmode, fieldlimit, get_cardinal_dir(src, T)) - fieldsactive++ + if(fieldsactive > fieldlimit || cascading) + to_chat(creator, span_warning("You've exceeded the field limit! Wait for them to dissipate.")) + return + if(spreadmode) + //log_debug("Starting cascade...") cascading = TRUE + var/depth = 0 + var/fields = 0 + if(depth == 0) + //log_debug("Creating resonance at the target spot.") + playsound(src,'sound/weapons/resonator_fire.ogg',50,1) + new /obj/effect/resonance(T, WEAKREF(creator), burst_time) + fields++ + depth++ + var/origin_dir = get_cardinal_dir(creator, T) + var/dir + while(fields < fieldlimit) + for(var/i=0, i<=2, i++) + //log_debug("Fields are [fields], doing [i] iteration of subloop") + if(fields >= fieldlimit) + //log_debug("[fields] exceeded fieldlimit, exiting procedure.") + sleep(burst_time) + cascading = FALSE + return + switch(i) //Using a switch statement rather than (-90 + i * 90) to favour going straight ahead + if(0) + dir = origin_dir + if(1) + dir = turn(origin_dir, 90) + if(2) + dir = turn(origin_dir, -90) + var/turf/newT = T + for(var/step = 1, step<=depth, step++) + //log_debug("Taking a step until [depth] steps taken.") + var/turf/oldT = newT + newT = get_step(oldT, dir) + if(step == depth) + new /obj/effect/resonance(newT, WEAKREF(creator), burst_time) + fields++ + if(depth > 1 && fields < fieldlimit) //Works until 15 fieldlimit. + oldT = newT + dir = turn(dir, (i == 2 ? 135 : -135)) + newT = get_step(oldT, dir) + new /obj/effect/resonance(newT, WEAKREF(creator), burst_time) + fields++ + depth++ + + + + else + playsound(src,'sound/weapons/resonator_fire.ogg',50,1) + new /obj/effect/resonance(T, WEAKREF(creator), burst_time) + fieldsactive++ spawn(burst_time) fieldsactive-- - cascading = FALSE /obj/item/resonator/attack_self(mob/user) switch(tgui_alert(user, "Change Detonation Time or toggle Cascading?","Setting", list("Toggle Cascade", "Resonance Time"))) @@ -72,29 +119,11 @@ var/resonance_damage = 20 -/obj/effect/resonance/Initialize(mapload, var/creator = null, var/timetoburst, var/spread, var/fields, var/origin_dir, var/depth = 0) +/obj/effect/resonance/Initialize(mapload, var/creator = null, var/timetoburst) . = ..() // Start small and grow to big size as we are about to burst transform = matrix()*0.75 animate(src, transform = matrix()*1.5, time = timetoburst) - //Spread if requested - if(spread) - fields-- - var/new_dir = turn(origin_dir, 90) - var/new_fields = fields - for(var/i=0, i<=2, i++) //We place cascade the resonance by 3 entries each time in a "T shape" around the original resonance - if(fields > 0) - switch(i) - if(0) - new_dir = origin_dir - if(1) - new_dir = turn(origin_dir, 90) - if(2) - new_dir = turn(origin_dir, -90) - var/turf/T = get_step(get_turf(src), new_dir) - new_fields = fields - 2 - (i*3) - depth - fields-- - new /obj/effect/resonance(T, WEAKREF(creator), timetoburst, spread, new_fields, get_cardinal_dir(src, T), depth++) // Queue the actual bursting spawn(timetoburst) if(!QDELETED(src)) From 6b326160ac74bbeeb5d9965f9537b1fab7e76c01 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Mon, 4 Mar 2024 20:19:40 +0000 Subject: [PATCH 18/87] Pillows for the pillow throne Added pillows, which can be placed my clicking themselves or combined with identical pillows to build a pillow pile. Pillow piles are in two parts, a front and back, which can be disassembled by clicking on each with an empty hand. You can buckle to either part of the pillow pile. The sprites were ported from skyrat, with some additional colours added. Currently only the square pillows and large piles are being used. There isn't currently a way to acquire these normally, only admin spawn at the moment, but I intend to add one soon. --- code/game/objects/structures/pillows.dm | 185 ++++++++++++++++++++++++ icons/obj/pillows.dmi | Bin 0 -> 5881 bytes 2 files changed, 185 insertions(+) create mode 100644 code/game/objects/structures/pillows.dm create mode 100644 icons/obj/pillows.dmi diff --git a/code/game/objects/structures/pillows.dm b/code/game/objects/structures/pillows.dm new file mode 100644 index 0000000000..835ddb6852 --- /dev/null +++ b/code/game/objects/structures/pillows.dm @@ -0,0 +1,185 @@ +//Pillows with sprites ported from skyrat + +/obj/item/weapon/bedsheet/pillow + name = "pillow" + desc = "A surprisingly soft stuffed pillow." + icon = 'icons/obj/pillows.dmi' + icon_state = "pillow_pink_square" + slot_flags = 0 + var/pile_type = "/obj/structure/bed/pillowpile" + throw_range = 7 + +/obj/item/weapon/bedsheet/pillow/attack_self(mob/user as mob) + user.drop_item() + if(icon_state == initial(icon_state)) + icon_state = "[icon_state]_placed" + add_fingerprint(user) + +/obj/item/weapon/bedsheet/pillow/pickup(mob/user) + ..() + icon_state = initial(icon_state) + +/obj/item/weapon/bedsheet/pillow/attackby(var/obj/item/component, mob/user as mob) + if (istype(component,src)) + to_chat(user, "You assemble a pillow pile!") + user.drop_item() + qdel(component) + var/turf/T = get_turf(src) + new pile_type(T) + user.drop_from_inventory(src) + qdel(src) + else + to_chat(user, "You can't assemble a pillow pile out of mismatched stuff, it'd look hideous!") + +//Pillow Piles, they're piles of pillows! layer = BELOW_MOB_LAYER + +/obj/structure/bed/pillowpile + name = "pillow pile" + desc = "A massive pile of pillows!" + icon = 'icons/obj/pillows.dmi' + icon_state = "pillowpile_large_pink" + var/pillowpilefront = "/obj/structure/bed/pillowpilefront" + var/sourcepillow = "/obj/item/weapon/bedsheet/pillow" + +/obj/structure/bed/pillowpilefront + name = "pillow pile" + desc = "A massive pile of pillows!" + icon = 'icons/obj/pillows.dmi' + icon_state = "pillowpile_large_pink_overlay" + layer = ABOVE_MOB_LAYER + plane = MOB_PLANE + var/sourcepillow = "/obj/item/weapon/bedsheet/pillow" + +/obj/structure/bed/pillowpile/New() + ..() + var/turf/T = get_turf(src) + new pillowpilefront(T) + +/obj/structure/bed/pillowpilefront/update_icon() + return + +/obj/structure/bed/pillowpile/update_icon() + return + +/obj/structure/bed/pillowpile/attack_hand(mob/user) + to_chat(user, "Now disassembling the large pillow pile...") + if(do_after(user, 30)) + if(!src) return + to_chat(user, "You dissasembled the large pillow pile!") + new sourcepillow(src.loc) + qdel(src) + +/obj/structure/bed/pillowpilefront/attack_hand(mob/user) + to_chat(user, "Now disassembling the front of the pillow pile...") + if(do_after(user, 30)) + if(!src) return + to_chat(user, "You dissasembled the the front of the pillow pile!") + new sourcepillow(src.loc) + qdel(src) + +//Colours + +//teal + +/obj/item/weapon/bedsheet/pillow/teal + icon_state = "pillow_teal_square" + pile_type = "/obj/structure/bed/pillowpile/teal" + +/obj/structure/bed/pillowpile/teal + icon_state = "pillowpile_large_teal" + pillowpilefront = "/obj/structure/bed/pillowpilefront/teal" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/teal" + +/obj/structure/bed/pillowpilefront/teal + icon_state = "pillowpile_large_teal_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/teal" + +//yellow + +/obj/item/weapon/bedsheet/pillow/yellow + icon_state = "pillow_yellow_square" + pile_type = "/obj/structure/bed/pillowpile/yellow" + +/obj/structure/bed/pillowpile/yellow + icon_state = "pillowpile_large_yellow" + pillowpilefront = "/obj/structure/bed/pillowpilefront/yellow" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/yellow" + +/obj/structure/bed/pillowpilefront/yellow + icon_state = "pillowpile_large_yellow_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/yellow" + +//white + +/obj/item/weapon/bedsheet/pillow/white + icon_state = "pillow_white_square" + pile_type = "/obj/structure/bed/pillowpile/white" + +/obj/structure/bed/pillowpile/white + icon_state = "pillowpile_large_white" + pillowpilefront = "/obj/structure/bed/pillowpilefront/white" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/white" + +/obj/structure/bed/pillowpilefront/white + icon_state = "pillowpile_large_white_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/white" + +//black + +/obj/item/weapon/bedsheet/pillow/black + icon_state = "pillow_black_square" + pile_type = "/obj/structure/bed/pillowpile/black" + +/obj/structure/bed/pillowpile/black + icon_state = "pillowpile_large_black" + pillowpilefront = "/obj/structure/bed/pillowpilefront/black" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/black" + +/obj/structure/bed/pillowpilefront/black + icon_state = "pillowpile_large_black_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/black" + +//green + +/obj/item/weapon/bedsheet/pillow/green + icon_state = "pillow_green_square" + pile_type = "/obj/structure/bed/pillowpile/green" + +/obj/structure/bed/pillowpile/green + icon_state = "pillowpile_large_green" + pillowpilefront = "/obj/structure/bed/pillowpilefront/green" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/green" + +/obj/structure/bed/pillowpilefront/green + icon_state = "pillowpile_large_green_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/green" + +//red + +/obj/item/weapon/bedsheet/pillow/red + icon_state = "pillow_red_square" + pile_type = "/obj/structure/bed/pillowpile/red" + +/obj/structure/bed/pillowpile/red + icon_state = "pillowpile_large_red" + pillowpilefront = "/obj/structure/bed/pillowpilefront/red" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/red" + +/obj/structure/bed/pillowpilefront/red + icon_state = "pillowpile_large_red_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/red" + +//orange + +/obj/item/weapon/bedsheet/pillow/orange + icon_state = "pillow_orange_square" + pile_type = "/obj/structure/bed/pillowpile/orange" + +/obj/structure/bed/pillowpile/orange + icon_state = "pillowpile_large_orange" + pillowpilefront = "/obj/structure/bed/pillowpilefront/orange" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange" + +/obj/structure/bed/pillowpilefront/orange + icon_state = "pillowpile_large_orange_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange" diff --git a/icons/obj/pillows.dmi b/icons/obj/pillows.dmi new file mode 100644 index 0000000000000000000000000000000000000000..276e8cb3c5fb34c00f13d27024a0d4146f3fc1e7 GIT binary patch literal 5881 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 Td^f_rr3I)dX(^T|Siku{naNK# literal 0 HcmV?d00001 From 48f8007d1f78f6a2c9502c3bb98ff7097876f8de Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Mon, 4 Mar 2024 20:20:02 +0000 Subject: [PATCH 19/87] Update vorestation.dme --- vorestation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/vorestation.dme b/vorestation.dme index f94882b483..066d4d4b69 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1527,6 +1527,7 @@ #include "code\game\objects\structures\mop_bucket.dm" #include "code\game\objects\structures\morgue.dm" #include "code\game\objects\structures\morgue_vr.dm" +#include "code\game\objects\structures\pillows.dm" #include "code\game\objects\structures\plasticflaps.dm" #include "code\game\objects\structures\railing.dm" #include "code\game\objects\structures\safe.dm" From 8fc779254b2a270e72a9aa49c2a411ba79e6ac54 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Mon, 4 Mar 2024 21:31:40 +0000 Subject: [PATCH 20/87] Crafting and shipping Added crafting recipes for pillows. Added cargo crates of pillows to order. --- ATTRIBUTIONS.md | 7 ++- code/datums/supplypacks/recreation_vr.dm | 65 ++++++++++++++++++++ code/game/objects/structures/pillows.dm | 75 ++++++++++++++++++++++++ 3 files changed, 146 insertions(+), 1 deletion(-) diff --git a/ATTRIBUTIONS.md b/ATTRIBUTIONS.md index 41fe7592fe..ad1401ed82 100644 --- a/ATTRIBUTIONS.md +++ b/ATTRIBUTIONS.md @@ -53,4 +53,9 @@ **File:** `sound/ambience/startup.ogg` and `sound/ambience/shutdown.ogg`
**Title:** Spaceship starup and shutdown
**Creator:** viznoman (https://freesound.org/people/viznoman/sounds/267308/)
-**License:** [CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
\ No newline at end of file +**License:** [CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
+
+**File:** `icons/obj/pillows.dmi`
+**Title:** pillows.dmi
+**Creator:** Lamella-0587 (https://github.com/Skyrat-SS13/Skyrat-tg/pull/6740)
+**License:** [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)
\ No newline at end of file diff --git a/code/datums/supplypacks/recreation_vr.dm b/code/datums/supplypacks/recreation_vr.dm index 8eb64c7c29..d59fdabb15 100644 --- a/code/datums/supplypacks/recreation_vr.dm +++ b/code/datums/supplypacks/recreation_vr.dm @@ -106,3 +106,68 @@ cost = 25 containertype = /obj/structure/closet/crate containername = "Snack planets crate" + +/datum/supply_pack/recreation/pinkpillows + name = "Pink Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/tealpillows + name = "Teal Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/teal = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/whitepillows + name = "White Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/white = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/blackpillows + name = "Black Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/black = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/redpillows + name = "Red Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/red = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/greenpillows + name = "Green Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/green = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/orangepillows + name = "Orange Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/orange = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + +/datum/supply_pack/recreation/yellowpillows + name = "Yellow Pillow Crate" + contains = list( + /obj/item/weapon/bedsheet/pillow/yellow = 6 + ) + cost = 10 + containertype = /obj/structure/closet/crate + diff --git a/code/game/objects/structures/pillows.dm b/code/game/objects/structures/pillows.dm index 835ddb6852..fa97543f09 100644 --- a/code/game/objects/structures/pillows.dm +++ b/code/game/objects/structures/pillows.dm @@ -183,3 +183,78 @@ /obj/structure/bed/pillowpilefront/orange icon_state = "pillowpile_large_orange_overlay" sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange" + +//crafting + +/datum/crafting_recipe/pillowpink + name = "pillow (pink)" + result = /obj/item/weapon/bedsheet/pillow + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pillowteal + name = "pillow (teal)" + result = /obj/item/weapon/bedsheet/pillow/teal + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pillowwhite + name = "pillow (white)" + result = /obj/item/weapon/bedsheet/pillow/white + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pillowblack + name = "pillow (black)" + result = /obj/item/weapon/bedsheet/pillow/black + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pillowgreen + name = "pillow (green)" + result = /obj/item/weapon/bedsheet/pillow/green + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pillowyellow + name = "pillow (yellow)" + result = /obj/item/weapon/bedsheet/pillow/yellow + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pillowred + name = "pillow (red)" + result = /obj/item/weapon/bedsheet/pillow/red + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/pilloworange + name = "pillow (orange)" + result = /obj/item/weapon/bedsheet/pillow/orange + reqs = list( + list(/obj/item/stack/material/cloth = 6) + ) + time = 60 + category = CAT_MISC + From e5331e20089b64178916085e48c7b084673f996d Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue, 5 Mar 2024 20:48:10 +0100 Subject: [PATCH 21/87] some borg changes --- .../preference_setup/preference_setup.dm | 4 ++ .../client/preference_setup/vore/09_misc.dm | 15 ++-- code/modules/client/preferences_vr.dm | 1 + .../modules/mob/living/silicon/robot/robot.dm | 69 +++++++++++-------- .../mob/living/silicon/robot/syndicate.dm | 1 + 5 files changed, 59 insertions(+), 31 deletions(-) diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index 17ee5ed672..5a8e31c324 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -304,3 +304,7 @@ if(PREF_FBP_SOFTWARE) return 150 return S.max_age // welp + +#undef PREF_FBP_CYBORG +#undef PREF_FBP_POSI +#undef PREF_FBP_SOFTWARE diff --git a/code/modules/client/preference_setup/vore/09_misc.dm b/code/modules/client/preference_setup/vore/09_misc.dm index 19fd61011a..bde733d4c8 100644 --- a/code/modules/client/preference_setup/vore/09_misc.dm +++ b/code/modules/client/preference_setup/vore/09_misc.dm @@ -5,20 +5,22 @@ /datum/category_item/player_setup_item/vore/misc/load_character(var/savefile/S) S["show_in_directory"] >> pref.show_in_directory S["directory_tag"] >> pref.directory_tag - S["directory_erptag"] >> pref.directory_erptag + S["directory_erptag"] >> pref.directory_erptag S["directory_ad"] >> pref.directory_ad S["sensorpref"] >> pref.sensorpref S["capture_crystal"] >> pref.capture_crystal S["auto_backup_implant"] >> pref.auto_backup_implant + S["borg_petting"] >> pref.borg_petting /datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S) S["show_in_directory"] << pref.show_in_directory S["directory_tag"] << pref.directory_tag - S["directory_erptag"] << pref.directory_erptag + S["directory_erptag"] << pref.directory_erptag S["directory_ad"] << pref.directory_ad S["sensorpref"] << pref.sensorpref S["capture_crystal"] << pref.capture_crystal S["auto_backup_implant"] << pref.auto_backup_implant + S["borg_petting"] << pref.borg_petting /datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character) if(pref.sensorpref > 5 || pref.sensorpref < 1) @@ -29,10 +31,11 @@ /datum/category_item/player_setup_item/vore/misc/sanitize_character() pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory)) pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag)) - pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag)) + pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag)) pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) pref.capture_crystal = sanitize_integer(pref.capture_crystal, 0, 1, initial(pref.capture_crystal)) - pref.auto_backup_implant = sanitize_integer(pref.auto_backup_implant, 0, 1, initial(pref.auto_backup_implant)) + pref.auto_backup_implant = sanitize_integer(pref.auto_backup_implant, 0, 1, initial(pref.auto_backup_implant)) + pref.borg_petting = sanitize_integer(pref.borg_petting, 0, 1, initial(pref.borg_petting)) /datum/category_item/player_setup_item/vore/misc/content(var/mob/user) . += "
" @@ -43,6 +46,7 @@ . += "Suit Sensors Preference:
[sensorpreflist[pref.sensorpref]]
" . += "Capture Crystal Preference: [pref.capture_crystal ? "Yes" : "No"]
" . += "Spawn With Backup Implant: [pref.auto_backup_implant ? "Yes" : "No"]
" + . += "Allow petting as robot: [pref.borg_petting ? "Yes" : "No"]
" /datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user) if(href_list["toggle_show_in_directory"]) @@ -77,4 +81,7 @@ else if(href_list["toggle_implant"]) pref.auto_backup_implant = pref.auto_backup_implant ? 0 : 1; return TOPIC_REFRESH + else if(href_list["toggle_borg_petting"]) + pref.borg_petting = pref.borg_petting ? 0 : 1; + return TOPIC_REFRESH return ..(); diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index 99e8103509..79079354e4 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -6,6 +6,7 @@ var/sensorpref = 5 //Set character's suit sensor level var/capture_crystal = 1 //Whether or not someone is able to be caught with capture crystals var/auto_backup_implant = FALSE //Whether someone starts with a backup implant or not. + var/borg_petting = TRUE //Whether someone can be petted as a borg or not. var/job_talon_high = 0 var/job_talon_med = 0 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 83b25ea037..a82a7f572a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -96,7 +96,7 @@ var/lockcharge //Used when looking to see if a borg is locked down. var/lockdown = 0 //Controls whether or not the borg is actually locked down. var/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/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them. var/tracking_entities = 0 //The number of known entities currently accessing the internal camera var/braintype = "Cyborg" @@ -164,15 +164,15 @@ add_robot_verbs() - hud_list[HEALTH_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_HEALTH) - hud_list[STATUS_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_STATUS) - hud_list[LIFE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_LIFE) - hud_list[ID_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_ID) - hud_list[WANTED_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_WANTED) - hud_list[IMPLOYAL_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPLOYAL) - hud_list[IMPCHEM_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPCHEM) - hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK) - hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL) + hud_list[HEALTH_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_HEALTH) + hud_list[STATUS_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_STATUS) + hud_list[LIFE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_LIFE) + hud_list[ID_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_ID) + hud_list[WANTED_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_WANTED) + hud_list[IMPLOYAL_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPLOYAL) + hud_list[IMPCHEM_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPCHEM) + hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK) + hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL) /mob/living/silicon/robot/LateInitialize() . = ..() @@ -518,14 +518,14 @@ // function to toggle VTEC once installed /mob/living/silicon/robot/proc/toggle_vtec() - set name = "Toggle VTEC" - set category = "Abilities" - if(speed == -1) - to_chat(src, "VTEC module disabled.") - speed = 0 - else - to_chat(src, "VTEC module enabled.") - speed = -1 + set name = "Toggle VTEC" + set category = "Abilities" + if(speed == -1) + to_chat(src, "VTEC module disabled.") + speed = 0 + else + to_chat(src, "VTEC module enabled.") + speed = -1 // update the status screen display /mob/living/silicon/robot/Stat() @@ -813,7 +813,7 @@ modtype = initial(modtype) hands.icon_state = get_hud_module_icon() if(notify) - notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) + notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) module.Reset(src) module.Destroy() module = null @@ -842,11 +842,15 @@ if(istype(user,/mob/living/carbon/human) && !opened) var/mob/living/carbon/human/H = user - //Adding borg petting. Help intent pets, Disarm intent taps and Harm is punching(no damage) + //Adding borg petting. Help intent pets if preferences allow, Disarm intent taps and Harm is punching(no damage) switch(H.a_intent) if(I_HELP) - visible_message("[H] pets [src].") - return + if(client && !client.prefs.borg_petting) + visible_message("[H] reaches out for [src], but quickly refrains from petting.") + return + else + visible_message("[H] pets [src].") + return if(I_HURT) H.do_attack_animation(src) if(H.species.can_shred(H)) @@ -1146,7 +1150,7 @@ /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 permenantly severs you from your AI and the robotics console and will deactivate your camera system." + set desc = "Scrambles your security and identification codes and resets your current buffers. Unlocks you and permenantly severs you from your AI and the robotics console and will deactivate your camera system." var/mob/living/silicon/robot/R = src @@ -1331,12 +1335,23 @@ return if(opened)//Cover is open - if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice + if(emagged) + if (!has_zeroth_law()) + to_chat(user, "You assigned yourself as [src]'s operator.") + message_admins("[key_name_admin(user)] assigned as operator on cyborg [key_name_admin(src)]. Syndicate Operator change.") + log_game("[key_name(user)] assigned as operator on cyborg [key_name(src)]. Syndicate Operator change.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") + to_chat(src, "Obey these laws:") + laws.show_laws(src) + to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.") + else + to_chat(user, "[src] already has an operator assigned.") + return//Prevents the X has hit Y with Z message also you cant emag them twice if(wiresexposed) to_chat(user, "You must close the panel first.") return - // The block of code below is from TG. Feel free to replace with a better result if desired. if(shell) // AI shells cannot be emagged, so we try to make it look like a standard reset. Smart players may see through this, however. to_chat(user, "[src] is remotely controlled! Your emag attempt has triggered a system reset instead!") @@ -1350,8 +1365,8 @@ lawupdate = 0 disconnect_from_ai() to_chat(user, "You emag [src]'s interface.") - message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") - log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") + message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") + log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") clear_supplied_laws() clear_inherent_laws() laws = new /datum/ai_laws/syndicate_override diff --git a/code/modules/mob/living/silicon/robot/syndicate.dm b/code/modules/mob/living/silicon/robot/syndicate.dm index 286b2abf75..e776608975 100644 --- a/code/modules/mob/living/silicon/robot/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/syndicate.dm @@ -1,6 +1,7 @@ /mob/living/silicon/robot/syndicate lawupdate = 0 scrambledcodes = 1 + emagged = 1 icon_state = "securityrobot" modtype = "Security" lawchannel = "State" From 94941acf77b829d9d1ab5a8eaaacecce391599dc Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue, 5 Mar 2024 20:51:36 +0100 Subject: [PATCH 22/87] . --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a82a7f572a..ce59e59bb5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -813,7 +813,7 @@ modtype = initial(modtype) hands.icon_state = get_hud_module_icon() if(notify) - notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) + notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) module.Reset(src) module.Destroy() module = null From 496cff40ff2b8dbf36c5312346dcf1961f87a094 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue, 5 Mar 2024 23:33:23 +0100 Subject: [PATCH 23/87] fixes broken chars (#15810) --- .../newmalf_ability_trees/tree_interdiction.dm | 2 +- .../newmalf_ability_trees/tree_manipulation.dm | 4 ++-- .../client/preference_setup/global/01_ui.dm | 4 ++-- .../clothing/spacesuits/void/military_vr.dm | 3 +-- code/modules/economy/Events_Mundane.dm | 6 +++--- code/modules/events/money_spam.dm | 4 ++-- .../gamemaster/event2/events/everyone/pda_spam.dm | 4 ++-- code/modules/mob/living/silicon/ai/login.dm | 4 ++-- code/modules/power/sensors/powernet_sensor.dm | 7 +------ code/modules/power/solar.dm | 6 +++--- code/modules/projectiles/projectile/bullets.dm | 4 ++-- maps/gateway_archive_vr/zoo.dmm | 14 +++++++------- maps/gateway_vr/zoo.dmm | 14 +++++++------- maps/gateway_vr/zoo_b.dmm | 8 ++++---- maps/southern_cross/southern_cross_areas.dm | 6 +++--- 15 files changed, 42 insertions(+), 48 deletions(-) diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm index 365a64f45f..655f1a03f2 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_interdiction.dm @@ -250,7 +250,7 @@ to_chat(target, "SYSTEM LOG: User: Admin - Connection Lost. Changes Reverted.") return to_chat(user, "Hack succeeded. The AI is now under your exclusive control.") - to_chat(target, "SYSTEM LOG: System re�3RT5�^#COMU@(#$)TED)@$") + to_chat(target, "SYSTEM LOG: System re'3RT5°^#COMU@(#$)TED)@$") for(var/i = 0, i < 5, i++) var/temptxt = pick("1101000100101001010001001001",\ "0101000100100100000100010010",\ diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm index 40023f2cbe..70de180328 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm @@ -3,7 +3,7 @@ // Abilities in this tree allow the AI to physically manipulate systems around the station. // T1 - Electrical Pulse - Sends out pulse that breaks some lights and sometimes even APCs. This can actually break the AI's APC so be careful! // T2 - Hack Camera - Allows the AI to hack a camera. Deactivated areas may be reactivated, and functional cameras can be upgraded. -// T3 - Emergency Forcefield - Allows the AI to project 1 tile forcefield that blocks movement and air flow. Forcefield�dissipates over time. It is also very susceptible to energetic weaponry. +// T3 - Emergency Forcefield - Allows the AI to project 1 tile forcefield that blocks movement and air flow. Forcefield dissipates over time. It is also very susceptible to energetic weaponry. // T4 - Machine Overload - Detonates machine of choice in a minor explosion. Two of these are usually enough to kill or K/O someone. @@ -205,4 +205,4 @@ if(M) qdel(M) -// END ABILITY VERBS \ No newline at end of file +// END ABILITY VERBS diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm index 221b89fcc2..4fa8cb5d9d 100644 --- a/code/modules/client/preference_setup/global/01_ui.dm +++ b/code/modules/client/preference_setup/global/01_ui.dm @@ -62,8 +62,8 @@ /datum/category_item/player_setup_item/player_global/ui/content(var/mob/user) . = "UI Style: [pref.UI_style]
" . += "Custom UI (recommended for White UI):
" - . += "-Color: [pref.UI_style_color]�[color_square(hex = pref.UI_style_color)]�reset
" - . += "-Alpha(transparency): [pref.UI_style_alpha]�reset
" + . += "-Color: [pref.UI_style_color] [color_square(hex = pref.UI_style_color)] reset
" + . += "-Alpha(transparency): [pref.UI_style_alpha] reset
" . += "Tooltip Style: [pref.tooltipstyle]
" . += "Client FPS: [pref.client_fps]
" . += "Random Ambience Frequency: [pref.ambience_freq]
" diff --git a/code/modules/clothing/spacesuits/void/military_vr.dm b/code/modules/clothing/spacesuits/void/military_vr.dm index 8eb7ff9ebd..88701c2da7 100644 --- a/code/modules/clothing/spacesuits/void/military_vr.dm +++ b/code/modules/clothing/spacesuits/void/military_vr.dm @@ -40,7 +40,7 @@ name = "\improper Ace's ODST Helmet" icon = 'icons/obj/custom_items.dmi' icon_state = "rig0-odst_ace" - desc = "Etched under the inner visor is the phrase \"Don�t let your past define you; let it mold you into the person you want to be.\"" + desc = "Etched under the inner visor is the phrase \"Don't let your past define you; let it mold you into the person you want to be.\"" icon = 'icons/inventory/head/item_vr.dmi' icon_override = 'icons/inventory/head/mob_vr.dmi'*/ @@ -55,4 +55,3 @@ species_restricted = null breach_threshold = 16 //Extra Thicc resilience = 0.05 //Military Armor - diff --git a/code/modules/economy/Events_Mundane.dm b/code/modules/economy/Events_Mundane.dm index 29f1457fd2..6703133462 100644 --- a/code/modules/economy/Events_Mundane.dm +++ b/code/modules/economy/Events_Mundane.dm @@ -15,7 +15,7 @@ "Pens proclaim pencils obsolete, 'lead is dead'.",\ "Rock and paper sues scissors for discrimination.",\ "Steak tell-all book reveals he never liked sitting by potato.",\ - "Woodchuck stops counting how many times he�s chucked 'Never again'.",\ + "Woodchuck stops counting how many times he's chucked 'Never again'.",\ "[affected_dest.name] clerk first person able to pronounce '@*$%!'.",\ "[affected_dest.name] delis serving boiled paperback dictionaries, 'Adjectives chewy' customers declare.",\ "[affected_dest.name] weather deemed 'boring'; meteors and rad storms to be imported.",\ @@ -31,8 +31,8 @@ "Skrell marries computer; wedding attended by 100 modems.",\ "Chef reports successfully using harmonica as cheese grater.",\ "[using_map.company_name] invents handkerchief that says 'Bless you' after sneeze.",\ - "Clone accused of posing for other clones�s school photo.",\ - "Clone accused of stealing other clones�s employee of the month award.",\ + "Clone accused of posing for other clones's school photo.",\ + "Clone accused of stealing other clones's employee of the month award.",\ "Woman robs station with hair dryer; crewmen love new style.",\ "This space for rent.",\ "[affected_dest.name] Baker Wins Pickled Crumpet Toss Three Years Running",\ diff --git a/code/modules/events/money_spam.dm b/code/modules/events/money_spam.dm index ad8a1bbc3f..e83a3601a6 100644 --- a/code/modules/events/money_spam.dm +++ b/code/modules/events/money_spam.dm @@ -38,7 +38,7 @@ for(var/obj/item/device/pda/check_pda in sortAtom(PDAs)) if (!check_pda.owner || check_pda == src || check_pda.hidden) continue - + var/datum/data/pda/app/messenger/M = check_pda.find_program(/datum/data/pda/app/messenger) if(!M || M.toff) continue @@ -69,7 +69,7 @@ message = pick("Luxury watches for Blowout sale prices!",\ "Watches, Jewelry & Accessories, Bags & Wallets !",\ "Deposit 100$ and get 300$ totally free!",\ - " 100K NT.|WOWGOLD �nly $89 ",\ + " 100K NT.|WOWGOLD Only $89 ",\ "We have been filed with a complaint from one of your customers in respect of their business relations with you.",\ "We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..") if(4) diff --git a/code/modules/gamemaster/event2/events/everyone/pda_spam.dm b/code/modules/gamemaster/event2/events/everyone/pda_spam.dm index 212087abbc..e6fe5e8c29 100644 --- a/code/modules/gamemaster/event2/events/everyone/pda_spam.dm +++ b/code/modules/gamemaster/event2/events/everyone/pda_spam.dm @@ -37,7 +37,7 @@ for(var/obj/item/device/pda/check_pda in sortAtom(PDAs)) if (!check_pda.owner || check_pda == src || check_pda.hidden) continue - + var/datum/data/pda/app/messenger/M = check_pda.find_program(/datum/data/pda/app/messenger) if(!M || M.toff) continue @@ -97,7 +97,7 @@ message = pick("Luxury watches for Blowout sale prices!",\ "Watches, Jewelry & Accessories, Bags & Wallets !",\ "Deposit 100$ and get 300$ totally free!",\ - " 100K NT.|WOWGOLD �nly $89 ",\ + " 100K NT.|WOWGOLD Only $89 ",\ "We have been filed with a complaint from one of your customers in respect of their business relations with you.",\ "We kindly ask you to open the COMPLAINT REPORT (attached) to reply on this complaint..") if(4) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index ea3feaa230..ab87a5e588 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up �_� ~Carn +/mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up °_° ~Carn ..() for(var/obj/effect/rune/rune in rune_list) client.images += rune.blood_image @@ -9,4 +9,4 @@ if(multicam_on) end_multicam() src.view_core() - return \ No newline at end of file + return diff --git a/code/modules/power/sensors/powernet_sensor.dm b/code/modules/power/sensors/powernet_sensor.dm index 6dd58ea102..0cfe7ca95a 100644 --- a/code/modules/power/sensors/powernet_sensor.dm +++ b/code/modules/power/sensors/powernet_sensor.dm @@ -247,7 +247,7 @@ APC_entry["total_load"] = reading_to_text(A.lastused_total) // Hopefully removes those goddamn \improper s which are screwing up the UI var/N = A.area.name - if(findtext(N, "�")) + if(findtext(N, "\improper")) N = copytext(N, 3) APC_entry["name"] = N // Add data into main list of APC data. @@ -266,8 +266,3 @@ data["load_percentage"] = 100 data["alarm"] = powernet.problem ? 1 : 0 return data - - - - - diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 612a19d63f..60c42b037c 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -267,7 +267,7 @@ GLOBAL_LIST_EMPTY(solars_list) var/targetdir = 0 // target angle in manual tracking (since it updates every game minute) var/track = 0 // 0= off 1=timed 2=auto (tracker) var/trackrate = 600 // 300-900 seconds - var/nexttime = 0 // time for a panel to rotate of 1� in manual tracking + var/nexttime = 0 // time for a panel to rotate of 1° in manual tracking var/obj/machinery/power/tracker/connected_tracker = null var/needs_panel_check // Powernet has been updated, need to check if panels are still connected. var/connected_power // Sum of power supplied by connected panels. @@ -451,9 +451,9 @@ GLOBAL_LIST_EMPTY(solars_list) connected_tracker.unset_control() if(track==1 && trackrate) //manual tracking and set a rotation speed - if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1�... + if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1°... targetdir = (targetdir + trackrate/abs(trackrate) + 360) % 360 //... do it - nexttime += 36000/abs(trackrate) //reset the counter for the next 1� + nexttime += 36000/abs(trackrate) //reset the counter for the next 1° if(needs_panel_check) for(var/obj/machinery/power/solar/S in connected_panels) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 0738d1a82f..f68895bd84 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -237,7 +237,7 @@ SA_vulnerability = SA_ANIMAL hud_state = "rifle_heavy" -/obj/item/projectile/bullet/rifle/a145 // 14.5�114mm is bigger than a .50 BMG round. +/obj/item/projectile/bullet/rifle/a145 // 14.5×114mm is bigger than a .50 BMG round. fire_sound = 'sound/weapons/Gunshot_cannon.ogg' // This is literally an anti-tank rifle caliber. It better sound like a fucking cannon. damage = 80 stun = 3 @@ -468,4 +468,4 @@ . = ..() var/turf/T = get_turf(loc) if(istype(T)) - new /obj/item/ammo_casing/afoam_dart/riot(get_turf(loc)) \ No newline at end of file + new /obj/item/ammo_casing/afoam_dart/riot(get_turf(loc)) diff --git a/maps/gateway_archive_vr/zoo.dmm b/maps/gateway_archive_vr/zoo.dmm index 90e4984fc1..2bf47c06c7 100644 --- a/maps/gateway_archive_vr/zoo.dmm +++ b/maps/gateway_archive_vr/zoo.dmm @@ -645,7 +645,7 @@ "mu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/plating,/area/awaymission/zoo) "mv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "This giant snake is a rare beast native to Paraiso, in the Carnelia system. Though normally only found deep in the jungles, these ravenous monsters have been known to slither out onto the planet's many beach resorts to swallow up unwary sunbathers. Otherwise, the creature's diet consists mainly of monkeys that were accidentally introduced to the planet by pet owners. The presence of the invasive monkey species had caused giant snake populations to swell in the 2530's, but today, due to excessive hunting, the giant snake's numbers have dwindled to the point of being an endangered species."; name = "Giant Snake Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "mw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Catgirls (not to be confused with Nekos, an interspecies hybrid born of a union between Human and Tajaran parents) were created artificially with the intention of producing a Human-feline hybrid that could serve aboard a space-faring vessel, control pests aboard such ships, and even alleviate stress among male crew members. Their eyes are between 20% and 50% larger than the average Human, which gives them their famously 'Kawaii' appearance. The large eyes trigger a subconscious psychological 'cute' response among Humans, causing them to usually become relaxed in their presence. Some catgirls have learned to abuse this trait, and have evolved to prey upon Humans who linger too close for too long."; name = "Catgirl Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"mx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"mx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr'valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "my" = (/obj/structure/window/phoronreinforced{dir = 8; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{dir = 1; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{dir = 4; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/zoo) "mz" = (/obj/structure/window/phoronreinforced{dir = 8; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{maxhealth = 10000; name = "robust borosilicate window"},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/zoo) "mA" = (/obj/structure/window/phoronreinforced{dir = 4; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{dir = 1; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -729,7 +729,7 @@ "oa" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass2"},/area/awaymission/zoo) "ob" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) "oc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Catgirls (not to be confused with Nekos, an interspecies hybrid born of a union between Human and Tajaran parents) were created artificially with the intention of producing a Human-feline hybrid that could serve aboard a space-faring vessel, control pests aboard such ships, and even alleviate stress among male crew members. Their eyes are between 20% and 50% larger than the average Human, which gives them their famously 'Kawaii' appearance. The large eyes trigger a subconscious psychological 'cute' response among Humans, causing them to usually become relaxed in their presence. Some catgirls have learned to abuse this trait, and have evolved to prey upon Humans who linger too close for too long."; name = "Catgirl Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"od" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"od" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr'valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "oe" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "of" = (/mob/living/simple_mob/hostile/frog{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "og" = (/turf/simulated/floor/holofloor/beach/water{icon_state = "beach"; dir = 10},/area/awaymission/zoo) @@ -783,7 +783,7 @@ "pc" = (/mob/living/simple_mob/catgirl{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) "pd" = (/obj/structure/flora/ausbushes/genericbush,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "pe" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Space Bumble Bee is a large, usually docile stinging insect native to Virgo-Prime in the Virgo Erigone system. It normally lives in small oases around what few bodies of water exist on the arid landscape, but ever since Humans have come to colonize the world, they have been discovered in city parks even in the capital city of Anur. Despite their gentle demeanor however, they can and will attack when provoked, and are capable of opening their mandibles wide enough to swallow a Human sized victim whole. Deep in their abdomen, they process their victims along with harvested nectar into rich honey."; name = "Space Bumble Bee Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"pf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Sobaka, also known as the Dog Shark, is an amphibious, cold-blooded animal that lives in the tropical waters of Qerrbalak, in the Qerr�valis System. The Sobaka hunts fish and small animals while on land, but would prefer to scavenge than to hunt. Its nose is far more powerful than any canine species, and are able to smell both on land, and in the sea. The Sobaka are commonly employed as drug-sniffing and bomb-sniffing animals by Skrellian security forces. The Sobaka is a close relative of the sentient species called Akula."; name = "Sobaka Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"pf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Sobaka, also known as the Dog Shark, is an amphibious, cold-blooded animal that lives in the tropical waters of Qerrbalak, in the Qerr'valis System. The Sobaka hunts fish and small animals while on land, but would prefer to scavenge than to hunt. Its nose is far more powerful than any canine species, and are able to smell both on land, and in the sea. The Sobaka are commonly employed as drug-sniffing and bomb-sniffing animals by Skrellian security forces. The Sobaka is a close relative of the sentient species called Akula."; name = "Sobaka Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "pg" = (/mob/living/carbon/human/sharkm{faction = "zoo"},/turf/simulated/floor/holofloor/beach/water,/area/awaymission/zoo) "ph" = (/mob/living/simple_mob/animal/passive/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) "pi" = (/obj/structure/flora/ausbushes/fernybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) @@ -901,7 +901,7 @@ "rq" = (/turf/simulated/floor,/area/awaymission/zoo) "rr" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 2},/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/awaymission/zoo) "rs" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo) -"rt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"rt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7-8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "ru" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Space spider is a broad classification is used to indicate a subspecies of arachnids discovered in the Tau sector. Extremely dangerous and voracious, this family of arachnids managed to evolve and adapt to grow and thrive in a variety of atmospheric conditions, even the complete lack of an atmosphere altogether. The females, bigger than the males, tend to lay their eggs in the bodies of animals killed during hunts. From there, the young specimens (spiderlings) will feed on the corpse for the first few hours of life until the body is picked clean, after which they will leave the nest to begin hunting for small parasites and anaerobic or aerobic creatures. Once they reach adulthood, their societal structure seems to change, pushing them to hunt in small packs, mostly favoring their numbers and aggressive nature, and inoculating a deadly toxin in their victims before sucking the nutrients dry."; name = "Space Spider Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Samak are the apex predator in the various plains regions of the northern hemisphere of Meralar. Unlike many creatures of Meralar, it does not have any fur to speak of. Instead, it is completely covered in thick armored plates which act as a barrier between the Samak's internal warmth and the cold environment. However, this is still not that efficient, so the Samak feed often to keep themselves warm. The Samak have six thick legs tipped with broad claws, and roughly aerodynamic bodies. They burrow underground, detecting prey through incredibly keen thermal detection. They pop up suddenly, grab their next meal, and return underground just as quickly. They prefer larger prey, such as the Baqara, Elu'a Eli, and Tajaran. Due to their voracious appetites and tendency to ruin mine shafts and infrastructure, they have been hunted almost to extinction, mainly by the Slavemasters. For the Tajaran, being able to kill a Samak singlehandedly (and without 'cheating', such as saturation bombing and the like) is an incredible feat, and any individual who pulls it off is lauded greatly."; name = "Samak Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Space bears are the result of reckless experimentation in the early days of interplanetary travel and colonization. Rogue scientists in the beginnings of what is now known as Space Russia got very drunk one night, more than usual, and decided to 'improve' on the terran bear. The result is faster, stronger, and smarter than the original species, but most importantly they are able to survive in the airless void of space without any special equipment. It is unknown if they were originally meant to be living weapons or simply made 'because we can', but the scientists responsible were never heard from again. Now, thanks to faster than light travel and lackluster effort in making sure nothing's riding along, Space Bears can be found living on asteroids and moons across the galaxy, wherever Humanity and friends may roam."; name = "Space Bear Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -925,7 +925,7 @@ "rO" = (/obj/structure/closet/crate,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) "rP" = (/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) "rQ" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"rR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"rR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7-8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rS" = (/mob/living/simple_mob/animal/space/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "rT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Space spider is a broad classification is used to indicate a subspecies of arachnids discovered in the Tau sector. Extremely dangerous and voracious, this family of arachnids managed to evolve and adapt to grow and thrive in a variety of atmospheric conditions, even the complete lack of an atmosphere altogether. The females, bigger than the males, tend to lay their eggs in the bodies of animals killed during hunts. From there, the young specimens (spiderlings) will feed on the corpse for the first few hours of life until the body is picked clean, after which they will leave the nest to begin hunting for small parasites and anaerobic or aerobic creatures. Once they reach adulthood, their societal structure seems to change, pushing them to hunt in small packs, mostly favoring their numbers and aggressive nature, and inoculating a deadly toxin in their victims before sucking the nutrients dry."; name = "Space Spider Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rU" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) @@ -1020,7 +1020,7 @@ "tF" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Decades ago, a group of rogue Skrellian scientists began illegal experimentation on Unathi colonists participating in a nuclear meltdown cleanup effort. In an attempt to create genetically engineered super soldiers, the Deathclaw was born with deadly sharp razor-like claws, incredible agility, robust durability, and high intelligence. When the Skrellian scientists were arrested by the authorities, the Deathclaw was to be destroyed, but some managed to escape captivity into the nuclear wasteland. Normally solitary creatures, they have been known to hunt in packs, and seem to have a preference for Human and Unathi meat."; name = "Deathclaw Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Space Goose (pural: geese) is an aquatic fowl originating from the planet Earth. This breed of Geese however was bred to the clime of space ships and stations as guard animals. They are extremely loud, highly aggressive, and territorial, while their talons and beaks are much longer and sharper than Earth geese. Their aggressive nature makes them difficult to train, but are highly effective when deployed."; name = "Space Goose Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"tI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43�45 kg (95�99 lb), and females 36�38.5 kg (79�85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"tI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43-45 kg (95-99 lb), and females 36-38.5 kg (79-85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "While all the species of these large predators are commonly known as Dragons (Draconius Regalis), this is mainly an umbrella term for a number of varieties of these large, reptilian creatures. There are numerous varieties of dragons found throughout the galaxy, and recounts of these creatures can be traced back to Skrell civilization's first interplanetary travels speaking of a large, unknown creature attacking and devouring the closeby cargo ships. Mainly solitary creatures, the Dragons roam large areas of space, capable of adapting to a large variety of atmospheres thanks to each sub-species natural affinity to various elements. While in today's population there are a numerous subspecies, all of these can be traced back to what archaeologists claimed to be a 'phoron' Dragon, by the biological analysis of the fossils found on asteroids in the Virgo-Erigone system. The creatures displayed here were reconstituted from such fossils, generously donated by the Virgo Orbital Research Establishment."; name = "Phoron Dragon Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tK" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tL" = (/obj/effect/floor_decal/asteroid,/obj/effect/decal/cleanable/greenglow,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) @@ -1030,7 +1030,7 @@ "tP" = (/obj/effect/decal/cleanable/greenglow,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Decades ago, a group of rogue Skrellian scientists began illegal experimentation on Unathi colonists participating in a nuclear meltdown cleanup effort. In an attempt to create genetically engineered super soldiers, the Deathclaw was born with deadly sharp razor-like claws, incredible agility, robust durability, and high intelligence. When the Skrellian scientists were arrested by the authorities, the Deathclaw was to be destroyed, but some managed to escape captivity into the nuclear wasteland. Normally solitary creatures, they have been known to hunt in packs, and seem to have a preference for Human and Unathi meat."; name = "Deathclaw Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Space Goose (pural: geese) is an aquatic fowl originating from the planet Earth. This breed of Geese however was bred to the clime of space ships and stations as guard animals. They are extremely loud, highly aggressive, and territorial, while their talons and beaks are much longer and sharper than Earth geese. Their aggressive nature makes them difficult to train, but are highly effective when deployed."; name = "Space Goose Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"tS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43�45 kg (95�99 lb), and females 36�38.5 kg (79�85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"tS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43-45 kg (95-99 lb), and females 36-38.5 kg (79-85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "While all the species of these large predators are commonly known as Dragons (Draconius Regalis), this is mainly an umbrella term for a number of varieties of these large, reptilian creatures. There are numerous varieties of dragons found throughout the galaxy, and recounts of these creatures can be traced back to Skrell civilization's first interplanetary travels speaking of a large, unknown creature attacking and devouring the closeby cargo ships. Mainly solitary creatures, the Dragons roam large areas of space, capable of adapting to a large variety of atmospheres thanks to each sub-species natural affinity to various elements. While in today's population there are a numerous subspecies, all of these can be traced back to what archaeologists claimed to be a 'phoron' Dragon, by the biological analysis of the fossils found on asteroids in the Virgo-Erigone system. The creatures displayed here were reconstituted from such fossils, generously donated by the Virgo Orbital Research Establishment."; name = "Phoron Dragon Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tU" = (/obj/effect/decal/remains/human,/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "tV" = (/mob/living/simple_mob/adultslime{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) diff --git a/maps/gateway_vr/zoo.dmm b/maps/gateway_vr/zoo.dmm index c08fdeaed2..6bb8c36d6a 100644 --- a/maps/gateway_vr/zoo.dmm +++ b/maps/gateway_vr/zoo.dmm @@ -4509,7 +4509,7 @@ dir = 1 }, /obj/structure/sign/kiddieplaque{ - desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; + desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr'valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit" }, /turf/simulated/floor/plating, @@ -5142,7 +5142,7 @@ }, /obj/structure/grille, /obj/structure/sign/kiddieplaque{ - desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; + desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr'valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit" }, /turf/simulated/floor/plating, @@ -5524,7 +5524,7 @@ }, /obj/structure/grille, /obj/structure/sign/kiddieplaque{ - desc = "The Sobaka, also known as the Dog Shark, is an amphibious, cold-blooded animal that lives in the tropical waters of Qerrbalak, in the Qerr�valis System. The Sobaka hunts fish and small animals while on land, but would prefer to scavenge than to hunt. Its nose is far more powerful than any canine species, and are able to smell both on land, and in the sea. The Sobaka are commonly employed as drug-sniffing and bomb-sniffing animals by Skrellian security forces. The Sobaka is a close relative of the sentient species called Akula."; + desc = "The Sobaka, also known as the Dog Shark, is an amphibious, cold-blooded animal that lives in the tropical waters of Qerrbalak, in the Qerr'valis System. The Sobaka hunts fish and small animals while on land, but would prefer to scavenge than to hunt. Its nose is far more powerful than any canine species, and are able to smell both on land, and in the sea. The Sobaka are commonly employed as drug-sniffing and bomb-sniffing animals by Skrellian security forces. The Sobaka is a close relative of the sentient species called Akula."; name = "Sobaka Exhibit" }, /turf/simulated/floor/plating, @@ -6312,7 +6312,7 @@ dir = 1 }, /obj/structure/sign/kiddieplaque{ - desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; + desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7-8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit" }, /turf/simulated/floor/plating, @@ -6569,7 +6569,7 @@ }, /obj/structure/grille, /obj/structure/sign/kiddieplaque{ - desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; + desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7-8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit" }, /turf/simulated/floor/plating, @@ -7380,7 +7380,7 @@ dir = 1 }, /obj/structure/sign/kiddieplaque{ - desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43�45 kg (95�99 lb), and females 36�38.5 kg (79�85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; + desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43-45 kg (95-99 lb), and females 36-38.5 kg (79-85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit" }, /turf/simulated/floor/plating, @@ -7462,7 +7462,7 @@ }, /obj/structure/grille, /obj/structure/sign/kiddieplaque{ - desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43�45 kg (95�99 lb), and females 36�38.5 kg (79�85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; + desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43-45 kg (95-99 lb), and females 36-38.5 kg (79-85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit" }, /turf/simulated/floor/plating, diff --git a/maps/gateway_vr/zoo_b.dmm b/maps/gateway_vr/zoo_b.dmm index 23ea96b135..0dfcbcb647 100644 --- a/maps/gateway_vr/zoo_b.dmm +++ b/maps/gateway_vr/zoo_b.dmm @@ -1398,7 +1398,7 @@ dir = 1 }, /obj/structure/sign/kiddieplaque{ - desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; + desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7-8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit" }, /turf/simulated/floor/plating, @@ -3703,7 +3703,7 @@ dir = 1 }, /obj/structure/sign/kiddieplaque{ - desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; + desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr'valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit" }, /turf/simulated/floor/plating, @@ -5168,7 +5168,7 @@ }, /obj/structure/grille, /obj/structure/sign/kiddieplaque{ - desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; + desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr'valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit" }, /turf/simulated/floor/plating, @@ -5845,7 +5845,7 @@ }, /obj/structure/grille, /obj/structure/sign/kiddieplaque{ - desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; + desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7-8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit" }, /turf/simulated/floor/plating, diff --git a/maps/southern_cross/southern_cross_areas.dm b/maps/southern_cross/southern_cross_areas.dm index 4d9c76f95f..857f13134e 100644 --- a/maps/southern_cross/southern_cross_areas.dm +++ b/maps/southern_cross/southern_cross_areas.dm @@ -110,13 +110,13 @@ icon_state = "bluenew" /area/surface/outside/river/faxalven - name = "Fax�lven River" + name = "Faxälven River" /area/surface/outside/river/indalsalven - name = "Indals�lven River" + name = "Indalsälven River" /area/surface/outside/river/svartan - name = "Svart�n River" + name = "Svartån River" /area/surface/outside/lake/romsele name = "Romsele Lake" From 9b29549fe722788dcca5086fb46e8a6a504e2593 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Wed, 6 Mar 2024 00:51:17 +0100 Subject: [PATCH 24/87] missed broken char --- code/modules/news/newspaper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/news/newspaper.dm b/code/modules/news/newspaper.dm index d58b9446b2..394ce7be26 100644 --- a/code/modules/news/newspaper.dm +++ b/code/modules/news/newspaper.dm @@ -27,7 +27,7 @@ switch(screen) if(0) //Cover dat+="
The Griffon
" - dat+="
[using_map.company_name]-standard newspaper, for use on [using_map.company_name]� Space Facilities

" + dat+="
[using_map.company_name]-standard newspaper, for use on [using_map.company_name] Space Facilities

" if(isemptylist(news_content)) if(important_message) dat+="Contents:
    **Important Security Announcement** \[page [pages+2]\]
" From dc8dfc109489cadf97869fcb419ae0610fbdb2ef Mon Sep 17 00:00:00 2001 From: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Date: Wed, 6 Mar 2024 19:19:53 +0000 Subject: [PATCH 25/87] Closet vore and Tents (#15808) * Closet vore and Tents Added a new verb to the ability tab when interacting with closets called "Vore Occupants". This allows you to eat another person when both of you are inside of the same closet. Added tents as a subtype of closets. * Crafting Added the ability to craft tents with 10 cloth. * Ghost check and change category Added a check to make sure user is /mob/living. Changed category from Abilities to Object because having no abilities means that your tab changes every time you move past a locker. --- .../structures/crates_lockers/__closets.dm | 47 ++++++++++++++++++ .../crates_lockers/closets/gimmick.dm | 32 ++++++++++++ icons/obj/closets/tent.dmi | Bin 0 -> 552 bytes icons/obj/closets/tentB.dmi | Bin 0 -> 552 bytes 4 files changed, 79 insertions(+) create mode 100644 icons/obj/closets/tent.dmi create mode 100644 icons/obj/closets/tentB.dmi diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm index f56c0269a4..46a3226464 100644 --- a/code/game/objects/structures/crates_lockers/__closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -40,6 +40,7 @@ var/is_animating_door = FALSE /// Our visual object for the closet door, if we're animating var/obj/effect/overlay/closet_door/door_obj + var/vore_sound = 'sound/effects/metalscrape2.ogg' /obj/structure/closet/Initialize() ..() @@ -543,3 +544,49 @@ M.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * closet_appearance.door_anim_squish, 1, 0)) M.Translate(closet_appearance.door_hinge, 0) return M + +//verb to eat people in the same closet as yourself + +/obj/structure/closet/verb/hidden_vore() + set src in oview(1) + set category = "Object" + set name = "Vore Occupants" + + if(!istype(usr, /mob/living)) //no ghosts + return + + if(!(usr in src.contents)) + to_chat(usr, "You need to be inside \the [src] to do this.") + return + + var/list/targets = list() //IF IT IS NOT BROKEN. DO NOT FIX IT. + + for(var/mob/living/L in src.contents) + if(!istype(L, /mob/living)) //Don't eat anything that isn't mob/living. Failsafe. + continue + if(L == usr) //no eating yourself. 1984. + continue + if(L.devourable) + targets += L + + if(targets == 0) + to_chat(src, "No eligible targets found.") + return + + var/mob/living/target = tgui_input_list(usr, "Please select a target.", "Victim", targets) + + if(!target) + return + + if(!istype(target, /mob/living)) //Safety. + to_chat(src, "You need to select a living target!") + return + + if (get_dist(src,target) >= 1 || get_dist(src,usr) >= 1) //in case they leave the locker + to_chat(src, "You are no longer both in \the [src].") + return + + playsound(src, vore_sound, 25) + + var/mob/living/M = usr + M.perform_the_nom(usr,target,usr,usr.vore_selected,1) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index f79d770f74..48bea9205b 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -6,6 +6,7 @@ open_sound = 'sound/effects/wooden_closet_open.ogg' close_sound = 'sound/effects/wooden_closet_close.ogg' + vore_sound = 'sound/effects/woodhit.ogg' /obj/structure/closet/acloset name = "strange closet" @@ -82,3 +83,34 @@ icon = 'icons/obj/closets/abductor.dmi' anchored = TRUE closet_appearance = null // special icons + +/obj/structure/closet/tent + name = "tent" + desc = "An old fashioned tent that can easily fit a couple of people." + icon = 'icons/obj/closets/tent.dmi' + closet_appearance = null + anchored = 1 + open_sound = 'sound/effects/rustle3.ogg' + close_sound = 'sound/effects/rustle4.ogg' + vore_sound = 'sound/effects/rustle1.ogg' + +/obj/structure/closet/tent/B + icon = 'icons/obj/closets/tentB.dmi' + +/datum/crafting_recipe/tent + name = "tent (green)" + result = /obj/structure/closet/tent + reqs = list( + list(/obj/item/stack/material/cloth = 10) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/tentb + name = "tent (tan)" + result = /obj/structure/closet/tent/B + reqs = list( + list(/obj/item/stack/material/cloth = 10) + ) + time = 60 + category = CAT_MISC diff --git a/icons/obj/closets/tent.dmi b/icons/obj/closets/tent.dmi new file mode 100644 index 0000000000000000000000000000000000000000..939557b190f249966340f19dc533ca0fe7e09754 GIT binary patch literal 552 zcmV+@0@wYCP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2wg|OiY@(WV) za4Aw&aP@NmTMGaHt0G(a?QeYm00A^fL_t(Ijg`+oYJ@--hvCmkw%iCdK@k5OK!*kE zz+ONRY;9%>t2DbXl@Jz8XP4S$7d%G1fmNEhOJ&B*>z*GkBLaxiY?$2Kuy?kt z1)ja-$AJ-eFI(17;2rICgUN?@-8$w&YOfj2Vu;tQV=*MER zCvwLi$5ua@4Q5_+ZafBNPU&bMcoyJkptmP%7G0S7>Nii=qO@0L18H#4AwO0DX(&5o z(C@9ugD}08(iRVTX(0Co^8oqROqvcS4TQ+xEy|=tAPpDxg&~MgC2Wb{OL)g07y|Z0 qJ(yDUM9qWC>z>_{<5X2u|M52-me>LQ(3!#j0000 literal 0 HcmV?d00001 diff --git a/icons/obj/closets/tentB.dmi b/icons/obj/closets/tentB.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a1446d27378f40714ea6403f989a74855bbd26c8 GIT binary patch literal 552 zcmV+@0@wYCP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2wg|OiY@(WV) za4Aw&aP@NmTMGaHt0G(a?QeYm00A^fL_t(Ijg`+oYJ@--hvCmkw%iCdK@k5OK!*kE zz+ONRY;9%>t2DbXl@Jz8XP4S$7d%G1fmNEhOJ&B*>z*GkBLaxiY?$2Kuy?kt z1)ja-$AJ-eFI(17;2rICgUN?@-8$w&YOfj2Vu;tQV=*MER zCvwLi$5ua@4Q5_+ZafBNPU&bMcoyJkptmP%7G0S7>Nii=qO@0L18H#4AwO0DX(&5o z(C@9ugD}08(iRVTX(0Co^8oqROqvcS4TQ+xEy|=tAPpDxg&~MgC2Wb{OL)g07y|Z0 qJ(yDUM9qWC>z>_{<5X2u|M52-me>LQ(3!#j0000 Date: Fri, 8 Mar 2024 18:54:51 +0100 Subject: [PATCH 26/87] Fix forgotten check in movement (#15812) --- code/modules/multiz/movement.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 4312e38f57..c713369763 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -58,10 +58,15 @@ to_chat(src, "You stopped swimming downwards.") return 0 - else if(!destination.CanZPass(src, direction)) + else if(!destination.CanZPass(src, direction)) // one for the down and non-special case to_chat(src, "\The [destination] blocks your way.") return 0 + else if(!destination.CanZPass(src, direction)) // and one for up + to_chat(src, "\The [destination] blocks your way.") + return 0 + + var/area/area = get_area(src) if(area.has_gravity() && !can_overcome_gravity()) if(direction == UP) From cc05d51b69e754270f02f78981182240a6801e56 Mon Sep 17 00:00:00 2001 From: Cadyn <35672377+cadyn@users.noreply.github.com> Date: Sat, 9 Mar 2024 15:39:33 -0800 Subject: [PATCH 27/87] Garbage collection, asset delivery, icon2html revolution, and general fixes (515) (#15739) * Making it compileable * Adds Tracy & Fixed missing compat in sorting code * CI workflow using "Stable" beta version * Tracy define * Fixes * Update GC from TGStation * fixes * Appease linter * begone custom_items.txt * Making it compileable * Adds Tracy & Fixed missing compat in sorting code * CI workflow using "Stable" beta version * Tracy define * Fixes * Build dependencies at 514 * Asset delivery/GC/515 megapatch * fix runtime * Appease integration tests * More runtime fixes * Attempting to resolve runtime * Update spacemanDMM * icon2html revolution * icon2html part 2 * fixes * Attempt to appease linter * More fixes * Final fixes (hopefully) * operator keyword moment * minor fixes and additions * undo extra tgui files * switch to QDEL_IN_STOPPABLE where necessary * Pain * GPS runtime * dropped(null) fix, + chompedit the fixes just incase. * Fix chat tags * Update _build_dependencies.sh * runtime in orebag, duplicate in computer/ship/proc/look, runtime in zoom * tweak zoom change * another registersignal override runtime * 1 * Revert "1" This reverts commit 43f619ca6c216c2bc41b8f7a346069f99591261b. * various qdel ref fixes * newplayer and observer harddels * disposalholder logging remove, gargoyle hard del + typo * retouch atom/movable destroy to be TG-like * potential edge case ref in manualfollow * extra following potential ref * global list refs tweak, new_player undo a thing * /mob/new_player qdel fixes * undo some things * revert atoms/movable/destroy * revert mind and new_player panel changes * atoms and atom/movable reversions * bring back datum/mind and panel fixes * projectile optimisation * Reverts useless edits, clothing hood runtime, projectile runtime I tried a lot of things which do not help, and i reverted a lot of it here. * a few more reversions of useless changes * Begin getting rid of CHOMPedit comments * Nuke remaining chompedit comments * Revert "undo extra tgui files" This reverts commit f3bdcde8cbd846adcfbc6f02b0077e0c5ae20f56. * fixing oops * line ending shenanigans * More GC cleanup * Optimisations to test/trace projectile, turrets. Tweaks. Turrets now only trace when they are absolutely sure they want to shoot. disposalholder, effect master and artefact qdel refs changes. * bad usage of the check_trajectory proc check_trajectory returns a list of objects hit along it's path to it's target, not a boolean of the target being hittable. a couple places in code assume this, so here they are fixed. * puts legacy globals into GLOB datum for debug use * fix upport oopsie * fix * Move recursive listening to component * Minor fixes and cleanup * undo my temp solution * tweaks + a missed thing * recursive_move sanity checks and safety cases * Catch null initialisation cases + fix borg creation VV edit spawns the object in nullspace then directly sets it's loc, which means the movement is unregistered. The spawn(0) delay should hopefully mean that setup_parents happens AFTER any unregistered movement. * circular inventory check, make checks better * better handling of safety reset cases * Add logging to safety checks --------- Co-authored-by: Selis Co-authored-by: Selis Co-authored-by: Raeschen --- _build_dependencies.sh | 6 +- code/__byond_version_compat.dm | 5 - code/__defines/dcs/signals.dm | 17 + code/__defines/qdel.dm | 41 +- code/__defines/subsystems.dm | 1 + code/_global_vars/misc.dm | 6 +- code/_helpers/_lists.dm | 2 +- code/_helpers/global_lists.dm | 29 ++ code/_helpers/icons.dm | 23 +- code/_helpers/sorts/TimSort.dm | 12 +- code/_helpers/sorts/__main.dm | 32 +- code/_helpers/text.dm | 4 +- code/_helpers/type2type.dm | 6 + code/_onclick/hud/ability_screen_objects.dm | 9 +- code/_onclick/observer.dm | 9 +- code/controllers/configuration.dm | 30 ++ code/controllers/globals.dm | 2 + code/controllers/master.dm | 2 +- code/controllers/subsystems/asset_loading.dm | 28 ++ code/controllers/subsystems/assets.dm | 42 +- code/controllers/subsystems/garbage.dm | 313 ++++++++----- code/controllers/subsystems/overlays.dm | 38 +- code/datums/chat_message.dm | 6 +- code/datums/components/recursive_move.dm | 119 +++++ code/datums/observation/_debug.dm | 10 - code/datums/observation/_defines.dm | 1 - code/datums/observation/destroyed.dm | 7 +- code/datums/observation/dir_set.dm | 35 -- code/datums/observation/equipped.dm | 8 +- code/datums/observation/helpers.dm | 19 +- code/datums/observation/logged_in.dm | 21 - code/datums/observation/moved.dm | 17 +- code/datums/observation/observation.dm | 238 ---------- code/datums/observation/power_change.dm | 6 +- code/datums/observation/shuttle_added.dm | 6 +- code/datums/observation/shuttle_moved.dm | 38 -- code/datums/observation/stat_set.dm | 8 +- code/datums/observation/turf_changed.dm | 28 -- code/datums/observation/turf_enterexit.dm | 10 +- code/datums/observation/unequipped.dm | 13 +- code/datums/observation/z_moved.dm | 16 - code/datums/observation/~cleanup.dm | 67 --- code/datums/orbit.dm | 2 +- code/datums/uplink/badassery.dm | 2 +- code/datums/uplink/uplink_items.dm | 6 +- code/datums/wires/camera.dm | 2 +- code/datums/wires/jukebox.dm | 10 +- code/datums/wires/mines.dm | 22 +- code/datums/wires/particle_accelerator.dm | 2 +- code/game/atoms.dm | 8 +- code/game/atoms_movable.dm | 4 +- code/game/machinery/computer/arcade.dm | 4 +- code/game/machinery/machinery.dm | 2 +- code/game/machinery/machinery_power.dm | 14 +- code/game/machinery/overview.dm | 10 +- code/game/machinery/partslathe_vr.dm | 4 +- code/game/machinery/portable_turret.dm | 21 +- code/game/machinery/requests_console.dm | 2 +- .../machinery/suit_storage/suit_cycler.dm | 4 +- code/game/machinery/telecomms/broadcaster.dm | 4 +- code/game/mecha/equipment/mecha_equipment.dm | 2 +- .../game/mecha/equipment/tools/shield_omni.dm | 5 +- code/game/mecha/mech_fabricator.dm | 12 +- code/game/mecha/mecha.dm | 4 +- .../temporary_visuals/temporary_visual.dm | 3 +- code/game/objects/items.dm | 32 +- .../game/objects/items/devices/ai_detector.dm | 14 +- .../items/devices/communicator/UI_tgui.dm | 2 +- .../devices/communicator/communicator.dm | 2 +- .../items/devices/communicator/messaging.dm | 10 +- .../items/devices/communicator/phone.dm | 65 +-- code/game/objects/items/devices/geiger.dm | 6 +- code/game/objects/items/devices/gps.dm | 9 +- code/game/objects/items/devices/hacktool.dm | 4 +- .../objects/items/devices/radio/intercom.dm | 6 +- .../game/objects/items/devices/radio/radio.dm | 2 +- .../objects/items/devices/text_to_speech.dm | 2 +- code/game/objects/items/toys/toys.dm | 6 +- code/game/objects/items/toys/toys_vr.dm | 2 +- .../objects/items/weapons/capture_crystal.dm | 4 +- .../items/weapons/circuitboards/frame.dm | 7 + .../items/weapons/id cards/station_ids.dm | 6 +- .../objects/items/weapons/storage/bags.dm | 10 +- code/game/objects/items/weapons/syndie.dm | 2 +- .../game/objects/items/weapons/tanks/tanks.dm | 4 +- .../objects/items/weapons/tools/combitool.dm | 2 +- code/game/objects/objs.dm | 2 +- code/game/objects/structures/bedsheet_bin.dm | 11 +- code/game/objects/structures/flora/flora.dm | 5 +- code/game/objects/structures/janicart.dm | 4 +- code/game/world.dm | 14 + code/modules/admin/verbs/modify_robot.dm | 7 +- code/modules/admin/verbs/pray.dm | 2 +- code/modules/ai/ai_holder.dm | 10 +- code/modules/ai/ai_holder_cooperation.dm | 6 +- .../ai/ai_holder_subtypes/simple_mob_ai.dm | 3 +- code/modules/ai/ai_holder_targeting.dm | 4 + code/modules/ai/say_list.dm | 2 +- code/modules/assembly/holder.dm | 2 +- code/modules/assembly/infrared.dm | 4 +- code/modules/assembly/proximity.dm | 2 +- code/modules/assembly/signaler.dm | 2 +- code/modules/assembly/timer.dm | 2 +- code/modules/assembly/voice.dm | 6 +- code/modules/asset_cache/asset_cache.dm | 110 ----- .../modules/asset_cache/asset_cache_client.dm | 24 +- code/modules/asset_cache/asset_cache_item.dm | 59 ++- code/modules/asset_cache/asset_list.dm | 440 ++++++++++++++++-- code/modules/asset_cache/asset_list_items.dm | 25 +- code/modules/asset_cache/assets/chat.dm | 4 + .../modules/asset_cache/assets/fontawesome.dm | 13 +- code/modules/asset_cache/assets/jquery.dm | 3 +- code/modules/asset_cache/assets/tgfont.dm | 4 +- code/modules/asset_cache/readme.md | 37 ++ .../asset_cache/transports/asset_transport.dm | 162 +++++++ .../transports/webroot_transport.dm | 87 ++++ code/modules/asset_cache/validate_assets.html | 2 +- code/modules/blob2/core_chunk.dm | 2 +- .../overmind/types/ectoplasmic_horror.dm | 2 +- .../overmind/types/ravenous_macrophage.dm | 4 +- .../blob2/overmind/types/reactive_spines.dm | 10 +- .../blob2/overmind/types/roiling_mold.dm | 8 +- .../blob2/overmind/types/synchronous_mesh.dm | 4 +- code/modules/casino/casino_prize_vendor.dm | 2 +- code/modules/client/client procs.dm | 3 +- .../rig/modules/specific/pat_module_vr.dm | 5 +- code/modules/clothing/spacesuits/rig/rig.dm | 4 +- code/modules/clothing/suits/hooded.dm | 15 +- .../detectivework/microscope/dnascanner.dm | 4 +- code/modules/economy/ATM.dm | 22 +- code/modules/economy/EFTPOS.dm | 42 +- code/modules/economy/cash_register.dm | 44 +- code/modules/economy/retail_scanner.dm | 34 +- code/modules/economy/vending.dm | 2 +- code/modules/events/carp_migration.dm | 4 +- code/modules/events/gnat_migration.dm | 4 +- code/modules/events/infestation.dm | 4 +- code/modules/events/jellyfish_migration.dm | 4 +- code/modules/events/ray_migration.dm | 4 +- code/modules/events/shark_migration.dm | 4 +- code/modules/events/spacefish_migration.dm | 4 +- code/modules/examine/descriptions/armor.dm | 2 +- code/modules/examine/examine.dm | 4 +- code/modules/food/kitchen/icecream.dm | 4 +- .../gamemaster/event2/events/mob_spawning.dm | 4 +- code/modules/holomap/station_holomap.dm | 15 +- code/modules/hydroponics/seed_machines.dm | 10 +- .../integrated_electronics/subtypes/input.dm | 2 +- .../subtypes/manipulation.dm | 4 +- .../integrated_electronics/subtypes/output.dm | 11 +- code/modules/mining/abandonedcrates_vr.dm | 4 +- code/modules/mining/drilling/scanner.dm | 4 +- code/modules/mob/dead/observer/logout.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 2 + code/modules/mob/living/bot/secbot.dm | 9 +- code/modules/mob/living/carbon/carbon.dm | 10 +- .../mob/living/carbon/human/examine.dm | 62 +-- code/modules/mob/living/carbon/human/human.dm | 9 +- .../carbon/human/human_modular_limbs.dm | 8 +- .../mob/living/carbon/human/human_vr.dm | 2 - .../living/carbon/human/species/species_vr.dm | 11 +- .../human/species/station/prommie_blob.dm | 3 +- code/modules/mob/living/living.dm | 15 +- .../living/silicon/pai/software_modules.dm | 2 +- code/modules/mob/living/silicon/robot/life.dm | 29 +- .../subtypes/animal/alien animals/catslug.dm | 12 +- .../subtypes/animal/passive/mouse.dm | 2 +- .../subtypes/vore/solargrub_larva.dm | 2 +- code/modules/mob/living/voice/voice.dm | 2 +- code/modules/mob/mob.dm | 44 +- code/modules/mob/mob_planes_vr.dm | 4 +- code/modules/mob/new_player/logout.dm | 4 +- code/modules/mob/new_player/new_player.dm | 10 +- code/modules/multiz/movement_vr.dm | 34 +- code/modules/nifsoft/nif.dm | 2 +- .../nifsoft/software/13_soulcatcher.dm | 17 +- code/modules/nifsoft/software/14_commlink.dm | 2 +- code/modules/organs/organ_external.dm | 5 + .../overmap/disperser/disperser_console.dm | 12 +- code/modules/overmap/ships/computers/ship.dm | 5 +- code/modules/overmap/ships/landable.dm | 18 +- code/modules/paperwork/paper_sticky.dm | 7 +- code/modules/pda/app.dm | 2 +- code/modules/pda/messenger.dm | 2 +- code/modules/pda/pda.dm | 6 +- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/projectile.dm | 57 ++- code/modules/projectiles/projectile/trace.dm | 22 +- code/modules/reagents/Chemistry-Metabolism.dm | 2 +- code/modules/reagents/reactions/_reactions.dm | 4 +- code/modules/recycling/disposal.dm | 10 +- code/modules/research/circuitprinter.dm | 2 +- code/modules/research/message_server.dm | 4 +- code/modules/research/protolathe.dm | 4 +- code/modules/scripting/AST/AST Nodes.dm | 8 +- .../AST/Operators/Binary Operators.dm | 38 +- .../AST/Operators/Unary Operators.dm | 12 +- .../scripting/Interpreter/Evaluation.dm | 54 +-- code/modules/scripting/Options.dm | 42 +- code/modules/scripting/Parser/Expressions.dm | 20 +- code/modules/shieldgen/directional_shield.dm | 11 +- code/modules/shieldgen/emergency_shield.dm | 8 +- code/modules/shieldgen/shield_capacitor.dm | 2 +- code/modules/shieldgen/shield_gen.dm | 6 +- code/modules/shuttles/shuttle.dm | 4 +- code/modules/shuttles/shuttles_web.dm | 4 +- .../tgui/modules/appearance_changer.dm | 5 +- code/modules/tgui/modules/camera.dm | 14 +- code/modules/tgui/modules/overmap.dm | 5 +- code/modules/tgui/tgui.dm | 16 +- code/modules/tgui_panel/tgui_panel.dm | 4 +- code/modules/vchat/vchat_client.dm | 2 +- code/modules/virus2/biohazard destroyer.dm | 2 +- code/modules/virus2/items_devices.dm | 2 +- code/modules/vore/eating/simple_animal_vr.dm | 2 +- .../vore/fluffstuff/custom_clothes_vr.dm | 4 +- .../vore/fluffstuff/custom_items_vr.dm | 2 +- code/modules/vore/resizing/sizegun_vr.dm | 4 +- .../xenoarcheaology/artifacts/artifact.dm | 10 + .../xenoarcheaology/artifacts/autocloner.dm | 8 +- .../xenoarcheaology/artifacts/replicator.dm | 10 +- .../artifacts/replicator_vr.dm | 16 +- code/modules/xenoarcheaology/effect.dm | 2 +- code/modules/xenoarcheaology/effect_master.dm | 1 + .../xenoarcheaology/effects/vampire.dm | 2 +- .../xenoarcheaology/finds/find_spawning.dm | 10 + code/modules/xenoarcheaology/finds/fossils.dm | 2 +- code/modules/xenoarcheaology/finds/special.dm | 2 +- code/modules/xenoarcheaology/finds/talking.dm | 4 +- .../tools/ano_device_battery.dm | 12 +- .../tools/artifact_analyser.dm | 2 +- .../tools/geosample_scanner.dm | 8 +- .../tools/suspension_generator.dm | 8 +- code/modules/xenoarcheaology/tools/tools.dm | 9 +- code/modules/xenobio/items/extracts.dm | 5 +- code/modules/xenobio/items/extracts_vr.dm | 4 +- .../xenobio2/machinery/core_extractor.dm | 2 +- .../xenobio2/machinery/gene_manipulators.dm | 10 +- .../xenobio2/machinery/slime_replicator.dm | 3 +- config/example/config.txt | 39 ++ html/font-awesome/css/all.min.css | 5 +- html/font-awesome/css/v4-shims.min.css | 5 +- html/font-awesome/webfonts/fa-regular-400.ttf | Bin 0 -> 60236 bytes html/font-awesome/webfonts/fa-solid-900.ttf | Bin 0 -> 389948 bytes .../webfonts/fa-v4compatibility.ttf | Bin 0 -> 10084 bytes ...i.custom-core-widgit-mouse-sortable.min.js | 7 + html/jquery/jquery.min.js | 4 + maps/gateway_archive_vr/wildwest.dm | 2 +- maps/gateway_vr/wildwest.dm | 2 +- maps/tether/tether_shuttles.dm | 16 +- vorestation.dme | 14 +- 251 files changed, 2362 insertions(+), 1629 deletions(-) create mode 100644 code/controllers/subsystems/asset_loading.dm create mode 100644 code/datums/components/recursive_move.dm delete mode 100644 code/datums/observation/_debug.dm delete mode 100644 code/datums/observation/_defines.dm delete mode 100644 code/datums/observation/dir_set.dm delete mode 100644 code/datums/observation/logged_in.dm delete mode 100644 code/datums/observation/observation.dm delete mode 100644 code/datums/observation/shuttle_moved.dm delete mode 100644 code/datums/observation/turf_changed.dm delete mode 100644 code/datums/observation/z_moved.dm delete mode 100644 code/datums/observation/~cleanup.dm delete mode 100644 code/modules/asset_cache/asset_cache.dm create mode 100644 code/modules/asset_cache/readme.md create mode 100644 code/modules/asset_cache/transports/asset_transport.dm create mode 100644 code/modules/asset_cache/transports/webroot_transport.dm create mode 100644 html/font-awesome/webfonts/fa-regular-400.ttf create mode 100644 html/font-awesome/webfonts/fa-solid-900.ttf create mode 100644 html/font-awesome/webfonts/fa-v4compatibility.ttf create mode 100644 html/jquery/jquery-ui.custom-core-widgit-mouse-sortable.min.js create mode 100644 html/jquery/jquery.min.js diff --git a/_build_dependencies.sh b/_build_dependencies.sh index b251bfbe32..04dcb4aaa2 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -1,11 +1,11 @@ # This file has all the information on what versions of libraries are thrown into the code # For dreamchecker -export SPACEMAN_DMM_VERSION=suite-1.7 +export SPACEMAN_DMM_VERSION=suite-1.8 # For NanoUI + TGUI export NODE_VERSION=16 # Byond Major -export BYOND_MAJOR=514 +export BYOND_MAJOR=515 # Byond Minor -export BYOND_MINOR=1589 +export BYOND_MINOR=1630 # Macro Count export MACRO_COUNT=4 diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 086360e5e2..6604aea70b 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -1,8 +1,3 @@ -#if DM_VERSION >= 515 -#error PLEASE MAKE SURE THAT 515 IS PROPERLY TESTED AND WORKS. ESPECIALLY THE SAVE-FILES HAVE TO WORK. -#error Additionally: Make sure that the GitHub Workflow was updated to BYOND 515 as well. -#endif - // These defines are from __513_compatibility.dm -- Please Sort #define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) #define TAN(x) tan(x) diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index 06fb819b07..ad7c9b4f34 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -779,3 +779,20 @@ #define ELEMENT_CONFLICT_FOUND (1<<0) //From reagents touch_x. #define COMSIG_REAGENTS_TOUCH "reagent_touch" + + +//Moved observer stuff to DCS +#define COMSIG_OBSERVER_MOVED "observer_move" +#define COMSIG_OBSERVER_DESTROYED "observer_destroyed" +#define COMSIG_OBSERVER_SHUTTLE_ADDED "observer_shuttle_added" +#define COMSIG_OBSERVER_SHUTTLE_PRE_MOVE "observer_shuttle_premove" +#define COMSIG_OBSERVER_SHUTTLE_MOVED "observer_shuttle_moved" +#define COMSIG_OBSERVER_TURF_ENTERED "observer_turf_entered" +#define COMSIG_OBSERVER_TURF_EXITED "observer_turf_exited" +#define COMSIG_OBSERVER_Z_MOVED "observer_z_moved" +#define COMSIG_OBSERVER_MOB_EQUIPPED "observer_mob_equipped" +#define COMSIG_OBSERVER_ITEM_EQUIPPED "observer_item_equipped" +#define COMSIG_OBSERVER_MOB_UNEQUIPPED "observer_mob_unequipped" +#define COMSIG_OBSERVER_ITEM_UNEQUIPPED "observer_item_unequipped" +#define COMSIG_OBSERVER_APC "observer_apc" +#define COMSIG_OBSERVER_GLOBALMOVED "observer_global_move" diff --git a/code/__defines/qdel.dm b/code/__defines/qdel.dm index cf1afe492e..7d815fe0f3 100644 --- a/code/__defines/qdel.dm +++ b/code/__defines/qdel.dm @@ -1,4 +1,6 @@ -//defines that give qdel hints. these can be given as a return in destory() or by calling +//! Defines that give qdel hints. +//! +//! These can be given as a return in [/atom/proc/Destroy] or by calling [/proc/qdel]. /// `qdel` should queue the object for deletion. #define QDEL_HINT_QUEUE 0 @@ -11,41 +13,56 @@ // Qdel should assume this object won't gc, and hard delete it posthaste. #define QDEL_HINT_HARDDEL_NOW 4 + #ifdef REFERENCE_TRACKING /** If REFERENCE_TRACKING is enabled, qdel will call this object's find_references() verb. * * Functionally identical to [QDEL_HINT_QUEUE] if [GC_FAILURE_HARD_LOOKUP] is not enabled in _compiler_options.dm. */ +#warn TG0001 qdel REFERENCE_TRACKING enabled #define QDEL_HINT_FINDREFERENCE 5 /// Behavior as [QDEL_HINT_FINDREFERENCE], but only if the GC fails and a hard delete is forced. #define QDEL_HINT_IFFAIL_FINDREFERENCE 6 #endif -#define GC_QUEUE_CHECK 1 -#define GC_QUEUE_HARDDELETE 2 -#define GC_QUEUE_COUNT 2 //increase this when adding more steps. +// Defines for the ssgarbage queues +#define GC_QUEUE_FILTER 1 //! short queue to filter out quick gc successes so they don't hang around in the main queue for 5 minutes +#define GC_QUEUE_CHECK 2 //! main queue that waits 5 minutes because thats the longest byond can hold a reference to our shit. +#define GC_QUEUE_HARDDELETE 3 //! short queue for things that hard delete instead of going thru the gc subsystem, this is purely so if they *can* softdelete, they will soft delete rather then wasting time with a hard delete. +#define GC_QUEUE_COUNT 3 //! Number of queues, used for allocating the nested lists. Don't forget to increase this if you add a new queue stage + + +// Defines for the ssgarbage queue items +#define GC_QUEUE_ITEM_QUEUE_TIME 1 //! Time this item entered the queue +#define GC_QUEUE_ITEM_REF 2 //! Ref to the item +#define GC_QUEUE_ITEM_GCD_DESTROYED 3 //! Item's gc_destroyed var value. Used to detect ref reuse. +#define GC_QUEUE_ITEM_INDEX_COUNT 3 //! Number of item indexes, used for allocating the nested lists. Don't forget to increase this if you add a new queue item index + +// Defines for the time an item has to get its reference cleaned before it fails the queue and moves to the next. +#define GC_FILTER_QUEUE (1 SECONDS) +#define GC_CHECK_QUEUE (5 MINUTES) +#define GC_DEL_QUEUE (10 SECONDS) + #define QDEL_ITEM_ADMINS_WARNED (1<<0) //! Set when admins are told about lag causing qdels in this type. #define QDEL_ITEM_SUSPENDED_FOR_LAG (1<<1) //! Set when a type can no longer be hard deleted on failure because of lag it causes while this happens. // Defines for the [gc_destroyed][/datum/var/gc_destroyed] var. -#define GC_QUEUED_FOR_QUEUING -1 #define GC_CURRENTLY_BEING_QDELETED -2 #define QDELING(X) (X.gc_destroyed) -#define QDELETED(X) (!X || X.gc_destroyed) +#define QDELETED(X) (isnull(X) || QDELING(X)) #define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) -//Qdel helper macros. -#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE) +// This is a bit hacky, we do it to avoid people relying on a return value for the macro +// If you need that you should use QDEL_IN_STOPPABLE instead +#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time); +#define QDEL_IN_STOPPABLE(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time, TIMER_STOPPABLE) #define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) -#define QDEL_NULL(item) if(item) {qdel(item); item = null} +#define QDEL_NULL(item) qdel(item); item = null #define QDEL_NULL_LIST QDEL_LIST_NULL #define QDEL_LIST_NULL(x) if(x) { for(var/y in x) { qdel(y) } ; x = null } #define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); } #define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(______qdel_list_wrapper), L), time, TIMER_STOPPABLE) #define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); } #define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); } - -/proc/______qdel_list_wrapper(list/L) //the underscores are to encourage people not to use this directly. - QDEL_LIST(L) diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 6474a946ef..84c6fbd8a7 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -127,6 +127,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define FIRE_PRIORITY_PING 10 #define FIRE_PRIORITY_AI 10 #define FIRE_PRIORITY_GARBAGE 15 +#define FIRE_PRIORITY_ASSETS 20 #define FIRE_PRIORITY_ALARM 20 #define FIRE_PRIORITY_CHARSETUP 25 #define FIRE_PRIORITY_AIRFLOW 30 diff --git a/code/_global_vars/misc.dm b/code/_global_vars/misc.dm index 6ece6be2d7..e767e04d97 100644 --- a/code/_global_vars/misc.dm +++ b/code/_global_vars/misc.dm @@ -1,9 +1,9 @@ GLOBAL_LIST_EMPTY(error_last_seen) GLOBAL_LIST_EMPTY(error_cooldown) -GLOBAL_DATUM_INIT(all_observable_events, /datum/all_observable_events, new) // This is a datum. It is not a list. -GLOBAL_DATUM_INIT(destroyed_event, /decl/observ/destroyed, new()) +//GLOBAL_DATUM_INIT(all_observable_events, /datum/all_observable_events, new) // This is a datum. It is not a list. +//GLOBAL_DATUM_INIT(destroyed_event, /decl/observ/destroyed, new()) GLOBAL_VAR_INIT(timezoneOffset, 0) // The difference betwen midnight (of the host computer) and 0 world.ticks. -GLOBAL_VAR_INIT(TAB, "    ") \ No newline at end of file +GLOBAL_VAR_INIT(TAB, "    ") diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index 76299d4879..2612477322 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -53,7 +53,7 @@ // atoms/items/objects can be pretty and whatnot var/atom/A = item if(output_icons && isicon(A.icon) && !ismob(A)) // mobs tend to have unusable icons - item_str += "\icon[A][bicon(A)] " + item_str += "[bicon(A)] " switch(determiners) if(DET_NONE) item_str += A.name if(DET_DEFINITE) item_str += "\the [A]" diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index a160069be4..1d3f8ed8d4 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -327,3 +327,32 @@ GLOBAL_LIST_EMPTY(mannequins) */ //Hexidecimal numbers var/global/list/hexNums = list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") + +// Many global vars aren't GLOB type. This puts them there to be more easily inspected. +GLOBAL_LIST_EMPTY(legacy_globals) + +/proc/populate_legacy_globals() + //Note: these lists cannot be changed to a new list anywhere in code! + //If they are, these will cause the old list to stay around! + //Check by searching for " =" in the entire codebase + GLOB.legacy_globals["player_list"] = player_list + GLOB.legacy_globals["mob_list"] = mob_list + GLOB.legacy_globals["human_mob_list"] = human_mob_list + GLOB.legacy_globals["silicon_mob_list"] = silicon_mob_list + GLOB.legacy_globals["ai_list"] = ai_list + GLOB.legacy_globals["living_mob_list"] = living_mob_list + GLOB.legacy_globals["dead_mob_list"] = dead_mob_list + GLOB.legacy_globals["observer_mob_list"] = observer_mob_list + GLOB.legacy_globals["listening_objects"] = listening_objects + GLOB.legacy_globals["cleanbot_reserved_turfs"] = cleanbot_reserved_turfs + GLOB.legacy_globals["cable_list"] = cable_list + GLOB.legacy_globals["landmarks_list"] = landmarks_list + GLOB.legacy_globals["event_triggers"] = event_triggers + GLOB.legacy_globals["side_effects"] = side_effects + GLOB.legacy_globals["mechas_list"] = mechas_list + GLOB.legacy_globals["mannequins_"] = mannequins_ + //visual nets + GLOB.legacy_globals["visual_nets"] = visual_nets + GLOB.legacy_globals["cameranet"] = cameranet + GLOB.legacy_globals["cultnet"] = cultnet + GLOB.legacy_globals["existing_solargrubs"] = existing_solargrubs diff --git a/code/_helpers/icons.dm b/code/_helpers/icons.dm index 9fd9e18500..b80e85c829 100644 --- a/code/_helpers/icons.dm +++ b/code/_helpers/icons.dm @@ -536,6 +536,13 @@ GLOBAL_LIST_EMPTY(cached_examine_icons) CRASH("get_dummy_savefile failed to create a dummy savefile: '[error]'") return get_dummy_savefile(from_failure = TRUE) + +/// Generate a filename for this asset +/// The same asset will always lead to the same asset name +/// (Generated names do not include file extention.) +/proc/generate_asset_name(file) + return "asset.[md5(fcopy_rsc(file))]" + /** * Converts an icon to base64. Operates by putting the icon in the iconCache savefile, * exporting it as text, and then parsing the base64 from that. @@ -655,12 +662,12 @@ GLOBAL_LIST_EMPTY(cached_examine_icons) //var/name = SANITIZE_FILENAME("[generate_asset_name(thing)].png") var/name = "[generate_asset_name(thing)].png" if (!SSassets.cache[name]) - register_asset(name, thing) + SSassets.transport.register_asset(name, thing) for (var/thing2 in targets) - send_asset(thing2, name) + SSassets.transport.send_assets(thing2, name) if(sourceonly) - return get_asset_url(name) - return "" + return SSassets.transport.get_asset_url(name) + return "" //its either an atom, image, or mutable_appearance, we want its icon var icon2collapse = thing.icon @@ -697,12 +704,12 @@ GLOBAL_LIST_EMPTY(cached_examine_icons) key = "[name_and_ref[3]].png" if(!SSassets.cache[key]) - register_asset(key, rsc_ref, file_hash, icon_path) + SSassets.transport.register_asset(key, rsc_ref, file_hash, icon_path) for (var/client_target in targets) - send_asset(client_target, key) + SSassets.transport.send_assets(client_target, key) if(sourceonly) - return get_asset_url(key) - return "" + return SSassets.transport.get_asset_url(key) + return "" /proc/icon2base64html(target, var/custom_classes = "") if (!target) diff --git a/code/_helpers/sorts/TimSort.dm b/code/_helpers/sorts/TimSort.dm index cfa55f0dfa..f3b065f2fd 100644 --- a/code/_helpers/sorts/TimSort.dm +++ b/code/_helpers/sorts/TimSort.dm @@ -8,10 +8,14 @@ if(toIndex <= 0) toIndex += L.len + 1 - sortInstance.L = L - sortInstance.cmp = cmp - sortInstance.associative = associative + var/datum/sort_instance/SI = GLOB.sortInstance + if(!SI) + SI = new - sortInstance.timSort(fromIndex, toIndex) + SI.L = L + SI.cmp = cmp + SI.associative = associative + + SI.timSort(fromIndex, toIndex) return L diff --git a/code/_helpers/sorts/__main.dm b/code/_helpers/sorts/__main.dm index 7fd0a505c7..41b5b7e749 100644 --- a/code/_helpers/sorts/__main.dm +++ b/code/_helpers/sorts/__main.dm @@ -9,13 +9,13 @@ #define MIN_GALLOP 7 //This is a global instance to allow much of this code to be reused. The interfaces are kept separately -var/datum/sortInstance/sortInstance = new() -/datum/sortInstance +GLOBAL_DATUM_INIT(sortInstance, /datum/sort_instance, new()) +/datum/sort_instance //The array being sorted. var/list/L //The comparator proc-reference - var/cmp = /proc/cmp_numeric_asc + var/cmp = GLOBAL_PROC_REF(cmp_numeric_asc) //whether we are sorting list keys (0: L[i]) or associated values (1: L[L[i]]) var/associative = 0 @@ -32,7 +32,7 @@ var/datum/sortInstance/sortInstance = new() var/list/runLens = list() -/datum/sortInstance/proc/timSort(start, end) +/datum/sort_instance/proc/timSort(start, end) runBases.Cut() runLens.Cut() @@ -97,7 +97,7 @@ lo the index of the first element in the range to be sorted hi the index after the last element in the range to be sorted start the index of the first element in the range that is not already known to be sorted */ -/datum/sortInstance/proc/binarySort(lo, hi, start) +/datum/sort_instance/proc/binarySort(lo, hi, start) //ASSERT(lo <= start && start <= hi) if(start <= lo) start = lo + 1 @@ -135,7 +135,7 @@ For its intended use in a stable mergesort, the strictness of the definition of "descending" is needed so that the call can safely reverse a descending sequence without violating stability. */ -/datum/sortInstance/proc/countRunAndMakeAscending(lo, hi) +/datum/sort_instance/proc/countRunAndMakeAscending(lo, hi) //ASSERT(lo < hi) var/runHi = lo + 1 @@ -165,7 +165,7 @@ reverse a descending sequence without violating stability. //Returns the minimum acceptable run length for an array of the specified length. //Natural runs shorter than this will be extended with binarySort -/datum/sortInstance/proc/minRunLength(n) +/datum/sort_instance/proc/minRunLength(n) //ASSERT(n >= 0) var/r = 0 //becomes 1 if any bits are shifted off while(n >= MIN_MERGE) @@ -178,7 +178,7 @@ reverse a descending sequence without violating stability. // runLen[i-2] > runLen[i-1] //This method is called each time a new run is pushed onto the stack. //So the invariants are guaranteed to hold for i= 2) var/n = runBases.len - 1 if(n > 1 && runLens[n-1] <= runLens[n] + runLens[n+1]) @@ -193,7 +193,7 @@ reverse a descending sequence without violating stability. //Merges all runs on the stack until only one remains. //Called only once, to finalise the sort -/datum/sortInstance/proc/mergeForceCollapse() +/datum/sort_instance/proc/mergeForceCollapse() while(runBases.len >= 2) var/n = runBases.len - 1 if(n > 1 && runLens[n-1] < runLens[n+1]) @@ -204,7 +204,7 @@ reverse a descending sequence without violating stability. //Merges the two consecutive runs at stack indices i and i+1 //Run i must be the penultimate or antepenultimate run on the stack //In other words, i must be equal to stackSize-2 or stackSize-3 -/datum/sortInstance/proc/mergeAt(i) +/datum/sort_instance/proc/mergeAt(i) //ASSERT(runBases.len >= 2) //ASSERT(i >= 1) //ASSERT(i == runBases.len - 1 || i == runBases.len - 2) @@ -258,7 +258,7 @@ reverse a descending sequence without violating stability. Returns the index at which to insert element 'key' */ -/datum/sortInstance/proc/gallopLeft(key, base, len, hint) +/datum/sort_instance/proc/gallopLeft(key, base, len, hint) //ASSERT(len > 0 && hint >= 0 && hint < len) var/lastOffset = 0 @@ -317,7 +317,7 @@ reverse a descending sequence without violating stability. * @param c the comparator used to order the range, and to search * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] */ -/datum/sortInstance/proc/gallopRight(key, base, len, hint) +/datum/sort_instance/proc/gallopRight(key, base, len, hint) //ASSERT(len > 0 && hint >= 0 && hint < len) var/offset = 1 @@ -369,7 +369,7 @@ reverse a descending sequence without violating stability. //Merges two adjacent runs in-place in a stable fashion. //For performance this method should only be called when len1 <= len2! -/datum/sortInstance/proc/mergeLo(base1, len1, base2, len2) +/datum/sort_instance/proc/mergeLo(base1, len1, base2, len2) //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) var/cursor1 = base1 @@ -471,7 +471,7 @@ reverse a descending sequence without violating stability. //ASSERT(len1 > 1) -/datum/sortInstance/proc/mergeHi(base1, len1, base2, len2) +/datum/sort_instance/proc/mergeHi(base1, len1, base2, len2) //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) var/cursor1 = base1 + len1 - 1 //start at end of sublists @@ -571,7 +571,7 @@ reverse a descending sequence without violating stability. //ASSERT(len2 > 0) -/datum/sortInstance/proc/mergeSort(start, end) +/datum/sort_instance/proc/mergeSort(start, end) var/remaining = end - start //If array is small, do an insertion sort @@ -616,7 +616,7 @@ reverse a descending sequence without violating stability. return L -/datum/sortInstance/proc/mergeAt2(i) +/datum/sort_instance/proc/mergeAt2(i) var/cursor1 = runBases[i] var/cursor2 = runBases[i+1] diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index 571bf281ce..1cda5c811f 100644 --- a/code/_helpers/text.dm +++ b/code/_helpers/text.dm @@ -348,10 +348,10 @@ return tagdesc if(!text_tag_cache[tagname]) var/icon/tag = icon(text_tag_icons, tagname) - text_tag_cache[tagname] = bicon(tag, TRUE, "text_tag") + text_tag_cache[tagname] = tag if(!C.tgui_panel.is_ready() || C.tgui_panel.oldchat) return "[tagdesc]" - return text_tag_cache[tagname] + return icon2html(text_tag_cache[tagname], C, extra_classes = "text_tag") /proc/create_text_tag_old(var/tagname, var/tagdesc = tagname, var/client/C = null) if(!(C && C.is_preference_enabled(/datum/client_preference/chat_tags))) diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index 8bd45bbfc7..9a54776afd 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -423,3 +423,9 @@ catch(var/exception/E) if(error_on_invalid_return) error("Exception when loading file as string: [E]") + + +/// Return html to load a url. +/// for use inside of browse() calls to html assets that might be loaded on a cdn. +/proc/url2htmlloader(url) + return {""} diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm index cb500b4fe3..7690b9d203 100644 --- a/code/_onclick/hud/ability_screen_objects.dm +++ b/code/_onclick/hud/ability_screen_objects.dm @@ -183,6 +183,13 @@ if(!ability_master) //VOREStation Edit: S H A D E K I N ability_master = new /obj/screen/movable/ability_master(src) + +/mob/Destroy() + ..() + if(ability_master) + QDEL_NULL(ability_master) + + ///////////ACTUAL ABILITIES//////////// //This is what you click to do things// /////////////////////////////////////// @@ -383,4 +390,4 @@ A.name = object_given.name ability_objects.Add(A) if(my_mob.client) - toggle_open(2) //forces the icons to refresh on screen \ No newline at end of file + toggle_open(2) //forces the icons to refresh on screen diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index f89d400147..5090608504 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -24,7 +24,8 @@ ManualFollow(A) // Otherwise jump else - following = null + if(following) + stop_following() forceMove(get_turf(A)) /mob/observer/dead/ClickOn(var/atom/A, var/params) @@ -68,9 +69,9 @@ // VOREStation Edit Begin -/obj/machinery/gateway/centerstation/attack_ghost(mob/user as mob) - if(awaygate) - if(user.client.holder) +/obj/machinery/gateway/centerstation/attack_ghost(mob/user as mob) + if(awaygate) + if(user.client.holder) user.loc = awaygate.loc else if(active) user.loc = awaygate.loc diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index b4b5d955e7..9553b02ff4 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -304,6 +304,18 @@ var/list/gamemode_cache = list() var/static/invoke_youtubedl = null + var/static/asset_transport + + var/static/cache_assets = FALSE + + var/static/save_spritesheets = FALSE + + var/static/asset_simple_preload = FALSE + + var/static/asset_cdn_webroot + + var/static/asset_cdn_url + /datum/configuration/New() var/list/L = subtypesof(/datum/game_mode) for (var/T in L) @@ -979,6 +991,24 @@ var/list/gamemode_cache = list() if("invoke_youtubedl") config.invoke_youtubedl = value + if("asset_transport") + config.asset_transport = value + + if("cache_assets") + config.cache_assets = TRUE + + if("save_spritesheets") + config.save_spritesheets = TRUE + + if("asset_simple_preload") + config.asset_simple_preload = TRUE + + if("asset_cdn_webroot") + config.asset_cdn_webroot = value + + if("asset_cdn_url") + config.asset_cdn_url = value + else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 6b7c0b4137..cd6e7544dd 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -62,3 +62,5 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) var/end_tick = world.time if(end_tick - start_tick) warning("Global [replacetext("[I]", "InitGlobal", "")] slept during initialization!") + + populate_legacy_globals() diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 6d66e04789..9b2df0d24f 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -278,7 +278,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new //(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add) sortTim(tickersubsystems, GLOBAL_PROC_REF(cmp_subsystem_priority)) for(var/I in runlevel_sorted_subsystems) - sortTim(runlevel_sorted_subsystems, GLOBAL_PROC_REF(cmp_subsystem_priority)) + sortTim(I, GLOBAL_PROC_REF(cmp_subsystem_priority)) I += tickersubsystems var/cached_runlevel = current_runlevel diff --git a/code/controllers/subsystems/asset_loading.dm b/code/controllers/subsystems/asset_loading.dm new file mode 100644 index 0000000000..2d2939de4b --- /dev/null +++ b/code/controllers/subsystems/asset_loading.dm @@ -0,0 +1,28 @@ +/// Allows us to lazyload asset datums +/// Anything inserted here will fully load if directly gotten +/// So this just serves to remove the requirement to load assets fully during init +SUBSYSTEM_DEF(asset_loading) + name = "Asset Loading" + priority = FIRE_PRIORITY_ASSETS + flags = SS_NO_INIT + runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT + var/list/datum/asset/generate_queue = list() + +/datum/controller/subsystem/asset_loading/fire(resumed) + while(length(generate_queue)) + var/datum/asset/to_load = generate_queue[generate_queue.len] + + to_load.queued_generation() + + if(MC_TICK_CHECK) + return + generate_queue.len-- + +/datum/controller/subsystem/asset_loading/proc/queue_asset(datum/asset/queue) +#ifdef DO_NOT_DEFER_ASSETS + stack_trace("We queued an instance of [queue.type] for lateloading despite not allowing it") +#endif + generate_queue += queue + +/datum/controller/subsystem/asset_loading/proc/dequeue_asset(datum/asset/queue) + generate_queue -= queue diff --git a/code/controllers/subsystems/assets.dm b/code/controllers/subsystems/assets.dm index 522deae177..49e8a8f578 100644 --- a/code/controllers/subsystems/assets.dm +++ b/code/controllers/subsystems/assets.dm @@ -2,17 +2,39 @@ SUBSYSTEM_DEF(assets) name = "Assets" init_order = INIT_ORDER_ASSETS flags = SS_NO_FIRE - var/list/cache = list() + var/list/datum/asset_cache_item/cache = list() var/list/preload = list() + var/datum/asset_transport/transport = new() -/datum/controller/subsystem/assets/Initialize(timeofday) - for(var/typepath in typesof(/datum/asset)) - var/datum/asset/A = typepath - if (typepath != initial(A._abstract)) - get_asset_datum(typepath) +/datum/controller/subsystem/assets/proc/OnConfigLoad() + var/newtransporttype = /datum/asset_transport + switch (config.asset_transport) + if ("webroot") + newtransporttype = /datum/asset_transport/webroot - preload = cache.Copy() //don't preload assets generated during the round + if (newtransporttype == transport.type) + return - for(var/client/C in GLOB.clients) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(getFilesSlow), C, preload, FALSE), 10) - return ..() + var/datum/asset_transport/newtransport = new newtransporttype () + if (newtransport.validate_config()) + transport = newtransport + transport.Load() + + + +/datum/controller/subsystem/assets/Initialize() + OnConfigLoad() + + for(var/type in typesof(/datum/asset)) + var/datum/asset/A = type + if (type != initial(A._abstract)) + load_asset_datum(type) + + transport.Initialize(cache) + + subsystem_initialized = TRUE + return SS_INIT_SUCCESS + +/datum/controller/subsystem/assets/Recover() + cache = SSassets.cache + preload = SSassets.preload diff --git a/code/controllers/subsystems/garbage.dm b/code/controllers/subsystems/garbage.dm index 400a61b0f9..a4bc5ee17d 100644 --- a/code/controllers/subsystems/garbage.dm +++ b/code/controllers/subsystems/garbage.dm @@ -1,3 +1,26 @@ +/*! +## Debugging GC issues + +In order to debug `qdel()` failures, there are several tools available. +To enable these tools, define `TESTING` in [_compile_options.dm](https://github.com/tgstation/-tg-station/blob/master/code/_compile_options.dm). + +First is a verb called "Find References", which lists **every** refererence to an object in the world. This allows you to track down any indirect or obfuscated references that you might have missed. + +Complementing this is another verb, "qdel() then Find References". +This does exactly what you'd expect; it calls `qdel()` on the object and then it finds all references remaining. +This is great, because it means that `Destroy()` will have been called before it starts to find references, +so the only references you'll find will be the ones preventing the object from `qdel()`ing gracefully. + +If you have a datum or something you are not destroying directly (say via the singulo), +the next tool is `QDEL_HINT_FINDREFERENCE`. You can return this in `Destroy()` (where you would normally `return ..()`), +to print a list of references once it enters the GC queue. + +Finally is a verb, "Show qdel() Log", which shows the deletion log that the garbage subsystem keeps. This is helpful if you are having race conditions or need to review the order of deletions. + +Note that for any of these tools to work `TESTING` must be defined. +By using these methods of finding references, you can make your life far, far easier when dealing with `qdel()` failures. +*/ + SUBSYSTEM_DEF(garbage) name = "Garbage" priority = FIRE_PRIORITY_GARBAGE @@ -5,8 +28,9 @@ SUBSYSTEM_DEF(garbage) flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY init_order = INIT_ORDER_GARBAGE +// init_stage = INITSTAGE_EARLY - var/list/collection_timeout = list(2 MINUTES, 10 SECONDS) // deciseconds to wait before moving something up in the queue to the next level + var/list/collection_timeout = list(GC_FILTER_QUEUE, GC_CHECK_QUEUE, GC_DEL_QUEUE) // deciseconds to wait before moving something up in the queue to the next level //Stat tracking var/delslasttick = 0 // number of del()'s we've done this tick @@ -26,18 +50,16 @@ SUBSYSTEM_DEF(garbage) var/list/queues #ifdef REFERENCE_TRACKING var/list/reference_find_on_fail = list() + #ifdef REFERENCE_TRACKING_DEBUG + //Should we save found refs. Used for unit testing + var/should_save_refs = FALSE + #endif var/find_reference_on_fail_global_toggle = FALSE #endif /datum/controller/subsystem/garbage/PreInit() - queues = new(GC_QUEUE_COUNT) - pass_counts = new(GC_QUEUE_COUNT) - fail_counts = new(GC_QUEUE_COUNT) - for(var/i in 1 to GC_QUEUE_COUNT) - queues[i] = list() - pass_counts[i] = 0 - fail_counts[i] = 0 + InitQueues() /datum/controller/subsystem/garbage/stat_entry(msg) var/list/counts = list() @@ -61,39 +83,48 @@ SUBSYSTEM_DEF(garbage) /datum/controller/subsystem/garbage/Shutdown() //Adds the del() log to the qdel log file - var/list/dellog = list() + var/list/del_log = list() //sort by how long it's wasted hard deleting sortTim(items, cmp=/proc/cmp_qdel_item_time, associative = TRUE) for(var/path in items) var/datum/qdel_item/I = items[path] - dellog += "Path: [path]" + var/list/entry = list() + del_log[path] = entry + if (I.qdel_flags & QDEL_ITEM_SUSPENDED_FOR_LAG) - dellog += "\tSUSPENDED FOR LAG" + entry["SUSPENDED FOR LAG"] = TRUE if (I.failures) - dellog += "\tFailures: [I.failures]" - dellog += "\tqdel() Count: [I.qdels]" - dellog += "\tDestroy() Cost: [I.destroy_time]ms" + entry["Failures"] = I.failures + entry["qdel() Count"] = I.qdels + entry["Destroy() Cost (ms)"] = I.destroy_time + if (I.hard_deletes) - dellog += "\tTotal Hard Deletes: [I.hard_deletes]" - dellog += "\tTime Spent Hard Deleting: [I.hard_delete_time]ms" - dellog += "\tHighest Time Spent Hard Deleting: [I.hard_delete_max]ms" + entry["Total Hard Deletes"] = I.hard_deletes + entry["Time Spend Hard Deleting (ms)"] = I.hard_delete_time + entry["Highest Time Spend Hard Deleting (ms)"] = I.hard_delete_max if (I.hard_deletes_over_threshold) - dellog += "\tHard Deletes Over Threshold: [I.hard_deletes_over_threshold]" + entry["Hard Deletes Over Threshold"] = I.hard_deletes_over_threshold if (I.slept_destroy) - dellog += "\tSleeps: [I.slept_destroy]" + entry["Total Sleeps"] = I.slept_destroy if (I.no_respect_force) - dellog += "\tIgnored force: [I.no_respect_force] times" + entry["Total Ignored Force"] = I.no_respect_force if (I.no_hint) - dellog += "\tNo hint: [I.no_hint] times" - text2file(dellog.Join(), "[log_path]-qdel.log") + entry["Total No Hint"] = I.no_hint + if(LAZYLEN(I.extra_details)) + entry["Deleted Metadata"] = I.extra_details + + log_debug("", del_log) /datum/controller/subsystem/garbage/fire() //the fact that this resets its processing each fire (rather then resume where it left off) is intentional. - var/queue = GC_QUEUE_CHECK + var/queue = GC_QUEUE_FILTER while (state == SS_RUNNING) switch (queue) + if (GC_QUEUE_FILTER) + HandleQueue(GC_QUEUE_FILTER) + queue = GC_QUEUE_FILTER+1 if (GC_QUEUE_CHECK) HandleQueue(GC_QUEUE_CHECK) queue = GC_QUEUE_CHECK+1 @@ -103,8 +134,21 @@ SUBSYSTEM_DEF(garbage) state = SS_RUNNING break -/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK) - if (level == GC_QUEUE_CHECK) + + +/datum/controller/subsystem/garbage/proc/InitQueues() + if (isnull(queues)) // Only init the queues if they don't already exist, prevents overriding of recovered lists + queues = new(GC_QUEUE_COUNT) + pass_counts = new(GC_QUEUE_COUNT) + fail_counts = new(GC_QUEUE_COUNT) + for(var/i in 1 to GC_QUEUE_COUNT) + queues[i] = list() + pass_counts[i] = 0 + fail_counts[i] = 0 + + +/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_FILTER) + if (level == GC_QUEUE_FILTER) delslasttick = 0 gcedlasttick = 0 var/cut_off_time = world.time - collection_timeout[level] //ignore entries newer then this @@ -119,30 +163,33 @@ SUBSYSTEM_DEF(garbage) lastlevel = level - //We do this rather then for(var/refID in queue) because that sort of for loop copies the whole list. +// 1 from the hard reference in the queue, and 1 from the variable used before this +#define REFS_WE_EXPECT 2 + + //We do this rather then for(var/list/ref_info in queue) because that sort of for loop copies the whole list. //Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun. for (var/i in 1 to length(queue)) var/list/L = queue[i] - if (length(L) < 2) + if (length(L) < GC_QUEUE_ITEM_INDEX_COUNT) count++ if (MC_TICK_CHECK) return continue - var/GCd_at_time = L[1] - if(GCd_at_time > cut_off_time) + var/queued_at_time = L[GC_QUEUE_ITEM_QUEUE_TIME] + if(queued_at_time > cut_off_time) break // Everything else is newer, skip them count++ - var/refID = L[2] - var/datum/D - D = locate(refID) - if (!D || D.gc_destroyed != GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake + var/datum/D = L[GC_QUEUE_ITEM_REF] + + // If that's all we've got, send er off + if (refcount(D) == REFS_WE_EXPECT) ++gcedlasttick ++totalgcs pass_counts[level]++ #ifdef REFERENCE_TRACKING - reference_find_on_fail -= refID //It's deleted we don't care anymore. + reference_find_on_fail -= ref(D) //It's deleted we don't care anymore. #endif if (MC_TICK_CHECK) return @@ -158,22 +205,33 @@ SUBSYSTEM_DEF(garbage) switch (level) if (GC_QUEUE_CHECK) #ifdef REFERENCE_TRACKING - if(reference_find_on_fail[refID]) - INVOKE_ASYNC(D, /datum/proc/find_references) + // Decides how many refs to look for (potentially) + // Based off the remaining and the ones we can account for + var/remaining_refs = refcount(D) - REFS_WE_EXPECT + if(reference_find_on_fail[ref(D)]) + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum,find_references), remaining_refs) ref_searching = TRUE #ifdef GC_FAILURE_HARD_LOOKUP else - INVOKE_ASYNC(D, /datum/proc/find_references) + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum,find_references), remaining_refs) ref_searching = TRUE #endif - reference_find_on_fail -= refID + reference_find_on_fail -= ref(D) #endif var/type = D.type var/datum/qdel_item/I = items[type] - log_world("## TESTING: GC: -- \ref[D] | [type] was unable to be GC'd --") + var/message = "## TESTING: GC: -- [ref(D)] | [type] was unable to be GC'd --" + message = "[message] (ref count of [refcount(D)])" + log_world(message) + + /*var/detail = D.dump_harddel_info() + if(detail) + LAZYADD(I.extra_details, detail)*/ + #ifdef TESTING - for(var/client/admin as anything in GLOB.admins) //Using testing() here would fill the logs with ADMIN_VV garbage + for(var/c in GLOB.admins) //Using testing() here would fill the logs with ADMIN_VV garbage + var/client/admin = c if(!check_rights_for(admin, R_ADMIN)) continue to_chat(admin, "## TESTING: GC: -- [ADMIN_VV(D)] | [type] was unable to be GC'd --") @@ -205,36 +263,41 @@ SUBSYSTEM_DEF(garbage) queue.Cut(1,count+1) count = 0 -/datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_CHECK) +#undef REFS_WE_EXPECT + +/datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_FILTER) if (isnull(D)) return if (level > GC_QUEUE_COUNT) HardDelete(D) return - var/gctime = world.time - var/refid = "\ref[D]" + var/queue_time = world.time + + if (D.gc_destroyed <= 0) + D.gc_destroyed = queue_time - D.gc_destroyed = gctime var/list/queue = queues[level] - - queue[++queue.len] = list(gctime, refid) // not += for byond reasons + queue[++queue.len] = list(queue_time, D, D.gc_destroyed) // not += for byond reasons //this is mainly to separate things profile wise. /datum/controller/subsystem/garbage/proc/HardDelete(datum/D) ++delslasttick ++totaldels var/type = D.type - var/refID = "\ref[D]" + var/refID = ref(D) + var/datum/qdel_item/type_info = items[type] + /*var/detail = D.dump_harddel_info() + if(detail) + LAZYADD(type_info.extra_details, detail)*/ var/tick_usage = TICK_USAGE del(D) tick_usage = TICK_USAGE_TO_MS(tick_usage) - var/datum/qdel_item/I = items[type] - I.hard_deletes++ - I.hard_delete_time += tick_usage - if (tick_usage > I.hard_delete_max) - I.hard_delete_max = tick_usage + type_info.hard_deletes++ + type_info.hard_delete_time += tick_usage + if (tick_usage > type_info.hard_delete_max) + type_info.hard_delete_max = tick_usage if (tick_usage > highest_del_ms) highest_del_ms = tick_usage highest_del_type_string = "[type]" @@ -245,15 +308,17 @@ SUBSYSTEM_DEF(garbage) postpone(time) var/threshold = 0.5 // Default, make a config if (threshold && (time > threshold SECONDS)) - if (!(I.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) - log_and_message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") - I.qdel_flags |= QDEL_ITEM_ADMINS_WARNED - I.hard_deletes_over_threshold++ + if (!(type_info.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) + log_game("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") + message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete).") + type_info.qdel_flags |= QDEL_ITEM_ADMINS_WARNED + type_info.hard_deletes_over_threshold++ var/overrun_limit = 0 // Default, make a config - if (overrun_limit && I.hard_deletes_over_threshold >= overrun_limit) - I.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG + if (overrun_limit && type_info.hard_deletes_over_threshold >= overrun_limit) + type_info.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG /datum/controller/subsystem/garbage/Recover() + InitQueues() //We first need to create the queues before recovering data if (istype(SSgarbage.queues)) for (var/i in 1 to SSgarbage.queues.len) queues[i] |= SSgarbage.queues[i] @@ -272,79 +337,85 @@ SUBSYSTEM_DEF(garbage) var/no_hint = 0 //!Number of times it's not even bother to give a qdel hint var/slept_destroy = 0 //!Number of times it's slept in its destroy var/qdel_flags = 0 //!Flags related to this type's trip thru qdel. + var/list/extra_details //!Lazylist of string metadata about the deleted objects /datum/qdel_item/New(mytype) name = "[mytype]" - /// Should be treated as a replacement for the 'del' keyword. /// /// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. -/proc/qdel(datum/D, force=FALSE, ...) - if(!istype(D)) - del(D) +/proc/qdel(datum/to_delete, force = FALSE) + if(!istype(to_delete)) + del(to_delete) return - var/datum/qdel_item/I = SSgarbage.items[D.type] - if (!I) - I = SSgarbage.items[D.type] = new /datum/qdel_item(D.type) - I.qdels++ + var/datum/qdel_item/trash = SSgarbage.items[to_delete.type] + if (isnull(trash)) + trash = SSgarbage.items[to_delete.type] = new /datum/qdel_item(to_delete.type) + trash.qdels++ - if(isnull(D.gc_destroyed)) - if (SEND_SIGNAL(D, COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted + if(!isnull(to_delete.gc_destroyed)) + if(to_delete.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) + CRASH("[to_delete.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") + return + + if (SEND_SIGNAL(to_delete, COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted + return + + to_delete.gc_destroyed = GC_CURRENTLY_BEING_QDELETED + var/start_time = world.time + var/start_tick = world.tick_usage + SEND_SIGNAL(to_delete, COMSIG_PARENT_QDELETING, force) // Let the (remaining) components know about the result of Destroy + var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up. + + if(world.time != start_time) + trash.slept_destroy++ + else + trash.destroy_time += TICK_USAGE_TO_MS(start_tick) + + if(isnull(to_delete)) + return + + switch(hint) + if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. + SSgarbage.Queue(to_delete) + if (QDEL_HINT_IWILLGC) + to_delete.gc_destroyed = world.time return - D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED - var/start_time = world.time - var/start_tick = world.tick_usage - SEND_SIGNAL(D, COMSIG_PARENT_QDELETING, force) // Let the (remaining) components know about the result of Destroy - var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. - if(world.time != start_time) - I.slept_destroy++ - else - I.destroy_time += TICK_USAGE_TO_MS(start_tick) - if(!D) - return - switch(hint) - if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. - SSgarbage.Queue(D) - if (QDEL_HINT_IWILLGC) - D.gc_destroyed = world.time + if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. + if(!force) + to_delete.gc_destroyed = null //clear the gc variable (important!) return - if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. - if(!force) - D.gc_destroyed = null //clear the gc variable (important!) - return - // Returning LETMELIVE after being told to force destroy - // indicates the objects Destroy() does not respect force - #ifdef TESTING - if(!I.no_respect_force) - testing("WARNING: [D.type] has been force deleted, but is \ - returning an immortal QDEL_HINT, indicating it does \ - not respect the force flag for qdel(). It has been \ - placed in the queue, further instances of this type \ - will also be queued.") - #endif - I.no_respect_force++ - - SSgarbage.Queue(D) - if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete - SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) - if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. - SSgarbage.HardDelete(D) - #ifdef REFERENCE_TRACKING - if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.Queue(D) - D.find_references() - if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. - SSgarbage.Queue(D) - SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE + // Returning LETMELIVE after being told to force destroy + // indicates the objects Destroy() does not respect force + #ifdef TESTING + if(!trash.no_respect_force) + testing("WARNING: [to_delete.type] has been force deleted, but is \ + returning an immortal QDEL_HINT, indicating it does \ + not respect the force flag for qdel(). It has been \ + placed in the queue, further instances of this type \ + will also be queued.") #endif - else - #ifdef TESTING - if(!I.no_hint) - testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") - #endif - I.no_hint++ - SSgarbage.Queue(D) - else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") + trash.no_respect_force++ + + SSgarbage.Queue(to_delete) + if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete + SSgarbage.Queue(to_delete, GC_QUEUE_HARDDELETE) + if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. + SSgarbage.HardDelete(to_delete) + #ifdef REFERENCE_TRACKING + if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. + SSgarbage.Queue(to_delete) + INVOKE_ASYNC(to_delete, TYPE_PROC_REF(/datum, find_references)) + if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. + SSgarbage.Queue(to_delete) + SSgarbage.reference_find_on_fail[ref(to_delete)] = TRUE + #endif + else + #ifdef TESTING + if(!trash.no_hint) + testing("WARNING: [to_delete.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") + #endif + trash.no_hint++ + SSgarbage.Queue(to_delete) diff --git a/code/controllers/subsystems/overlays.dm b/code/controllers/subsystems/overlays.dm index 25dbfbd62a..9d840933cb 100644 --- a/code/controllers/subsystems/overlays.dm +++ b/code/controllers/subsystems/overlays.dm @@ -77,23 +77,31 @@ SUBSYSTEM_DEF(overlays) var/list/result = list() var/icon/icon = subject.icon for (var/atom/entry as anything in sources) - if (!entry) - continue - else if (istext(entry)) - result += GetStateAppearance(icon, entry) - else if (isicon(entry)) - result += GetIconAppearance(entry) - else - if (isloc(entry)) - if (entry.flags & OVERLAY_QUEUED) - entry.ImmediateOverlayUpdate() - if (!ispath(entry)) - result += entry.appearance - else - var/image/image = entry - result += image.appearance + AppearanceListEntry(entry, result, icon) return result +//Fixes runtime with overlays present in 515 +/datum/controller/subsystem/overlays/proc/AppearanceListEntry(var/atom/entry,var/list/result,var/icon/icon) + if (!entry) + return + else if(islist(entry)) + var/list/entry_list = entry + for(var/entry_item in entry_list) + AppearanceListEntry(entry_item) + else if (istext(entry)) + result += GetStateAppearance(icon, entry) + else if (isicon(entry)) + result += GetIconAppearance(entry) + else + if (isloc(entry)) + if (entry.flags & OVERLAY_QUEUED) + entry.ImmediateOverlayUpdate() + if (!ispath(entry)) + if(entry.appearance) + result += entry.appearance + else + var/image/image = entry + result += image.appearance /// Enqueues the atom for an overlay update if not already queued /atom/proc/QueueOverlayUpdate() diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm index 40a1239acc..ecba4221fc 100644 --- a/code/datums/chat_message.dm +++ b/code/datums/chat_message.dm @@ -148,14 +148,14 @@ var/list/runechat_image_cache = list() // Append prefixes if(extra_classes.Find("virtual-speaker")) - LAZYADD(prefixes, "\icon[runechat_image_cache["radio"]]") + LAZYADD(prefixes, "[icon2html(runechat_image_cache["radio"],owner.client)]") if(extra_classes.Find("emote")) // Icon on both ends? //var/image/I = runechat_image_cache["emote"] - //text = "\icon[I][text]\icon[I]" + //text = "icon2html(I)[text]icon2html(I)" // Icon on one end? - //LAZYADD(prefixes, "\icon[runechat_image_cache["emote"]]") + //LAZYADD(prefixes, "icon2html(runechat_image_cache["emote")]") // Asterisks instead? text = "* [text] *" diff --git a/code/datums/components/recursive_move.dm b/code/datums/components/recursive_move.dm new file mode 100644 index 0000000000..cf26942495 --- /dev/null +++ b/code/datums/components/recursive_move.dm @@ -0,0 +1,119 @@ +/** + * Recursive move listener + * Can be added willy-nilly to anything where the COMSIG_OBSERVER_MOVE signal should also trigger on a parent moving. + * Previously there was a system where COMSIG_OBSERVER_MOVE was always recursively propogated, but that was unnecessary bloat. + */ +/datum/component/recursive_move + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS //This makes it so pretty much nothing happens when a duplicate component is created since we don't actually override InheritComponent + var/atom/movable/holder + var/list/parents = list() + var/noparents = FALSE + +/datum/component/recursive_move/RegisterWithParent() + . = ..() + holder = parent + RegisterSignal(holder, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + spawn(0) // Delayed action if our holder is spawned in nullspace and then loc = target, hopefully this catches it. VV Add item does this, for example. + if(!QDELETED(src)) + setup_parents() + +/datum/component/recursive_move/proc/setup_parents() + if(length(parents)) // safety check just incase this was called without clearing + reset_parents() + var/atom/movable/cur_parent = holder?.loc // first loc could be null + var/recursion = 0 // safety check - max iterations + while(istype(cur_parent) && (recursion < 64)) + if(cur_parent == cur_parent.loc) //safety check incase a thing is somehow inside itself, cancel + log_debug("RECURSIVE_MOVE: Parent is inside itself. ([holder]) ([holder.type])") + reset_parents() + break + if(cur_parent in parents) //safety check incase of circular contents. (A inside B, B inside C, C inside A), cancel + log_debug("RECURSIVE_MOVE: Parent is inside a circular inventory. ([holder]) ([holder.type])") + reset_parents() + break + recursion++ + parents += cur_parent + RegisterSignal(cur_parent, COMSIG_ATOM_EXITED, PROC_REF(heirarchy_changed)) + RegisterSignal(cur_parent, COMSIG_PARENT_QDELETING, PROC_REF(on_qdel)) + + cur_parent = cur_parent.loc + + if(recursion >= 64) // If we escaped due to iteration limit, cancel + log_debug("RECURSIVE_MOVE: Parent hit recursion limit. ([holder]) ([holder.type])") + reset_parents() + parents.Cut() + + if(length(parents)) + //Only need to watch top parent for movement. Everything is covered by Exited + RegisterSignal(parents[parents.len], COMSIG_ATOM_ENTERING, PROC_REF(top_moved)) + + //If we have no parents of type atom/movable then we wait to see if that changes, checking every time our holder moves. + if(!length(parents) && !noparents) + noparents = TRUE + RegisterSignal(holder, COMSIG_ATOM_ENTERING, PROC_REF(setup_parents)) + + if(length(parents) && noparents) + noparents = FALSE + UnregisterSignal(holder, COMSIG_ATOM_ENTERING) + + +/datum/component/recursive_move/proc/unregister_signals() + if(noparents) // safety check + noparents = FALSE + UnregisterSignal(holder, COMSIG_ATOM_ENTERING) + if(!length(parents)) + return + for(var/atom/movable/cur_parent in parents) + UnregisterSignal(cur_parent, COMSIG_PARENT_QDELETING) + UnregisterSignal(cur_parent, COMSIG_ATOM_EXITED) + + UnregisterSignal(parents[parents.len], COMSIG_ATOM_ENTERING) + +//Parent at top of heirarchy moved. +/datum/component/recursive_move/proc/top_moved(var/atom/movable/am, var/atom/new_loc, var/atom/old_loc) + SIGNAL_HANDLER + SEND_SIGNAL(holder, COMSIG_OBSERVER_MOVED, old_loc, new_loc) + +//One of the parents other than the top parent moved. +/datum/component/recursive_move/proc/heirarchy_changed(var/atom/old_loc, var/atom/movable/am, var/atom/new_loc) + SIGNAL_HANDLER + SEND_SIGNAL(holder, COMSIG_OBSERVER_MOVED, old_loc, new_loc) + //Rebuild our list of parents + reset_parents() + setup_parents() + +//Some things will move their contents on qdel so we should prepare ourselves to be moved. +//If this qdel does destroy our holder, on_holder_qdel will handle preperations for GC +/datum/component/recursive_move/proc/on_qdel() + reset_parents() + noparents = TRUE + RegisterSignal(holder, COMSIG_ATOM_ENTERING, PROC_REF(setup_parents)) + +/datum/component/recursive_move/proc/on_holder_qdel() + UnregisterSignal(holder, COMSIG_PARENT_QDELETING) + reset_parents() + holder = null + qdel(src) + +/datum/component/recursive_move/Destroy() + . = ..() + reset_parents() + if(holder) UnregisterSignal(holder, COMSIG_PARENT_QDELETING) + holder = null + +/datum/component/recursive_move/proc/reset_parents() + unregister_signals() + parents.Cut() + +//the banana peel of testing stays +/obj/item/weapon/bananapeel/testing + name = "banana peel of testing" + desc = "spams world log with debugging information" + +/obj/item/weapon/bananapeel/testing/proc/shmove(var/atom/source, var/atom/old_loc, var/atom/new_loc) + world.log << "the [source] moved from [old_loc]([old_loc.x],[old_loc.y],[old_loc.z]) to [new_loc]([new_loc.x],[new_loc.y],[new_loc.z])" + +/obj/item/weapon/bananapeel/testing/Initialize() + . = ..() + AddComponent(/datum/component/recursive_move) + RegisterSignal(src, COMSIG_OBSERVER_MOVED, PROC_REF(shmove)) diff --git a/code/datums/observation/_debug.dm b/code/datums/observation/_debug.dm deleted file mode 100644 index 5b805aa930..0000000000 --- a/code/datums/observation/_debug.dm +++ /dev/null @@ -1,10 +0,0 @@ -/**************** -* Debug Support * -****************/ - -/datum/all_observable_events - var/list/events - -/datum/all_observable_events/New() - events = list() - ..() diff --git a/code/datums/observation/_defines.dm b/code/datums/observation/_defines.dm deleted file mode 100644 index 902d655870..0000000000 --- a/code/datums/observation/_defines.dm +++ /dev/null @@ -1 +0,0 @@ -#define CANCEL_MOVE_EVENT -55 diff --git a/code/datums/observation/destroyed.dm b/code/datums/observation/destroyed.dm index 650909f86d..9846eda6da 100644 --- a/code/datums/observation/destroyed.dm +++ b/code/datums/observation/destroyed.dm @@ -5,11 +5,12 @@ // // Arguments that the called proc should expect: // /datum/destroyed_instance: The instance that was destroyed. - +/* /decl/observ/destroyed name = "Destroyed" +*/ +//Deprecated in favor of Comsigs /datum/Destroy() - if(GLOB.destroyed_event) - GLOB.destroyed_event.raise_event(src) + SEND_SIGNAL(src,COMSIG_OBSERVER_DESTROYED) . = ..() diff --git a/code/datums/observation/dir_set.dm b/code/datums/observation/dir_set.dm deleted file mode 100644 index a626a07c4b..0000000000 --- a/code/datums/observation/dir_set.dm +++ /dev/null @@ -1,35 +0,0 @@ -// Observer Pattern Implementation: Direction Set -// Registration type: /atom -// -// Raised when: An /atom changes dir using the set_dir() proc. -// -// Arguments that the called proc should expect: -// /atom/dir_changer: The instance that changed direction -// /old_dir: The dir before the change. -// /new_dir: The dir after the change. - -GLOBAL_DATUM_INIT(dir_set_event, /decl/observ/dir_set, new) - -/decl/observ/dir_set - name = "Direction Set" - expected_type = /atom - -/decl/observ/dir_set/register(var/atom/dir_changer, var/datum/listener, var/proc_call) - . = ..() - - // Listen to the parent if possible. - if(. && istype(dir_changer.loc, /atom/movable)) // We don't care about registering to turfs. - register(dir_changer.loc, dir_changer, /atom/proc/recursive_dir_set) - -/********************* -* Direction Handling * -*********************/ - -/atom/movable/Entered(var/atom/movable/am, atom/old_loc) - . = ..() - if(. != CANCEL_MOVE_EVENT && GLOB.dir_set_event.has_listeners(am)) - GLOB.dir_set_event.register(src, am, /atom/proc/recursive_dir_set) - -/atom/movable/Exited(var/atom/movable/am, atom/old_loc) - . = ..() - GLOB.dir_set_event.unregister(src, am, /atom/proc/recursive_dir_set) diff --git a/code/datums/observation/equipped.dm b/code/datums/observation/equipped.dm index 4142050a35..a64d1e76df 100644 --- a/code/datums/observation/equipped.dm +++ b/code/datums/observation/equipped.dm @@ -7,6 +7,7 @@ // /mob/equipper: The mob that equipped the item. // /obj/item/item: The equipped item. // slot: The slot equipped to. +/* GLOBAL_DATUM_INIT(mob_equipped_event, /decl/observ/mob_equipped, new) /decl/observ/mob_equipped @@ -27,12 +28,13 @@ GLOBAL_DATUM_INIT(item_equipped_event, /decl/observ/item_equipped, new) /decl/observ/item_equipped name = "Item Equipped" expected_type = /obj/item - +*/ +//Deprecated in favor of comsigs /******************** * Equipped Handling * ********************/ /obj/item/equipped(var/mob/user, var/slot) . = ..() - GLOB.mob_equipped_event.raise_event(user, src, slot) - GLOB.item_equipped_event.raise_event(src, user, slot) + SEND_SIGNAL(user, COMSIG_OBSERVER_MOB_EQUIPPED, src, slot) + SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_EQUIPPED, user, slot) diff --git a/code/datums/observation/helpers.dm b/code/datums/observation/helpers.dm index 12feeba16d..bc1091c668 100644 --- a/code/datums/observation/helpers.dm +++ b/code/datums/observation/helpers.dm @@ -1,6 +1,7 @@ +/* /atom/movable/proc/recursive_move(var/atom/movable/am, var/old_loc, var/new_loc) - GLOB.moved_event.raise_event(src, old_loc, new_loc) - + SEND_SIGNAL(src,COMSIG_OBSERVER_MOVED, old_loc, new_loc) +*/ /atom/movable/proc/move_to_destination(var/atom/movable/am, var/old_loc, var/new_loc) var/turf/T = get_turf(new_loc) if(T && T != loc) @@ -12,10 +13,12 @@ /datum/proc/qdel_self() qdel(src) -/proc/register_all_movement(var/event_source, var/listener) - GLOB.moved_event.register(event_source, listener, /atom/movable/proc/recursive_move) - GLOB.dir_set_event.register(event_source, listener, /atom/proc/recursive_dir_set) +/* +/proc/register_all_movement(var/event_source, var/datum/listener) + listener.RegisterSignal(event_source,COMSIG_OBSERVER_MOVED, /atom/movable/proc/recursive_move) + //GLOB.dir_set_event.register(event_source, listener, /atom/proc/recursive_dir_set) -/proc/unregister_all_movement(var/event_source, var/listener) - GLOB.moved_event.unregister(event_source, listener, /atom/movable/proc/recursive_move) - GLOB.dir_set_event.unregister(event_source, listener, /atom/proc/recursive_dir_set) +/proc/unregister_all_movement(var/event_source, var/datum/listener) + listener.UnregisterSignal(event_source,COMSIG_OBSERVER_MOVED) + //GLOB.dir_set_event.unregister(event_source, listener, /atom/proc/recursive_dir_set) +*/ diff --git a/code/datums/observation/logged_in.dm b/code/datums/observation/logged_in.dm deleted file mode 100644 index c59e146a48..0000000000 --- a/code/datums/observation/logged_in.dm +++ /dev/null @@ -1,21 +0,0 @@ -// Observer Pattern Implementation: Logged in -// Registration type: /mob -// -// Raised when: A mob logs in (not client) -// -// Arguments that the called proc should expect: -// /mob/joiner: The mob that has logged in - -GLOBAL_DATUM_INIT(logged_in_event, /decl/observ/logged_in, new) - -/decl/observ/logged_in - name = "Logged In" - expected_type = /mob - -/***************** -* Login Handling * -*****************/ - -/mob/Login() - ..() - GLOB.logged_in_event.raise_event(src) diff --git a/code/datums/observation/moved.dm b/code/datums/observation/moved.dm index 3cd61c1cc6..f6ba466836 100644 --- a/code/datums/observation/moved.dm +++ b/code/datums/observation/moved.dm @@ -8,9 +8,10 @@ // /atom/old_loc: The loc before the move. // /atom/new_loc: The loc after the move. - +/* GLOBAL_DATUM_INIT(moved_event, /decl/observ/moved, new) + /decl/observ/moved name = "Moved" expected_type = /atom/movable @@ -21,28 +22,30 @@ GLOBAL_DATUM_INIT(moved_event, /decl/observ/moved, new) // Listen to the parent if possible. if(. && istype(mover.loc, expected_type)) register(mover.loc, mover, /atom/movable/proc/recursive_move) +*/ +//Deprecated in favor of comsigs /******************** * Movement Handling * ********************/ +/* /atom/movable/Entered(var/atom/movable/am, atom/old_loc) . = ..() - if(GLOB.moved_event.has_listeners(am)) - GLOB.moved_event.register(src, am, /atom/movable/proc/recursive_move) + am.RegisterSignal(src,COMSIG_OBSERVER_MOVED, /atom/movable/proc/recursive_move, override = TRUE) /atom/movable/Exited(var/atom/movable/am, atom/old_loc) . = ..() - GLOB.moved_event.unregister(src, am, /atom/movable/proc/recursive_move) - + am.UnregisterSignal(src,COMSIG_OBSERVER_MOVED) +*/ // Entered() typically lifts the moved event, but in the case of null-space we'll have to handle it. /atom/movable/Move() var/old_loc = loc . = ..() if(. && !loc) - GLOB.moved_event.raise_event(src, old_loc, null) + SEND_SIGNAL(src,COMSIG_OBSERVER_MOVED, old_loc, null) /atom/movable/forceMove(atom/destination) var/old_loc = loc . = ..() if(. && !loc) - GLOB.moved_event.raise_event(src, old_loc, null) + SEND_SIGNAL(src,COMSIG_OBSERVER_MOVED, old_loc, null) diff --git a/code/datums/observation/observation.dm b/code/datums/observation/observation.dm deleted file mode 100644 index db1f9e0d6e..0000000000 --- a/code/datums/observation/observation.dm +++ /dev/null @@ -1,238 +0,0 @@ -// -// Observer Pattern Implementation -// -// Implements a basic observer pattern with the following main procs: -// -// /decl/observ/proc/is_listening(var/event_source, var/datum/listener, var/proc_call) -// event_source: The instance which is generating events. -// listener: The instance which may be listening to events by event_source -// proc_call: Optional. The specific proc to call when the event is raised. -// -// Returns true if listener is listening for events by event_source, and proc_call supplied is either null or one of the proc that will be called when an event is raised. -// -// /decl/observ/proc/has_listeners(var/event_source) -// event_source: The instance which is generating events. -// -// Returns true if the given event_source has any listeners at all, globally or to specific event sources. -// -// /decl/observ/proc/register(var/event_source, var/datum/listener, var/proc_call) -// event_source: The instance you wish to receive events from. -// listener: The instance/owner of the proc to call when an event is raised by the event_source. -// proc_call: The proc to call when an event is raised. -// -// It is possible to register the same listener to the same event_source multiple times as long as it is using different proc_calls. -// Registering again using the same event_source, listener, and proc_call that has been registered previously will have no additional effect. -// I.e.: The proc_call will still only be called once per raised event. That particular proc_call will only have to be unregistered once. -// -// When proc_call is called the first argument is always the source of the event (event_source). -// Additional arguments may or may not be supplied, see individual event definition files (destroyed.dm, moved.dm, etc.) for details. -// -// The instance making the register() call is also responsible for calling unregister(), see below for additonal details, including when event_source is destroyed. -// This can be handled by listening to the event_source's destroyed event, unregistering in the listener's Destroy() proc, etc. -// -// /decl/observ/proc/unregister(var/event_source, var/datum/listener, var/proc_call) -// event_source: The instance you wish to stop receiving events from. -// listener: The instance which will no longer receive the events. -// proc_call: Optional: The proc_call to unregister. -// -// Unregisters the listener from the event_source. -// If a proc_call has been supplied only that particular proc_call will be unregistered. If the proc_call isn't currently registered there will be no effect. -// If no proc_call has been supplied, the listener will have all registrations made to the given event_source undone. -// -// /decl/observ/proc/register_global(var/datum/listener, var/proc_call) -// listener: The instance/owner of the proc to call when an event is raised by any and all sources. -// proc_call: The proc to call when an event is raised. -// -// Works very much the same as register(), only the listener/proc_call will receive all relevant events from all event sources. -// Global registrations can overlap with registrations made to specific event sources and these will not affect each other. -// -// /decl/observ/proc/unregister_global(var/datum/listener, var/proc_call) -// listener: The instance/owner of the proc which will no longer receive the events. -// proc_call: Optional: The proc_call to unregister. -// -// Works very much the same as unregister(), only it undoes global registrations instead. -// -// /decl/observ/proc/raise_event(src, ...) -// Should never be called unless implementing a new event type. -// The first argument shall always be the event_source belonging to the event. Beyond that there are no restrictions. - -/decl/observ - var/name = "Unnamed Event" // The name of this event, used mainly for debug/VV purposes. The list of event managers can be reached through the "Debug Controller" verb, selecting the "Observation" entry. - var/expected_type = /datum // The expected event source for this event. register() will CRASH() if it receives an unexpected type. - var/list/event_sources = list() // Associative list of event sources, each with their own associative list. This associative list contains an instance/list of procs to call when the event is raised. - var/list/global_listeners = list() // Associative list of instances that listen to all events of this type (as opposed to events belonging to a specific source) and the proc to call. - -/decl/observ/New() - GLOB.all_observable_events.events += src - . = ..() - -/decl/observ/proc/is_listening(var/event_source, var/datum/listener, var/proc_call) - // Return whether there are global listeners unless the event source is given. - if (!event_source) - return !!global_listeners.len - - // Return whether anything is listening to a source, if no listener is given. - if (!listener) - return global_listeners.len || (event_source in event_sources) - - // Return false if nothing is associated with that source. - if (!(event_source in event_sources)) - return FALSE - - // Get and check the listeners for the reuqested event. - var/listeners = event_sources[event_source] - if (!(listener in listeners)) - return FALSE - - // Return true unless a specific callback needs checked. - if (!proc_call) - return TRUE - - // Check if the specific callback exists. - var/list/callback = listeners[listener] - if (!callback) - return FALSE - - return (proc_call in callback) - -/decl/observ/proc/has_listeners(var/event_source) - return is_listening(event_source) - -/decl/observ/proc/register(var/datum/event_source, var/datum/listener, var/proc_call) - // Sanity checking. - if (!(event_source && listener && proc_call)) - return FALSE - if (istype(event_source, /decl/observ)) - return FALSE - - // Crash if the event source is the wrong type. - if (!istype(event_source, expected_type)) - CRASH("Unexpected type. Expected [expected_type], was [event_source.type]") - - // Setup the listeners for this source if needed. - var/list/listeners = event_sources[event_source] - if (!listeners) - listeners = list() - event_sources[event_source] = listeners - - // Make sure the callbacks are a list. - var/list/callbacks = listeners[listener] - if (!callbacks) - callbacks = list() - listeners[listener] = callbacks - - // If the proc_call is already registered skip - if(proc_call in callbacks) - return FALSE - - // Add the callback, and return true. - callbacks += proc_call - return TRUE - -/decl/observ/proc/unregister(var/event_source, var/datum/listener, var/proc_call) - // Sanity. - if (!(event_source && listener && (event_source in event_sources))) - return FALSE - - // Return false if nothing is listening for this event. - var/list/listeners = event_sources[event_source] - if (!listeners) - return FALSE - - // Remove all callbacks if no specific one is given. - if (!proc_call) - if(listeners.Remove(listener)) - // Perform some cleanup and return true. - if (!listeners.len) - event_sources -= event_source - return TRUE - return FALSE - - // See if the listener is registered. - var/list/callbacks = listeners[listener] - if (!callbacks) - return FALSE - - // See if the callback exists. - if(!callbacks.Remove(proc_call)) - return FALSE - - if (!callbacks.len) - listeners -= listener - if (!listeners.len) - event_sources -= event_source - return TRUE - -/decl/observ/proc/register_global(var/datum/listener, var/proc_call) - // Sanity. - if (!(listener && proc_call)) - return FALSE - - // Make sure the callbacks are setup. - var/list/callbacks = global_listeners[listener] - if (!callbacks) - callbacks = list() - global_listeners[listener] = callbacks - - // Add the callback and return true. - callbacks |= proc_call - return TRUE - -/decl/observ/proc/unregister_global(var/datum/listener, var/proc_call) - // Return false unless the listener is set as a global listener. - if (!(listener && (listener in global_listeners))) - return FALSE - - // Remove all callbacks if no specific one is given. - if (!proc_call) - global_listeners -= listener - return TRUE - - // See if the listener is registered. - var/list/callbacks = global_listeners[listener] - if (!callbacks) - return FALSE - - // See if the callback exists. - if(!callbacks.Remove(proc_call)) - return FALSE - - if (!callbacks.len) - global_listeners -= listener - return TRUE - -/decl/observ/proc/raise_event() - // Sanity - if (!args.len) - return FALSE - - // Call the global listeners. - for (var/datum/listener in global_listeners) - var/list/callbacks = global_listeners[listener] - for (var/proc_call in callbacks) - - // If the callback crashes, record the error and remove it. - try - call(listener, proc_call)(arglist(args)) - catch (var/exception/e) - error("[e.name] - [e.file] - [e.line]") - error(e.desc) - unregister_global(listener, proc_call) - - // Call the listeners for this specific event source, if they exist. - var/source = args[1] - if (source in event_sources) - var/list/listeners = event_sources[source] - for (var/datum/listener in listeners) - var/list/callbacks = listeners[listener] - for (var/proc_call in callbacks) - - // If the callback crashes, record the error and remove it. - try - call(listener, proc_call)(arglist(args)) - catch (var/exception/e) - error("[e.name] - [e.file] - [e.line]") - error(e.desc) - unregister(source, listener, proc_call) - - return TRUE diff --git a/code/datums/observation/power_change.dm b/code/datums/observation/power_change.dm index 4581dab84a..2a5ef3b579 100644 --- a/code/datums/observation/power_change.dm +++ b/code/datums/observation/power_change.dm @@ -5,7 +5,7 @@ // // Arguments that the called proc should expect: // /area: The area experiencing the power change - +/* GLOBAL_DATUM_INIT(apc_event, /decl/observ/area_power_change, new) /decl/observ/area_power_change @@ -15,7 +15,9 @@ GLOBAL_DATUM_INIT(apc_event, /decl/observ/area_power_change, new) /******************** * Movement Handling * ********************/ +*/ +//Deprecated in favor of comsigs /area/power_change() . = ..() - GLOB.apc_event.raise_event(src) + SEND_SIGNAL(src,COMSIG_OBSERVER_APC) diff --git a/code/datums/observation/shuttle_added.dm b/code/datums/observation/shuttle_added.dm index dfd95170a0..2dd865a543 100644 --- a/code/datums/observation/shuttle_added.dm +++ b/code/datums/observation/shuttle_added.dm @@ -5,12 +5,14 @@ // // Arguments that the called proc should expect: // /datum/shuttle/shuttle: the new shuttle - +/* GLOBAL_DATUM_INIT(shuttle_added, /decl/observ/shuttle_added, new) /decl/observ/shuttle_added name = "Shuttle Added" expected_type = /datum/shuttle +*/ +//Deprecated in favor of comsigs /***************************** * Shuttle Added Handling * @@ -19,4 +21,4 @@ GLOBAL_DATUM_INIT(shuttle_added, /decl/observ/shuttle_added, new) /datum/controller/subsystem/shuttles/initialize_shuttle() . = ..() if(.) - GLOB.shuttle_added.raise_event(.) \ No newline at end of file + SEND_SIGNAL(SSshuttles,COMSIG_OBSERVER_SHUTTLE_ADDED,.) diff --git a/code/datums/observation/shuttle_moved.dm b/code/datums/observation/shuttle_moved.dm deleted file mode 100644 index 35bff0d6b9..0000000000 --- a/code/datums/observation/shuttle_moved.dm +++ /dev/null @@ -1,38 +0,0 @@ -// Observer Pattern Implementation: Shuttle Moved -// Registration type: /datum/shuttle/autodock -// -// Raised when: A shuttle has moved to a new landmark. -// -// Arguments that the called proc should expect: -// /datum/shuttle/shuttle: the shuttle moving -// /obj/effect/shuttle_landmark/old_location: the old location's shuttle landmark -// /obj/effect/shuttle_landmark/new_location: the new location's shuttle landmark - -// Observer Pattern Implementation: Shuttle Pre Move -// Registration type: /datum/shuttle/autodock -// -// Raised when: A shuttle is about to move to a new landmark. -// -// Arguments that the called proc should expect: -// /datum/shuttle/shuttle: the shuttle moving -// /obj/effect/shuttle_landmark/old_location: the old location's shuttle landmark -// /obj/effect/shuttle_landmark/new_location: the new location's shuttle landmark - -GLOBAL_DATUM_INIT(shuttle_moved_event, /decl/observ/shuttle_moved, new) - -/decl/observ/shuttle_moved - name = "Shuttle Moved" - expected_type = /datum/shuttle - -GLOBAL_DATUM_INIT(shuttle_pre_move_event, /decl/observ/shuttle_pre_move, new) - -/decl/observ/shuttle_pre_move - name = "Shuttle Pre Move" - expected_type = /datum/shuttle - -/***************** -* Shuttle Moved/Pre Move Handling * -*****************/ - -// Located in modules/shuttle/shuttle.dm -// Proc: /datum/shuttle/proc/attempt_move() \ No newline at end of file diff --git a/code/datums/observation/stat_set.dm b/code/datums/observation/stat_set.dm index 6bc6ea45f0..c818a50532 100644 --- a/code/datums/observation/stat_set.dm +++ b/code/datums/observation/stat_set.dm @@ -7,12 +7,14 @@ // /mob/living/stat_mob: The mob whose stat changed // /old_stat: Status before the change. // /new_stat: Status after the change. - -GLOBAL_DATUM_INIT(stat_set_event, /decl/observ/stat_set, new) +/* +stat_set_event, /decl/observ/stat_set, new) /decl/observ/stat_set name = "Stat Set" expected_type = /mob/living +*/ +//Deprecated in favor of Comsigs /**************** * Stat Handling * @@ -21,7 +23,7 @@ GLOBAL_DATUM_INIT(stat_set_event, /decl/observ/stat_set, new) var/old_stat = stat . = ..() if(stat != old_stat) - GLOB.stat_set_event.raise_event(src, old_stat, new_stat) + SEND_SIGNAL(src, COMSIG_MOB_STATCHANGE, old_stat, new_stat) if(isbelly(src.loc)) var/obj/belly/ourbelly = src.loc diff --git a/code/datums/observation/turf_changed.dm b/code/datums/observation/turf_changed.dm deleted file mode 100644 index 0bb0ed9115..0000000000 --- a/code/datums/observation/turf_changed.dm +++ /dev/null @@ -1,28 +0,0 @@ -// Observer Pattern Implementation: Turf Changed -// Registration type: /turf -// -// Raised when: A turf has been changed using the ChangeTurf proc. -// -// Arguments that the called proc should expect: -// /turf/affected: The turf that has changed -// /old_density: Density before the change -// /new_density: Density after the change -// /old_opacity: Opacity before the change -// /new_opacity: Opacity after the change - -var/decl/observ/turf_changed/turf_changed_event = new() - -/decl/observ/turf_changed - name = "Turf Changed" - expected_type = /turf - -/************************ -* Turf Changed Handling * -************************/ - -/turf/ChangeTurf(var/turf/N, var/tell_universe, var/force_lighting_update, var/preserve_outdoors) - var/old_density = density - var/old_opacity = opacity - . = ..(N, tell_universe, force_lighting_update, preserve_outdoors) - if(.) - turf_changed_event.raise_event(src, old_density, density, old_opacity, opacity) \ No newline at end of file diff --git a/code/datums/observation/turf_enterexit.dm b/code/datums/observation/turf_enterexit.dm index 30cec0c39d..3f591986f0 100644 --- a/code/datums/observation/turf_enterexit.dm +++ b/code/datums/observation/turf_enterexit.dm @@ -8,7 +8,7 @@ // /atom/movable/moving_instance: The instance that entered/exited // /atom/old_loc / /atom/new_loc: The previous/new loc of the mover - +/* GLOBAL_DATUM_INIT(turf_entered_event, /decl/observ/turf_entered, new) GLOBAL_DATUM_INIT(turf_exited_event, /decl/observ/turf_exited, new) @@ -20,14 +20,18 @@ GLOBAL_DATUM_INIT(turf_exited_event, /decl/observ/turf_exited, new) name = "Turf Exited" expected_type = /turf +*/ +//Deprecated in favor of Comsigs + /******************** * Movement Handling * ********************/ + /turf/Entered(var/atom/movable/am, var/atom/old_loc) . = ..() - GLOB.turf_entered_event.raise_event(src, am, old_loc) + SEND_SIGNAL(src, COMSIG_OBSERVER_TURF_ENTERED, am, old_loc) /turf/Exited(var/atom/movable/am, var/atom/new_loc) . = ..() - GLOB.turf_exited_event.raise_event(src, am, new_loc) \ No newline at end of file + SEND_SIGNAL(src, COMSIG_OBSERVER_TURF_EXITED, am, new_loc) diff --git a/code/datums/observation/unequipped.dm b/code/datums/observation/unequipped.dm index 6ad8d8eca0..353332de02 100644 --- a/code/datums/observation/unequipped.dm +++ b/code/datums/observation/unequipped.dm @@ -6,7 +6,7 @@ // Arguments that the called proc should expect: // /mob/equipped: The mob that unequipped/dropped the item. // /obj/item/item: The unequipped item. - +/* GLOBAL_DATUM_INIT(mob_unequipped_event, /decl/observ/mob_unequipped, new) /decl/observ/mob_unequipped @@ -27,6 +27,8 @@ GLOBAL_DATUM_INIT(item_unequipped_event, /decl/observ/item_unequipped, new) /decl/observ/item_unequipped name = "Item Unequipped" expected_type = /obj/item +*/ +//Deprecated in favor of comsigs /********************** * Unequipped Handling * @@ -34,5 +36,10 @@ GLOBAL_DATUM_INIT(item_unequipped_event, /decl/observ/item_unequipped, new) /obj/item/dropped(var/mob/user) ..() - GLOB.mob_unequipped_event.raise_event(user, src) - GLOB.item_unequipped_event.raise_event(src, user) + //SEND_SIGNAL(user, COMSIG_OBSERVER_MOB_UNEQUIPPED, src) + //SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_UNEQUIPPED, user) + if(user) // Cannot always guarantee that user won't be null + SEND_SIGNAL(user, COMSIG_OBSERVER_MOB_UNEQUIPPED, src) + SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_UNEQUIPPED, user) + else + SEND_SIGNAL(src, COMSIG_OBSERVER_ITEM_UNEQUIPPED) diff --git a/code/datums/observation/z_moved.dm b/code/datums/observation/z_moved.dm deleted file mode 100644 index ba30df374c..0000000000 --- a/code/datums/observation/z_moved.dm +++ /dev/null @@ -1,16 +0,0 @@ -// Observer Pattern Implementation: Z_Moved -// Registration type: /atom/movable -// -// Raised when: An /atom/movable instance has changed z-levels by any means. -// -// Arguments that the called proc should expect: -// /atom/movable/moving_instance: The instance that moved -// old_z: The z number before the move. -// new_z: The z number after the move. - - -GLOBAL_DATUM_INIT(z_moved_event, /decl/observ/z_moved, new) - -/decl/observ/z_moved - name = "Z_Moved" - expected_type = /atom/movable diff --git a/code/datums/observation/~cleanup.dm b/code/datums/observation/~cleanup.dm deleted file mode 100644 index da902052bd..0000000000 --- a/code/datums/observation/~cleanup.dm +++ /dev/null @@ -1,67 +0,0 @@ -GLOBAL_LIST_EMPTY(global_listen_count) -GLOBAL_LIST_EMPTY(event_sources_count) -GLOBAL_LIST_EMPTY(event_listen_count) - -/decl/observ/destroyed/raise_event() - . = ..() - if(!.) - return - var/source = args[1] - - if(GLOB.global_listen_count[source]) - cleanup_global_listener(source, GLOB.global_listen_count[source]) - if(GLOB.event_sources_count[source]) - cleanup_source_listeners(source, GLOB.event_sources_count[source]) - if(GLOB.event_listen_count[source]) - cleanup_event_listener(source, GLOB.event_listen_count[source]) - - -/decl/observ/register(var/datum/event_source, var/datum/listener, var/proc_call) - . = ..() - if(.) - GLOB.event_sources_count[event_source] += 1 - GLOB.event_listen_count[listener] += 1 - -/decl/observ/unregister(var/datum/event_source, var/datum/listener, var/proc_call) - . = ..() - if(.) - GLOB.event_sources_count[event_source] -= 1 - GLOB.event_listen_count[listener] -= 1 - -/decl/observ/register_global(var/datum/listener, var/proc_call) - . = ..() - if(.) - GLOB.global_listen_count[listener] += 1 - -/decl/observ/unregister_global(var/datum/listener, var/proc_call) - . = ..() - if(.) - GLOB.global_listen_count[listener] -= 1 - -/decl/observ/destroyed/proc/cleanup_global_listener(listener, listen_count) - GLOB.global_listen_count -= listener - for(var/decl/observ/event as anything in GLOB.all_observable_events.events) - if(event.unregister_global(listener)) - // log_debug("[event] - [listener] was deleted while still registered to global events.") // TODO: Apply axe, reimplement with datum component listeners - if(!(--listen_count)) - return - -/decl/observ/destroyed/proc/cleanup_source_listeners(event_source, source_listener_count) - GLOB.event_sources_count -= event_source - for(var/decl/observ/event as anything in GLOB.all_observable_events.events) - var/proc_owners = event.event_sources[event_source] - if(proc_owners) - for(var/proc_owner in proc_owners) - if(event.unregister(event_source, proc_owner)) - // log_debug("[event] - [event_source] was deleted while still being listened to by [proc_owner].") // TODO: Apply axe, reimplement with datum component listeners - if(!(--source_listener_count)) - return - -/decl/observ/destroyed/proc/cleanup_event_listener(listener, listener_count) - GLOB.event_listen_count -= listener - for(var/decl/observ/event as anything in GLOB.all_observable_events.events) - for(var/event_source in event.event_sources) - if(event.unregister(event_source, listener)) - // log_debug("[event] - [listener] was deleted while still listening to [event_source].") // TODO: Apply axe, reimplement with datum component listeners - if(!(--listener_count)) - return \ No newline at end of file diff --git a/code/datums/orbit.dm b/code/datums/orbit.dm index adbd166d25..745d16053e 100644 --- a/code/datums/orbit.dm +++ b/code/datums/orbit.dm @@ -105,7 +105,7 @@ /atom/movable/proc/stop_orbit() SpinAnimation(0,0) - qdel(orbiting) + QDEL_NULL(orbiting) /atom/Destroy(force = FALSE) . = ..() diff --git a/code/datums/uplink/badassery.dm b/code/datums/uplink/badassery.dm index 8208894af4..2541bac504 100644 --- a/code/datums/uplink/badassery.dm +++ b/code/datums/uplink/badassery.dm @@ -91,4 +91,4 @@ var/obj/structure/largecrate/C = /obj/structure/largecrate icon = image(initial(C.icon), initial(C.icon_state)) - return "\icon[icon][bicon(icon)]" \ No newline at end of file + return "[bicon(icon)]" diff --git a/code/datums/uplink/uplink_items.dm b/code/datums/uplink/uplink_items.dm index 7fcdbd8dc2..7b4fbded2b 100644 --- a/code/datums/uplink/uplink_items.dm +++ b/code/datums/uplink/uplink_items.dm @@ -130,7 +130,7 @@ var/datum/uplink/uplink = new() /datum/uplink_item/item/log_icon() var/obj/I = path - return "\icon[I][bicon(I)]" + return "[bicon(I)]" /******************************** * * @@ -144,7 +144,7 @@ var/datum/uplink/uplink = new() if(!default_abstract_uplink_icon) default_abstract_uplink_icon = image('icons/obj/pda.dmi', "pda-syn") - return "\icon[default_abstract_uplink_icon][bicon(default_abstract_uplink_icon)]" + return "[bicon(default_abstract_uplink_icon)]" /* * Crated goods. @@ -174,7 +174,7 @@ var/datum/uplink/uplink = new() /datum/uplink_item/crated/log_icon() var/obj/I = crate_path - return "\icon[I]" + return "[bicon(I)]" /**************** * Support procs * diff --git a/code/datums/wires/camera.dm b/code/datums/wires/camera.dm index c572ad8d27..322478688c 100644 --- a/code/datums/wires/camera.dm +++ b/code/datums/wires/camera.dm @@ -57,7 +57,7 @@ C.light_disabled = !C.light_disabled if(WIRE_CAM_ALARM) - C.visible_message("\icon[C][bicon(C)] *beep*", "\icon[C][bicon(C)] *beep*") + C.visible_message("[icon2html(C,viewers(holder))] *beep*", "[icon2html(C,viewers(holder))] *beep*") ..() /datum/wires/camera/proc/CanDeconstruct() diff --git a/code/datums/wires/jukebox.dm b/code/datums/wires/jukebox.dm index cec0f4d370..5f46a3deb9 100644 --- a/code/datums/wires/jukebox.dm +++ b/code/datums/wires/jukebox.dm @@ -31,16 +31,16 @@ var/obj/machinery/media/jukebox/A = holder switch(wire) if(WIRE_MAIN_POWER1) - holder.visible_message("\icon[holder][bicon(holder)] The power light flickers.") + holder.visible_message("[icon2html(A,viewers(holder))] The power light flickers.") A.shock(usr, 90) if(WIRE_JUKEBOX_HACK) - holder.visible_message("\icon[holder][bicon(holder)] The parental guidance light flickers.") + holder.visible_message("[icon2html(A,viewers(holder))] The parental guidance light flickers.") if(WIRE_REVERSE) - holder.visible_message("\icon[holder][bicon(holder)] The data light blinks ominously.") + holder.visible_message("[icon2html(A,viewers(holder))] The data light blinks ominously.") if(WIRE_SPEEDUP) - holder.visible_message("\icon[holder][bicon(holder)] The speakers squeaks.") + holder.visible_message("[icon2html(A,viewers(holder))] The speakers squeaks.") if(WIRE_SPEEDDOWN) - holder.visible_message("\icon[holder][bicon(holder)] The speakers rumble.") + holder.visible_message("[icon2html(A,viewers(holder))] The speakers rumble.") if(WIRE_START) A.StartPlaying() if(WIRE_STOP) diff --git a/code/datums/wires/mines.dm b/code/datums/wires/mines.dm index 55ea718c3f..229ce682be 100644 --- a/code/datums/wires/mines.dm +++ b/code/datums/wires/mines.dm @@ -21,15 +21,15 @@ switch(wire) if(WIRE_EXPLODE) - C.visible_message("\icon[C][bicon(C)] *BEEE-*", "\icon[C][bicon(C)] *BEEE-*") + C.visible_message("[icon2html(C,viewers(holder))] *BEEE-*", "[icon2html(C,viewers(holder))] *BEEE-*") C.explode() if(WIRE_EXPLODE_DELAY) - C.visible_message("\icon[C][bicon(C)] *BEEE-*", "\icon[C][bicon(C)] *BEEE-*") + C.visible_message("[icon2html(C,viewers(holder))] *BEEE-*", "[icon2html(C,viewers(holder))] *BEEE-*") C.explode() if(WIRE_DISARM) - C.visible_message("\icon[C][bicon(C)] *click!*", "\icon[C][bicon(C)] *click!*") + C.visible_message("[icon2html(C,viewers(holder))] *click!*", "[icon2html(C,viewers(holder))] *click!*") var/obj/effect/mine/MI = new C.mineitemtype(get_turf(C)) if(C.trap) @@ -41,15 +41,15 @@ qdel(C) if(WIRE_BADDISARM) - C.visible_message("\icon[C][bicon(C)] *BEEPBEEPBEEP*", "\icon[C][bicon(C)] *BEEPBEEPBEEP*") + C.visible_message("[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*", "[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*") spawn(20) C.explode() if(WIRE_TRAP) - C.visible_message("\icon[C][bicon(C)] *click!*", "\icon[C][bicon(C)] *click!*") + C.visible_message("[icon2html(C,viewers(holder))] *click!*", "[icon2html(C,viewers(holder))] *click!*") if(mend) - C.visible_message("\icon[C][bicon(C)] - The mine recalibrates[C.camo_net ? ", revealing \the [C.trap] inside." : "."]") + C.visible_message("[icon2html(C,viewers(holder))] - The mine recalibrates[C.camo_net ? ", revealing \the [C.trap] inside." : "."]") C.alpha = 255 @@ -61,21 +61,21 @@ return switch(wire) if(WIRE_EXPLODE) - C.visible_message("\icon[C][bicon(C)] *beep*", "\icon[C][bicon(C)] *beep*") + C.visible_message("[icon2html(C,viewers(holder))] *beep*", "[icon2html(C,viewers(holder))] *beep*") if(WIRE_EXPLODE_DELAY) - C.visible_message("\icon[C][bicon(C)] *BEEPBEEPBEEP*", "\icon[C][bicon(C)] *BEEPBEEPBEEP*") + C.visible_message("[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*", "[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*") spawn(20) C.explode() if(WIRE_DISARM) - C.visible_message("\icon[C][bicon(C)] *ping*", "\icon[C][bicon(C)] *ping*") + C.visible_message("[icon2html(C,viewers(holder))] *ping*", "[icon2html(C,viewers(holder))] *ping*") if(WIRE_BADDISARM) - C.visible_message("\icon[C][bicon(C)] *ping*", "\icon[C][bicon(C)] *ping*") + C.visible_message("[icon2html(C,viewers(holder))] *ping*", "[icon2html(C,viewers(holder))] *ping*") if(WIRE_TRAP) - C.visible_message("\icon[C][bicon(C)] *ping*", "\icon[C][bicon(C)] *ping*") + C.visible_message("[icon2html(C,viewers(holder))] *ping*", "[icon2html(C,viewers(holder))] *ping*") ..() diff --git a/code/datums/wires/particle_accelerator.dm b/code/datums/wires/particle_accelerator.dm index 1787039622..1b1f03bd19 100644 --- a/code/datums/wires/particle_accelerator.dm +++ b/code/datums/wires/particle_accelerator.dm @@ -26,7 +26,7 @@ C.interface_control = !C.interface_control if(WIRE_PARTICLE_POWER_LIMIT) - C.visible_message("\icon[C][bicon(C)][C] makes a large whirring noise.") + C.visible_message("[icon2html(C,viewers(holder))][C] makes a large whirring noise.") /datum/wires/particle_acc/control_box/on_cut(wire, mend) var/obj/machinery/particle_accelerator/control_box/C = holder diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 9490a0af46..5cbbe16b9c 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -153,7 +153,7 @@ ASSERT(isturf(loc)) var/list/turfs = trange(range, src) for(var/turf/T as anything in turfs) - GLOB.turf_entered_event.register(T, src, callback) + RegisterSignal(T, COMSIG_OBSERVER_TURF_ENTERED, callback) //Unregister from prox listening in a certain range. You should do this BEFORE you move, but if you // really can't, then you can set the center where you moved from. @@ -161,7 +161,7 @@ ASSERT(isturf(center) || isturf(loc)) var/list/turfs = trange(range, center ? center : src) for(var/turf/T as anything in turfs) - GLOB.turf_entered_event.unregister(T, src, callback) + UnregisterSignal(T, COMSIG_OBSERVER_TURF_ENTERED) /atom/proc/emp_act(var/severity) @@ -228,7 +228,7 @@ else f_name += "oil-stained [name][infix]." - var/list/output = list("\icon[src.examine_icon()][bicon(src)] That's [f_name] [suffix]", get_examine_desc()) + var/list/output = list("[icon2html(src,user.client)] That's [f_name] [suffix]", get_examine_desc()) if(user.client?.prefs.examine_text_mode == EXAMINE_MODE_INCLUDE_USAGE) output += description_info @@ -705,7 +705,7 @@ /atom/Entered(atom/movable/AM, atom/old_loc) . = ..() - GLOB.moved_event.raise_event(AM, old_loc, AM.loc) + SEND_SIGNAL(AM, COMSIG_OBSERVER_MOVED, old_loc, AM.loc) SEND_SIGNAL(src, COMSIG_ATOM_ENTERED, AM, old_loc) SEND_SIGNAL(AM, COMSIG_ATOM_ENTERING, src, old_loc) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 757283f00f..af31b4f698 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -372,7 +372,7 @@ return TRUE /atom/movable/proc/onTransitZ(old_z,new_z) - GLOB.z_moved_event.raise_event(src, old_z, new_z) + SEND_SIGNAL(src, COMSIG_OBSERVER_Z_MOVED, old_z, new_z) SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z) for(var/atom/movable/AM as anything in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. AM.onTransitZ(old_z,new_z) @@ -637,4 +637,4 @@ return selfimage /atom/movable/proc/get_cell() - return \ No newline at end of file + return diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 1834971be2..d6dd254de1 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1125,7 +1125,7 @@ // This is not a status display message, since it's something the character // themselves is meant to see BEFORE putting the money in - to_chat(usr, "\icon[cashmoney][bicon(cashmoney)] That is not enough money.") + to_chat(usr, "[icon2html(cashmoney,user.client)] That is not enough money.") return 0 if(istype(cashmoney, /obj/item/weapon/spacecash)) @@ -1338,4 +1338,4 @@ to_chat(user, "You turn in 2 tickets to the [src] and claim a prize!") return else - ..() //You can now actually deconstruct these. \ No newline at end of file + ..() //You can now actually deconstruct these. diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index b275821a59..174fdf630d 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -284,7 +284,7 @@ Class Procs: /obj/machinery/proc/state(var/msg) for(var/mob/O in hearers(src, null)) - O.show_message("\icon[src][bicon(src)] [msg]", 2) + O.show_message("[icon2html(src,O.client)] [msg]", 2) /obj/machinery/proc/ping(text=null) if(!text) diff --git a/code/game/machinery/machinery_power.dm b/code/game/machinery/machinery_power.dm index 0f4c2ef01b..c5c6c6c03c 100644 --- a/code/game/machinery/machinery_power.dm +++ b/code/game/machinery/machinery_power.dm @@ -73,14 +73,18 @@ // Do not do power stuff in New/Initialize until after ..() /obj/machinery/Initialize() . = ..() + RegisterSignal(src, COMSIG_OBSERVER_MOVED, PROC_REF(update_power_on_move)) + AddComponent(/datum/component/recursive_move) var/power = POWER_CONSUMPTION REPORT_POWER_CONSUMPTION_CHANGE(0, power) power_init_complete = TRUE // Or in Destroy at all, but especially after the ..(). /obj/machinery/Destroy() + /* if(ismovable(loc)) - GLOB.moved_event.unregister(loc, src, PROC_REF(update_power_on_move)) // Unregister just in case + UnregisterSignal(loc, COMSIG_OBSERVER_MOVED) // Unregister just in case + */ var/power = POWER_CONSUMPTION REPORT_POWER_CONSUMPTION_CHANGE(power, 0) . = ..() @@ -90,10 +94,12 @@ /obj/machinery/Moved(atom/old_loc, direction, forced = FALSE) . = ..() update_power_on_move(src, old_loc, loc) - if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves) - GLOB.moved_event.register(loc, src, PROC_REF(update_power_on_move)) + /* No if(ismovable(old_loc)) // Unregister recursive movement. - GLOB.moved_event.unregister(old_loc, src, PROC_REF(update_power_on_move)) + UnregisterSignal(old_loc, COMSIG_OBSERVER_MOVED) + if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves) + RegisterSignal(loc, COMSIG_OBSERVER_MOVED, PROC_REF(update_power_on_move), override = TRUE) + */ /obj/machinery/proc/update_power_on_move(atom/movable/mover, atom/old_loc, atom/new_loc) var/area/old_area = get_area(old_loc) diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index 058abb899d..027de127b2 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -138,7 +138,7 @@ var/icon/I = imap[1+(ix + icx*iy)*2] var/icon/I2 = imap[2+(ix + icx*iy)*2] - //to_world("icon: \icon[I][bicon(I)]") + //to_world("icon: [icon2html(I)]") I.DrawBox(colour, rx, ry, rx+1, ry+1) @@ -153,7 +153,7 @@ H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]" - //to_world("\icon[I][bicon(I)] at [H.screen_loc]") + //to_world("[icon2html(I)] at [H.screen_loc]") H.name = (i==0)?"maprefresh":"map" @@ -266,7 +266,7 @@ //to_world("trying [ix],[iy] : [ix+icx*iy]") var/icon/I = imap[1+(ix + icx*iy)] - //to_world("icon: \icon[I][bicon(I)]") + //to_world("icon: [icon2html(I)]") I.DrawBox(colour, rx, ry, rx, ry) @@ -279,7 +279,7 @@ H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]" - //to_world("\icon[I][bicon(I)] at [H.screen_loc]") + //to_world("[icon2html(I)] at [H.screen_loc]") H.name = (i==0)?"maprefresh":"map" @@ -332,4 +332,4 @@ qdel(O) mapobjs = null - src.unset_machine() \ No newline at end of file + src.unset_machine() diff --git a/code/game/machinery/partslathe_vr.dm b/code/game/machinery/partslathe_vr.dm index 3fe7074b41..aef7fc1ee3 100644 --- a/code/game/machinery/partslathe_vr.dm +++ b/code/game/machinery/partslathe_vr.dm @@ -163,7 +163,7 @@ removeFromQueue(1) update_icon() else if(busy) - visible_message("\icon [src] flashes: insufficient materials: [getLackingMaterials(D)].") + visible_message("[icon2html(src,viewers(src))] flashes: insufficient materials: [getLackingMaterials(D)].") busy = 0 update_use_power(USE_POWER_IDLE) update_icon() @@ -279,7 +279,7 @@ var/datum/category_item/partslathe/current = queue[1] data["building"] = current.name data["buildPercent"] = (progress / current.time * 100) - + data["error"] = null if(queue.len > 0 && !canBuild(queue[1])) data["error"] = getLackingMaterials(queue[1]) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 0a9def3446..451472c7bf 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -254,9 +254,6 @@ if(get_dist(src, L) > 7) //if it's too far away, why bother? return TURRET_NOT_TARGET - if(!(L in check_trajectory(L, src))) //check if we have true line of sight - return TURRET_NOT_TARGET - if(L.lying) //Don't need to stun-lock the players return TURRET_NOT_TARGET @@ -726,9 +723,6 @@ if(get_dist(src, L) > 7) //if it's too far away, why bother? return TURRET_NOT_TARGET - if(!(L in check_trajectory(L, src))) //check if we have true line of sight - return TURRET_NOT_TARGET - if(emagged) // If emagged not even the dead get a rest return L.stat ? TURRET_SECONDARY_TARGET : TURRET_PRIORITY_TARGET @@ -841,13 +835,14 @@ if(disabled) return FALSE if(target) - last_target = target - popUp() //pop the turret up if it's not already up. - set_dir(get_dir(src, target)) //even if you can't shoot, follow the target - playsound(src, 'sound/machines/turrets/turret_rotate.ogg', 100, 1) // Play rotating sound - spawn() - shootAt(target) - return TRUE + if(target in check_trajectory(target, src)) //Finally, check if we can actually hit the target + last_target = target + popUp() //pop the turret up if it's not already up. + set_dir(get_dir(src, target)) //even if you can't shoot, follow the target + playsound(src, 'sound/machines/turrets/turret_rotate.ogg', 100, 1) // Play rotating sound + spawn() + shootAt(target) + return TRUE return FALSE /obj/machinery/porta_turret/proc/shootAt(var/mob/living/target) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 9e9e878646..11eb234e26 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -198,7 +198,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() screen = RCS_SENTPASS message_log += list(list("Message sent to [recipient]", "[message]")) else - audible_message(text("\icon[src][bicon(src)] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) + audible_message(text("[icon2html(src,viewers(src))] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) . = TRUE //Handle printing diff --git a/code/game/machinery/suit_storage/suit_cycler.dm b/code/game/machinery/suit_storage/suit_cycler.dm index cdd6b45dc2..6803194eef 100644 --- a/code/game/machinery/suit_storage/suit_cycler.dm +++ b/code/game/machinery/suit_storage/suit_cycler.dm @@ -477,7 +477,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) /obj/machinery/suit_cycler/proc/finished_job() var/turf/T = get_turf(src) - T.visible_message("\icon[src][bicon(src)]The [src] beeps several times.") + T.visible_message("[icon2html(src,viewers(src))]The [src] beeps several times.") icon_state = initial(icon_state) active = 0 playsound(src, 'sound/machines/boobeebeep.ogg', 50) @@ -543,5 +543,5 @@ GLOBAL_LIST_EMPTY(suit_cycler_typecache) if(target_species.can_refit_to(helmet, suit, suit?.helmet)) target_species.do_refit_to(helmet, suit, suit?.helmet) else - visible_message("\icon[src][bicon(src)]Unable to apply specified cosmetics with specified species. Please try again with a different species or cosmetic option selected.") + visible_message("[icon2html(src,viewers(src))]Unable to apply specified cosmetics with specified species. Please try again with a different species or cosmetic option selected.") return diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 36ffd8f8bc..5fee77b9e3 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -455,7 +455,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept if(data == DATA_ANTAG) // intercepted radio message part_b_extra = " (Intercepted)" var/part_a = "" - var/part_b = "\icon[radio][bicon(radio)]\[[freq_text]\][part_b_extra] " // goes in the actual output + var/part_b = "[icon2html(radio, heard_masked + heard_normal + heard_voice + heard_garbled + heard_gibberish)]\[[freq_text]\][part_b_extra] " // goes in the actual output // --- Some more pre-message formatting --- var/part_c = " " // Tweaked for security headsets -- TLE @@ -658,7 +658,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // Create a radio headset for the sole purpose of using its icon var/obj/item/device/radio/headset/radio = new - var/part_b = "\icon[radio][bicon(radio)]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE + var/part_b = "[icon2html(radio, heard_normal + heard_garbled + heard_gibberish)]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE var/part_blackbox_b = " \[[freq_text]\] " // Tweaked for security headsets -- TLE var/part_c = "" diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index e4a178034e..80c16c4a65 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -272,7 +272,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message) if(chassis) - chassis.occupant_message("\icon[src][bicon(src)] [message]") + chassis.occupant_message("[icon2html(src, chassis.occupant.client)] [message]") return /obj/item/mecha_parts/mecha_equipment/proc/log_message(message) diff --git a/code/game/mecha/equipment/tools/shield_omni.dm b/code/game/mecha/equipment/tools/shield_omni.dm index 8ee24a7755..3d41a1cf2e 100644 --- a/code/game/mecha/equipment/tools/shield_omni.dm +++ b/code/game/mecha/equipment/tools/shield_omni.dm @@ -77,7 +77,8 @@ /obj/item/shield_projector/rectangle/mecha/Initialize() . = ..() my_mech = loc - GLOB.moved_event.register(my_mech, src, /obj/item/shield_projector/proc/update_shield_positions) + RegisterSignal(my_mech, COMSIG_OBSERVER_MOVED, /obj/item/shield_projector/proc/update_shield_positions) + my_mech.AddComponent(/datum/component/recursive_move) update_shift(my_mech) /obj/item/shield_projector/rectangle/mecha/proc/update_shift(atom/movable/mech) @@ -88,7 +89,7 @@ shift_y = round(y_dif, 1) /obj/item/shield_projector/rectangle/mecha/Destroy() - GLOB.moved_event.unregister(my_mech, src, /obj/item/shield_projector/proc/update_shield_positions) + UnregisterSignal(my_mech, COMSIG_OBSERVER_MOVED) my_mech = null ..() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index ebc1e22aa1..34395e0dcf 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -664,20 +664,20 @@ switch(emagged) if(0) emagged = 0.5 - visible_message("\icon[src][bicon(src)] [src] beeps: \"DB error \[Code 0x00F1\]\"") + visible_message("[icon2html(src,viewers(src))] [src] beeps: \"DB error \[Code 0x00F1\]\"") sleep(10) - visible_message("\icon[src][bicon(src)] [src] beeps: \"Attempting auto-repair\"") + visible_message("[icon2html(src,viewers(src))] [src] beeps: \"Attempting auto-repair\"") sleep(15) - visible_message("\icon[src][bicon(src)] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") + visible_message("[icon2html(src,viewers(src))] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") sleep(30) - visible_message("\icon[src][bicon(src)] [src] beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"") + visible_message("[icon2html(src,viewers(src))] [src] beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"") req_access = null emagged = 1 return 1 if(0.5) - visible_message("\icon[src][bicon(src)] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") + visible_message("[icon2html(src,viewers(src))] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") if(1) - visible_message("\icon[src][bicon(src)] [src] beeps: \"No records in User DB\"") + visible_message("[icon2html(src,viewers(src))] [src] beeps: \"No records in User DB\"") /obj/machinery/mecha_part_fabricator/proc/eject_materials(var/material, var/amount) // 0 amount = 0 means ejecting a full stack; -1 means eject everything var/recursive = amount == -1 ? TRUE : FALSE diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 07bba04dc1..1e054279ca 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -538,7 +538,7 @@ if(equipment?.len) . += "It's equipped with:" for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment) - . += "\icon[ME][bicon(ME)] [ME]" + . += "[icon2html(ME,user.client)] [ME]" /obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits. return @@ -2439,7 +2439,7 @@ /obj/mecha/proc/occupant_message(message as text) if(message) if(src.occupant && src.occupant.client) - to_chat(src.occupant, "\icon[src][bicon(src)] [message]") + to_chat(src.occupant, "[icon2html(src, src.occupant.client)] [message]") return /obj/mecha/proc/log_message(message as text,red=null) diff --git a/code/game/objects/effects/temporary_visuals/temporary_visual.dm b/code/game/objects/effects/temporary_visuals/temporary_visual.dm index 84e8e1c031..5bbb7a19f1 100644 --- a/code/game/objects/effects/temporary_visuals/temporary_visual.dm +++ b/code/game/objects/effects/temporary_visuals/temporary_visual.dm @@ -13,7 +13,7 @@ . = ..() if(randomdir) dir = pick(list(NORTH, SOUTH, EAST, WEST)) - timerid = QDEL_IN(src, duration) + timerid = QDEL_IN_STOPPABLE(src, duration) /obj/effect/temp_visual/Destroy() . = ..() @@ -35,4 +35,3 @@ if(set_dir) dir = set_dir . = ..() - diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 609822a756..83844f7995 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -703,7 +703,14 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. //Looking through a scope or binoculars should /not/ improve your periphereal vision. Still, increase viewsize a tiny bit so that sniping isn't as restricted to NSEW /obj/item/var/ignore_visor_zoom_restriction = FALSE -/obj/item/proc/zoom(var/tileoffset = 14,var/viewsize = 9) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view +/obj/item/proc/zoom(var/mob/living/M, var/tileoffset = 14,var/viewsize = 9) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view + + if(isliving(usr)) //Always prefer usr if set + M = usr + + if(!isliving(M)) + return 0 + var/devicename @@ -714,25 +721,26 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. var/cannotzoom - if((usr.stat && !zoom) || !(istype(usr,/mob/living/carbon/human))) - to_chat(usr, "You are unable to focus through the [devicename].") + if((M.stat && !zoom) || !(istype(M,/mob/living/carbon/human))) + to_chat(M, "You are unable to focus through the [devicename].") cannotzoom = 1 - else if(!zoom && (global_hud.darkMask[1] in usr.client.screen)) - to_chat(usr, "Your visor gets in the way of looking through the [devicename].") + else if(!zoom && (global_hud.darkMask[1] in M.client.screen)) + to_chat(M, "Your visor gets in the way of looking through the [devicename].") cannotzoom = 1 - else if(!zoom && usr.get_active_hand() != src) - to_chat(usr, "You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better.") + else if(!zoom && M.get_active_hand() != src) + to_chat(M, "You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better.") cannotzoom = 1 //We checked above if they are a human and returned already if they weren't. - var/mob/living/carbon/human/H = usr + var/mob/living/carbon/human/H = M if(!zoom && !cannotzoom) if(H.hud_used.hud_shown) H.toggle_zoom_hud() // If the user has already limited their HUD this avoids them having a HUD when they zoom in H.set_viewsize(viewsize) zoom = 1 - GLOB.moved_event.register(H, src, PROC_REF(zoom)) + H.AddComponent(/datum/component/recursive_move) + RegisterSignal(H, COMSIG_OBSERVER_MOVED, PROC_REF(zoom), override = TRUE) var/tilesize = 32 var/viewoffset = tilesize * tileoffset @@ -751,7 +759,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. H.client.pixel_x = -viewoffset H.client.pixel_y = 0 - H.visible_message("[usr] peers through the [zoomdevicename ? "[zoomdevicename] of the [src.name]" : "[src.name]"].") + H.visible_message("[M] peers through the [zoomdevicename ? "[zoomdevicename] of the [src.name]" : "[src.name]"].") if(!ignore_visor_zoom_restriction) H.looking_elsewhere = TRUE H.handle_vision() @@ -761,7 +769,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. if(!H.hud_used.hud_shown) H.toggle_zoom_hud() zoom = 0 - GLOB.moved_event.unregister(H, src, PROC_REF(zoom)) + UnregisterSignal(H, COMSIG_OBSERVER_MOVED) H.client.pixel_x = 0 H.client.pixel_y = 0 @@ -769,7 +777,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. H.handle_vision() if(!cannotzoom) - usr.visible_message("[zoomdevicename ? "[usr] looks up from the [src.name]" : "[usr] lowers the [src.name]"].") + M.visible_message("[zoomdevicename ? "[M] looks up from the [src.name]" : "[M] lowers the [src.name]"].") return diff --git a/code/game/objects/items/devices/ai_detector.dm b/code/game/objects/items/devices/ai_detector.dm index 7bb92bf216..d5ca5aaa52 100644 --- a/code/game/objects/items/devices/ai_detector.dm +++ b/code/game/objects/items/devices/ai_detector.dm @@ -94,22 +94,22 @@ if(new_state != old_state) switch(new_state) if(PROXIMITY_OFF_CAMERANET) - to_chat(carrier, "\icon[src][bicon(src)] Now outside of camera network.") + to_chat(carrier, "[icon2html(src, carrier.client)] Now outside of camera network.") carrier << 'sound/machines/defib_failed.ogg' if(PROXIMITY_NONE) - to_chat(carrier, "\icon[src][bicon(src)] Now within camera network, AI and cameras unfocused.") + to_chat(carrier, "[icon2html(src, carrier.client)] Now within camera network, AI and cameras unfocused.") carrier << 'sound/machines/defib_safetyOff.ogg' if(PROXIMITY_NEAR) - to_chat(carrier, "\icon[src][bicon(src)] Warning: AI focus at nearby location.") + to_chat(carrier, "[icon2html(src, carrier.client)] Warning: AI focus at nearby location.") carrier << 'sound/machines/defib_SafetyOn.ogg' if(PROXIMITY_ON_SCREEN) - to_chat(carrier, "\icon[src][bicon(src)] Alert: AI or camera focused at current location!") + to_chat(carrier, "[icon2html(src, carrier.client)] Alert: AI or camera focused at current location!") carrier <<'sound/machines/defib_ready.ogg' if(PROXIMITY_TRACKING) - to_chat(carrier, "\icon[src][bicon(src)] Danger: AI is actively tracking you!") + to_chat(carrier, "[icon2html(src, carrier.client)] Danger: AI is actively tracking you!") carrier << 'sound/machines/defib_success.ogg' if(PROXIMITY_TRACKING_FAIL) - to_chat(carrier, "\icon[src][bicon(src)] Danger: AI is attempting to actively track you, but you are outside of the camera network!") + to_chat(carrier, "[icon2html(src, carrier.client)] Danger: AI is attempting to actively track you, but you are outside of the camera network!") carrier <<'sound/machines/defib_ready.ogg' @@ -118,4 +118,4 @@ #undef PROXIMITY_NEAR #undef PROXIMITY_ON_SCREEN #undef PROXIMITY_TRACKING -#undef PROXIMITY_TRACKING_FAIL \ No newline at end of file +#undef PROXIMITY_TRACKING_FAIL diff --git a/code/game/objects/items/devices/communicator/UI_tgui.dm b/code/game/objects/items/devices/communicator/UI_tgui.dm index 2f4e73c5eb..fb59fd2a32 100644 --- a/code/game/objects/items/devices/communicator/UI_tgui.dm +++ b/code/game/objects/items/devices/communicator/UI_tgui.dm @@ -382,7 +382,7 @@ im_list += list(list("address" = exonet.address, "to_address" = their_address, "im" = text)) log_pda("(COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]", usr) var/obj/item/device/communicator/comm = exonet.get_atom_from_address(their_address) - to_chat(usr, "\icon[src][bicon(src)] Sent message to [istype(comm, /obj/item/device/communicator) ? comm.owner : comm.name], \"[text]\" (Reply)") + to_chat(usr, "[icon2html(src, usr.client)] Sent message to [istype(comm, /obj/item/device/communicator) ? comm.owner : comm.name], \"[text]\" (Reply)") for(var/mob/M in player_list) if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) if(istype(M, /mob/new_player) || M.forbid_seeing_deadchat) diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index d4fb3ff04a..caece035da 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -302,7 +302,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() /obj/item/device/communicator/Destroy() for(var/mob/living/voice/voice in contents) voice_mobs.Remove(voice) - to_chat(voice, "\icon[src][bicon(src)] Connection timed out with remote host.") + to_chat(voice, "[icon2html(src, voice.client)] Connection timed out with remote host.") qdel(voice) close_connection(reason = "Connection timed out") diff --git a/code/game/objects/items/devices/communicator/messaging.dm b/code/game/objects/items/devices/communicator/messaging.dm index 2f9249dd5d..84c930479e 100644 --- a/code/game/objects/items/devices/communicator/messaging.dm +++ b/code/game/objects/items/devices/communicator/messaging.dm @@ -34,7 +34,7 @@ if(src in comm.voice_invites) comm.open_connection(src) return - to_chat(src, "\icon[origin_atom][bicon(origin_atom)] Receiving communicator request from [origin_atom]. To answer, use the Call Communicator \ + to_chat(src, "[icon2html(origin_atom,src.client)] Receiving communicator request from [origin_atom]. To answer, use the Call Communicator \ verb, and select that name to answer the call.") src << 'sound/machines/defib_SafetyOn.ogg' comm.voice_invites |= src @@ -44,7 +44,7 @@ random = random / 10 exonet.send_message(origin_address, "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms") if(message == "text") - to_chat(src, "\icon[origin_atom][bicon(origin_atom)] Received text message from [origin_atom]: \"[text]\"") + to_chat(src, "[icon2html(origin_atom,src.client)] Received text message from [origin_atom]: \"[text]\"") src << 'sound/machines/defib_safetyOff.ogg' exonet_messages.Add("From [origin_atom]:
[text]") return @@ -84,7 +84,7 @@ playsound(src, S, 50, 1) for (var/mob/O in hearers(2, loc)) - O.show_message(text("\icon[src][bicon(src)] *[ttone]*")) + O.show_message(text("[icon2html(src,O.client)] *[ttone]*")) alert_called = 1 update_icon() @@ -95,7 +95,7 @@ L = loc if(L) - to_chat(L, "\icon[src][bicon(src)] Message from [who]: \"[text]\" (Reply)") + to_chat(L, "[icon2html(src,L.client)] Message from [who]: \"[text]\" (Reply)") // This is the only Topic the communicators really uses /obj/item/device/communicator/Topic(href, href_list) @@ -108,7 +108,7 @@ exonet.send_message(comm.exonet.address, "text", message) im_list += list(list("address" = exonet.address, "to_address" = comm.exonet.address, "im" = message)) log_pda("(COMM: [src]) sent \"[message]\" to [exonet.get_atom_from_address(comm.exonet.address)]", usr) - to_chat(usr, "\icon[src][bicon(src)] Sent message to [istype(comm, /obj/item/device/communicator) ? comm.owner : comm.name], \"[message]\" (Reply)") + to_chat(usr, "[icon2html(src,usr.client)] Sent message to [istype(comm, /obj/item/device/communicator) ? comm.owner : comm.name], \"[message]\" (Reply)") // Verb: text_communicator() // Parameters: None diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm index bbf91d1ead..76ec48aa5b 100644 --- a/code/game/objects/items/devices/communicator/phone.dm +++ b/code/game/objects/items/devices/communicator/phone.dm @@ -39,15 +39,15 @@ comm.voice_requests.Remove(src) if(user) - comm.visible_message("\icon[src][bicon(src)] Connecting to [src].") - to_chat(user, "\icon[src][bicon(src)] Attempting to call [comm].") + comm.visible_message("[icon2html(src,viewers(src))] Connecting to [src].") + to_chat(user, "[icon2html(src,user.client)] Attempting to call [comm].") sleep(10) - to_chat(user, "\icon[src][bicon(src)] Dialing internally from [station_name()], [system_name()].") + to_chat(user, "[icon2html(src,user.client)] Dialing internally from [station_name()], [system_name()].") sleep(20) //If they don't have an exonet something is very wrong and we want a runtime. - to_chat(user, "\icon[src][bicon(src)] Connection re-routed to [comm] at [comm.exonet.address].") + to_chat(user, "[icon2html(src,user.client)] Connection re-routed to [comm] at [comm.exonet.address].") sleep(40) - to_chat(user, "\icon[src][bicon(src)] Connection to [comm] at [comm.exonet.address] established.") - comm.visible_message("\icon[src][bicon(src)] Connection to [src] at [exonet.address] established.") + to_chat(user, "[icon2html(src,user.client)] Connection to [comm] at [comm.exonet.address] established.") + comm.visible_message("[icon2html(src,viewers(src))] Connection to [src] at [exonet.address] established.") sleep(20) src.add_communicating(comm) @@ -86,28 +86,28 @@ //Now for some connection fluff. if(user) - to_chat(user, "\icon[src][bicon(src)] Connecting to [candidate].") - to_chat(new_voice, "\icon[src][bicon(src)] Attempting to call [src].") + to_chat(user, "[icon2html(src,user.client)] Connecting to [candidate].") + to_chat(new_voice, "[icon2html(src,new_voice.client)] Attempting to call [src].") sleep(10) - to_chat(new_voice, "\icon[src][bicon(src)] Dialing to [station_name()], Kara Subsystem, [system_name()].") + to_chat(new_voice, "[icon2html(src,new_voice.client)] Dialing to [station_name()], Kara Subsystem, [system_name()].") sleep(20) - to_chat(new_voice, "\icon[src][bicon(src)] Connecting to [station_name()] telecommunications array.") + to_chat(new_voice, "[icon2html(src,new_voice.client)] Connecting to [station_name()] telecommunications array.") sleep(40) - to_chat(new_voice, "\icon[src][bicon(src)] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].") + to_chat(new_voice, "[icon2html(src,new_voice.client)] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].") sleep(20) //We're connected, no need to hide everything. new_voice.client.screen.Remove(blackness) qdel(blackness) - to_chat(new_voice, "\icon[src][bicon(src)] Connection to [src] established.") + to_chat(new_voice, "[icon2html(src,new_voice.client)] Connection to [src] established.") to_chat(new_voice, "To talk to the person on the other end of the call, just talk normally.") to_chat(new_voice, "If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.") to_chat(new_voice, "Remember, your character does not know anything you've learned from observing!") if(new_voice.mind) new_voice.mind.assigned_role = "Disembodied Voice" if(user) - to_chat(user, "\icon[src][bicon(src)] Your communicator is now connected to [candidate]'s communicator.") + to_chat(user, "[icon2html(src,new_voice.client)] Your communicator is now connected to [candidate]'s communicator.") // Proc: close_connection() // Parameters: 3 (user - the user who initiated the disconnect, target - the mob or device being disconnected, reason - string shown when disconnected) @@ -120,8 +120,8 @@ for(var/mob/living/voice/voice in voice_mobs) //Handle ghost-callers if(target && voice != target) //If no target is inputted, it deletes all of them. continue - to_chat(voice, "\icon[src][bicon(src)] [reason].") - visible_message("\icon[src][bicon(src)] [reason].") + to_chat(voice, "[icon2html(src,voice.client)] [reason].") + visible_message("[icon2html(src,viewers(src))] [reason].") voice_mobs.Remove(voice) qdel(voice) update_icon() @@ -131,8 +131,8 @@ continue src.del_communicating(comm) comm.del_communicating(src) - comm.visible_message("\icon[src][bicon(src)] [reason].") - visible_message("\icon[src][bicon(src)] [reason].") + comm.visible_message("[icon2html(src,viewers(src))] [reason].") + visible_message("[icon2html(src,viewers(src))] [reason].") if(comm.camera && video_source == comm.camera) //We hung up on the person on video end_video() if(camera && comm.video_source == camera) //We hung up on them while they were watching us @@ -163,7 +163,7 @@ if(ringer) playsound(src, 'sound/machines/twobeep.ogg', 50, 1) for (var/mob/O in hearers(2, loc)) - O.show_message(text("\icon[src][bicon(src)] *beep*")) + O.show_message(text("[icon2html(src,O.client)] *beep*")) alert_called = 1 update_icon() @@ -174,7 +174,7 @@ L = loc if(L) - to_chat(L, "\icon[src][bicon(src)] Communications request from [who].") + to_chat(L, "[icon2html(src,L.client)] Communications request from [who].") // Proc: del_request() // Parameters: 1 (candidate - the ghost or communicator to be declined) @@ -197,13 +197,13 @@ us = loc if(us) - to_chat(us, "\icon[src][bicon(src)] Declined request.") + to_chat(us, "[icon2html(src,us.client)] Declined request.") // Proc: see_emote() // Parameters: 2 (M - the mob the emote originated from, text - the emote's contents) // Description: Relays the emote to all linked communicators. /obj/item/device/communicator/see_emote(mob/living/M, text) - var/rendered = "\icon[src][bicon(src)] [text]" + for(var/obj/item/device/communicator/comm in communicating) var/turf/T = get_turf(comm) if(!T) return @@ -216,7 +216,7 @@ var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display mobs_to_relay = in_range["mobs"] //VOREStation Edit End - + var/rendered = "[icon2html(src,mobs_to_relay)] [text]" for(var/mob/mob in mobs_to_relay) //We can't use visible_message(), or else we will get an infinite loop if two communicators hear each other. var/dst = get_dist(get_turf(mob),get_turf(comm)) if(dst <= video_range) @@ -250,20 +250,20 @@ var/message = combined["formatted"] var/name_used = M.GetVoice() var/rendered = null - rendered = "\icon[src][bicon(src)] [name_used] [message]" + rendered = "[icon2html(src,mobs_to_relay)] [name_used] [message]" mob.show_message(rendered, 2) // Proc: show_message() // Parameters: 4 (msg - the message, type - number to determine if message is visible or audible, alt - unknown, alt_type - unknown) // Description: Relays the message to all linked communicators. /obj/item/device/communicator/show_message(msg, type, alt, alt_type) - var/rendered = "\icon[src][bicon(src)] [msg]" + for(var/obj/item/device/communicator/comm in communicating) var/turf/T = get_turf(comm) if(!T) return var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) var/list/mobs_to_relay = in_range["mobs"] - + var/rendered = "[icon2html(src, mobs_to_relay)] [msg]" for(var/mob/mob in mobs_to_relay) mob.show_message(rendered) ..() @@ -339,28 +339,29 @@ return if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something - to_chat(user, "\icon[src][bicon(src)]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") + to_chat(user, "[icon2html(src, user.client)]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") return - to_chat(user, "\icon[src][bicon(src)] Attempting to start video over existing call.") + to_chat(user, "[icon2html(src, user.client)] Attempting to start video over existing call.") sleep(30) - to_chat(user, "\icon[src][bicon(src)] Please wait...") + to_chat(user, "[icon2html(src, user.client)] Please wait...") video_source = comm.camera - comm.visible_message("\icon[src][bicon(src)] New video connection from [comm].") + comm.visible_message("[icon2html(src,viewers(src))] New video connection from [comm].") update_active_camera_screen() - GLOB.moved_event.register(video_source, src, PROC_REF(update_active_camera_screen)) + RegisterSignal(video_source, COMSIG_OBSERVER_MOVED, PROC_REF(update_active_camera_screen)) + video_source.AddComponent(/datum/component/recursive_move) update_icon() // Proc: end_video() // Parameters: reason - the text reason to print for why it ended // Description: Ends the video call by clearing video_source /obj/item/device/communicator/proc/end_video(var/reason) - GLOB.moved_event.unregister(video_source, src, PROC_REF(update_active_camera_screen)) + UnregisterSignal(video_source, COMSIG_OBSERVER_MOVED) show_static() video_source = null - . = "\icon[src][bicon(src)] [reason ? reason : "Video session ended"]." + . = "[bicon(src)] [reason ? reason : "Video session ended"]." visible_message(.) update_icon() diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index d127fe9404..d12833ba6f 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -65,7 +65,7 @@ STOP_PROCESSING(SSobj, src) update_icon() update_sound() - to_chat(user, "\icon[src][bicon(src)] You switch [scanning ? "on" : "off"] \the [src].") + to_chat(user, "[icon2html(src, user.client)] You switch [scanning ? "on" : "off"] \the [src].") /obj/item/device/geiger/update_icon() if(!scanning) @@ -120,7 +120,7 @@ scanning = !scanning update_icon() update_sound() - to_chat(user, "\icon[src] You switch [scanning ? "on" : "off"] \the [src].") + to_chat(user, "[icon2html(src, user.client)] You switch [scanning ? "on" : "off"] \the [src].") /obj/item/device/geiger/wall/update_icon() if(!scanning) @@ -165,4 +165,4 @@ /obj/item/device/geiger/wall/west pixel_x = -28 - dir = WEST \ No newline at end of file + dir = WEST diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 1861694fae..df2ce116b1 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -38,15 +38,16 @@ var/list/GPS_list = list() /obj/item/device/gps/proc/update_holder() if(holder && loc != holder) - GLOB.moved_event.unregister(holder, src) - GLOB.dir_set_event.unregister(holder, src) + UnregisterSignal(holder, COMSIG_OBSERVER_MOVED) + //GLOB.dir_set_event.unregister(holder, src) holder.client?.screen -= compass holder = null if(istype(loc, /mob)) holder = loc - GLOB.moved_event.register(holder, src, PROC_REF(update_compass)) - GLOB.dir_set_event.register(holder, src, PROC_REF(update_compass)) + RegisterSignal(holder, COMSIG_OBSERVER_MOVED, PROC_REF(update_compass), override = TRUE) + holder.AddComponent(/datum/component/recursive_move) + //GLOB.dir_set_event.register(holder, src, PROC_REF(update_compass)) if(holder && tracking) if(!is_in_processing_list) diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index 38f1c2afdf..f27ec95985 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -71,12 +71,12 @@ to_chat(user, "You are already hacking!") return 0 if(!is_type_in_list(target, supported_types)) - to_chat(user, "\icon[src][bicon(src)] Unable to hack this target, invalid target type.") + to_chat(user, "[icon2html(src, user.client)] Unable to hack this target, invalid target type.") return 0 var/obj/machinery/door/airlock/D = target if(D.security_level > max_level) - to_chat(user, "\icon[src][bicon(src)] Target's electronic security is too complex.") + to_chat(user, "[icon2html(src, user.client)] Target's electronic security is too complex.") return 0 var/found = known_targets.Find(D) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 86a1af1d72..004692f2a9 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -20,13 +20,15 @@ . = ..() var/area/A = get_area(src) if(A) - GLOB.apc_event.register(A, src, /atom/proc/update_icon) + RegisterSignal(A, COMSIG_OBSERVER_APC, /atom/proc/update_icon) update_icon() /obj/item/device/radio/intercom/Destroy() var/area/A = get_area(src) if(A) - GLOB.apc_event.unregister(A, src, /atom/proc/update_icon) + UnregisterSignal(A, COMSIG_OBSERVER_APC) + if(circuit) + QDEL_NULL(circuit) return ..() /obj/item/device/radio/intercom/custom diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 616ce62b45..26af181ae9 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -496,7 +496,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) distance = 99 else distance = jamming["distance"] - to_chat(M, "\icon[src][bicon(src)] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.") + to_chat(M, "[icon2html(src, M.client)] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.") return FALSE // First, we want to generate a new radio signal diff --git a/code/game/objects/items/devices/text_to_speech.dm b/code/game/objects/items/devices/text_to_speech.dm index c97693ed5f..749bb65173 100644 --- a/code/game/objects/items/devices/text_to_speech.dm +++ b/code/game/objects/items/devices/text_to_speech.dm @@ -24,7 +24,7 @@ var/message = sanitize(tgui_input_text(user,"Choose a message to relay to those around you.")) if(message) - audible_message("\icon[src][bicon(src)] \The [src.name] states, \"[message]\"", runemessage = "synthesized speech") + audible_message("[icon2html(src, user.client)] \The [src.name] states, \"[message]\"", runemessage = "synthesized speech") if(ismob(loc)) loc.audible_message("", runemessage = "\[TTS Voice\] [message]") diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 2331485fd1..9dadaff977 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -716,7 +716,7 @@ if(stored_item && opened && !searching) searching = TRUE if(do_after(user, 10)) - to_chat(user, "You find \icon[stored_item] [stored_item] in [src]!") + to_chat(user, "You find [icon2html(stored_item, user.client)] [stored_item] in [src]!") stored_item.forceMove(get_turf(src)) stored_item = null searching = FALSE @@ -813,7 +813,7 @@ if(stored_item && opened && !searching) searching = TRUE if(do_after(user, 10)) - to_chat(user, "You find \icon[stored_item] [stored_item] in [src]!") + to_chat(user, "You find [icon2html(stored_item, user.client)] [stored_item] in [src]!") stored_item.forceMove(get_turf(src)) stored_item = null searching = FALSE @@ -1434,4 +1434,4 @@ /obj/structure/balloon/ghost name = "giant ghost balloon" desc = "Oh no, it's a ghost! Oh wait, it's just a balloon. Phew!" - icon_state = "ghostballoon" \ No newline at end of file + icon_state = "ghostballoon" diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index 12ce075114..a5a08d1635 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -667,7 +667,7 @@ /obj/item/toy/minigibber/attackby(obj/O, mob/user, params) if(istype(O,/obj/item/toy/figure) || istype(O,/obj/item/toy/character) && O.loc == user) - to_chat(user, "You start feeding \the [O] \icon[O][bicon(O)] into \the [src]'s mini-input.") + to_chat(user, "You start feeding \the [O] [icon2html(O, user.client)] into \the [src]'s mini-input.") if(do_after(user, 10, target = src)) if(O.loc != user) to_chat(user, "\The [O] is too far away to feed into \the [src]!") diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm index 450a2c6e39..0439fb1aa8 100644 --- a/code/game/objects/items/weapons/capture_crystal.dm +++ b/code/game/objects/items/weapons/capture_crystal.dm @@ -399,9 +399,7 @@ active = TRUE else //Shoot, it didn't work and now it's mad!!! S.ai_holder.go_wake() - S.ai_holder.target = user - S.ai_holder.track_target_position() - S.ai_holder.set_stance(STANCE_FIGHT) + S.ai_holder.give_target(user, urgent = TRUE) user.visible_message("\The [src] bonks into \the [S], angering it!") playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1) to_chat(user, "\The [src] clicks unsatisfyingly.") diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index c9bed28a5e..1564465294 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -62,6 +62,13 @@ board_type = new /datum/frame/frame_types/intercom matter = list(MAT_STEEL = 50, MAT_GLASS = 50) + +/obj/item/weapon/circuitboard/intercom/Destroy() + if(istype(loc, /obj/item/device/radio/intercom)) + var/obj/item/device/radio/intercom/my_machine = loc + my_machine.circuit = null + . = ..() + /obj/item/weapon/circuitboard/keycard_auth name = T_BOARD("keycard authenticator") build_path = /obj/machinery/keycard_auth diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index f7b1f3b197..fe35bdc453 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -93,8 +93,8 @@ return data /obj/item/weapon/card/id/attack_self(mob/user as mob) - user.visible_message("\The [user] shows you: \icon[src][bicon(src)] [src.name]. The assignment on the card: [src.assignment]",\ - "You flash your ID card: \icon[src][bicon(src)] [src.name]. The assignment on the card: [src.assignment]") + user.visible_message("\The [user] shows you: [icon2html(src,viewers(src))] [src.name]. The assignment on the card: [src.assignment]",\ + "You flash your ID card: [icon2html(src, user.client)] [src.name]. The assignment on the card: [src.assignment]") src.add_fingerprint(user) return @@ -110,7 +110,7 @@ set category = "Object" set src in usr - to_chat(usr, "\icon[src][bicon(src)] [src.name]: The current assignment on the card is [src.assignment].") + to_chat(usr, "[icon2html(src, usr.client)] [src.name]: The current assignment on the card is [src.assignment].") to_chat(usr, "The blood type on the card is [blood_type].") to_chat(usr, "The DNA hash on the card is [dna_hash].") to_chat(usr, "The fingerprint hash on the card is [fingerprint_hash].") diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index a7137dded1..3d26e518a1 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -206,14 +206,16 @@ /obj/item/weapon/storage/bag/ore/equipped(mob/user) ..() if(user.get_inventory_slot(src) == slot_wear_suit || slot_l_hand || slot_l_hand || slot_belt) //Basically every place they can go. Makes sure it doesn't unregister if moved to other slots. - GLOB.moved_event.register(user, src, /obj/item/weapon/storage/bag/ore/proc/autoload, user) + user.AddComponent(/datum/component/recursive_move) + RegisterSignal(user, COMSIG_OBSERVER_MOVED, /obj/item/weapon/storage/bag/ore/proc/autoload, user, override = TRUE) /obj/item/weapon/storage/bag/ore/dropped(mob/user) ..() if(user.get_inventory_slot(src) == slot_wear_suit || slot_l_hand || slot_l_hand || slot_belt) //See above. This should really be a define. - GLOB.moved_event.register(user, src, /obj/item/weapon/storage/bag/ore/proc/autoload, user) + user.AddComponent(/datum/component/recursive_move) + RegisterSignal(user, COMSIG_OBSERVER_MOVED, /obj/item/weapon/storage/bag/ore/proc/autoload, user, override = TRUE) else - GLOB.moved_event.unregister(user, src) + UnregisterSignal(user, COMSIG_OBSERVER_MOVED) /obj/item/weapon/storage/bag/ore/proc/autoload(mob/user) var/obj/item/weapon/ore/O = locate() in get_turf(src) @@ -492,4 +494,4 @@ max_storage_space = ITEMSIZE_COST_NORMAL * 15 max_w_class = ITEMSIZE_NORMAL w_class = ITEMSIZE_SMALL - can_hold = list(/obj/item/weapon/forensics/swab,/obj/item/weapon/sample/print,/obj/item/weapon/sample/fibers,/obj/item/weapon/evidencebag) \ No newline at end of file + can_hold = list(/obj/item/weapon/forensics/swab,/obj/item/weapon/sample/print,/obj/item/weapon/sample/fibers,/obj/item/weapon/evidencebag) diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm index 5e519f8f4f..a5cb000f71 100644 --- a/code/game/objects/items/weapons/syndie.dm +++ b/code/game/objects/items/weapons/syndie.dm @@ -50,7 +50,7 @@ icon_state = "c-4[size]_1" playsound(src, 'sound/weapons/armbomb.ogg', 75, 1) for(var/mob/O in hearers(src, null)) - O.show_message("\icon[src][bicon(src)] The [src.name] beeps! ") + O.show_message("[icon2html(src, O.client)] The [src.name] beeps! ") sleep(50) explosion(get_turf(src), devastate, heavy_impact, light_impact, flash_range) for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors. diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 8c176ecbbb..c1cb09fecb 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -455,7 +455,7 @@ var/list/global/tank_gauge_cache = list() return T.assume_air(air_contents) playsound(src, 'sound/weapons/Gunshot_shotgun.ogg', 20, 1) - visible_message("\icon[src][bicon(src)] \The [src] flies apart!", "You hear a bang!") + visible_message("[icon2html(src,viewers(src))] \The [src] flies apart!", "You hear a bang!") T.hotspot_expose(air_contents.temperature, 70, 1) @@ -500,7 +500,7 @@ var/list/global/tank_gauge_cache = list() T.assume_air(leaked_gas) if(!leaking) - visible_message("\icon[src][bicon(src)] \The [src] relief valve flips open with a hiss!", "You hear hissing.") + visible_message("[icon2html(src,viewers(src))] \The [src] relief valve flips open with a hiss!", "You hear hissing.") playsound(src, 'sound/effects/spray.ogg', 10, 1, -3) leaking = 1 #ifdef FIREDBG diff --git a/code/game/objects/items/weapons/tools/combitool.dm b/code/game/objects/items/weapons/tools/combitool.dm index 2f2ddbf4a5..bfc4baeb85 100644 --- a/code/game/objects/items/weapons/tools/combitool.dm +++ b/code/game/objects/items/weapons/tools/combitool.dm @@ -29,7 +29,7 @@ if(loc == user && tools.len) . += "It has the following fittings:" for(var/obj/item/tool in tools) - . += "\icon[tool][bicon(tool)] - [tool.name][tools[current_tool]==tool?" (selected)":""]") + . += "[icon2html(tool,)] - [tool.name][tools[current_tool]==tool?" (selected)":""]") /obj/item/weapon/combitool/New() ..() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 21b78b9a49..11667d2f53 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -57,7 +57,7 @@ /obj/CanUseTopic(var/mob/user, var/datum/tgui_state/state = GLOB.tgui_default_state) if(user.CanUseObjTopic(src)) return ..() - to_chat(user, "\icon[src][bicon(src)]Access Denied!") + to_chat(user, "[icon2html(src, user.client)]Access Denied!") return STATUS_CLOSE /mob/living/silicon/CanUseObjTopic(var/obj/O) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index e63debb8ef..8e5b177ab9 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -181,11 +181,12 @@ LINEN BINS . += "There are [amount] bed sheets in the bin." /obj/structure/bedsheetbin/update_icon() - switch(amount) - if(0) icon_state = "linenbin-empty" - if(1 to amount / 2) icon_state = "linenbin-half" - else icon_state = "linenbin-full" - + if(amount == 0) + icon_state = "linenbin-empty" + else if(amount <= (amount / 2)) + icon_state = "linenbin-half" + else + icon_state = "linenbin-full" /obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/bedsheet)) diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index fe69c9f30f..d665ca5ab8 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -300,7 +300,7 @@ user.drop_from_inventory(I, src) I.forceMove(src) stored_item = I - src.visible_message("\icon[src][bicon(src)] \icon[I][bicon(I)] [user] places [I] into [src].") + src.visible_message("[icon2html(src,viewers(src))] [icon2html(I,viewers(src))] [user] places [I] into [src].") return else to_chat(user, "You refrain from putting things into the plant pot.") @@ -311,7 +311,7 @@ to_chat(user, "You see nothing of interest in [src]...") else if(do_after(user, 10)) - to_chat(user, "You find \icon[stored_item][bicon(stored_item)] [stored_item] in [src]!") + to_chat(user, "You find [icon2html(stored_item, user.client)] [stored_item] in [src]!") stored_item.forceMove(get_turf(src)) stored_item = null ..() @@ -684,4 +684,3 @@ /obj/structure/flora/underwater/grass4 icon_state = "grass-4" - diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 8450a219b5..370d494f35 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -119,9 +119,9 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) . = ..(user) if(istype(mybucket)) var/contains = mybucket.reagents.total_volume - . += "\icon[src][bicon(src)] The bucket contains [contains] unit\s of liquid!" + . += "[icon2html(src, user.client)] The bucket contains [contains] unit\s of liquid!" else - . += "\icon[src][bicon(src)] There is no bucket mounted on it!" + . += "[icon2html(src, user.client)] There is no bucket mounted on it!" /obj/structure/janitorialcart/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob) if (istype(O, /obj/structure/mopbucket) && !mybucket) diff --git a/code/game/world.dm b/code/game/world.dm index 0087ae27e5..5a20d43b71 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,5 +1,19 @@ +/proc/prof_init() + var/lib + + switch(world.system_type) + if(MS_WINDOWS) lib = "prof.dll" + if(UNIX) lib = "libprof.so" + else CRASH("unsupported platform") + + var/init = LIBCALL(lib, "init")() + if("0" != init) CRASH("[lib] init error: [init]") + #define RECOMMENDED_VERSION 513 /world/New() + #ifdef TRACY + prof_init() + #endif world_startup_time = world.timeofday rollover_safety_date = world.realtime - world.timeofday // 00:00 today (ish, since floating point error with world.realtime) of today to_world_log("Map Loading Complete") diff --git a/code/modules/admin/verbs/modify_robot.dm b/code/modules/admin/verbs/modify_robot.dm index e90e06bd27..e7f4f246e1 100644 --- a/code/modules/admin/verbs/modify_robot.dm +++ b/code/modules/admin/verbs/modify_robot.dm @@ -43,14 +43,17 @@ var/list/all_modules = robot.module.modules all_modules += robot.module.emag while(TRUE) - var/add_item = tgui_input_list(usr, "Please select the module to add", "Modules", all_modules) - if(!istype(add_item, /obj/item/)) + var/add_item_select = tgui_input_list(usr, "Please select the module to add", "Modules", all_modules)//ChompEDIT + if(!istype(add_item_select, /obj/item/))//ChompEDIT break + var/obj/item/add_item = add_item_select//ChompEDIT robot.module.emag.Remove(add_item) robot.module.modules.Remove(add_item) robot.module.contents.Remove(add_item) target.module.modules.Add(add_item) target.module.contents.Add(add_item) + spawn(0) //ChompEDIT Must be after to allow the movement to finish + SEND_SIGNAL(add_item, COMSIG_OBSERVER_MOVED)//ChompEDIT - report the movement since setting loc doesn't call Move or Moved target.hud_used.update_robot_modules_display() to_chat(usr, "You added \"[add_item]\" to [target].") if(istype(add_item, /obj/item/stack/)) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 7725ad9272..d4a405e35c 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -17,7 +17,7 @@ return var/icon/cross = icon('icons/obj/storage.dmi',"bible") - var/msg = "" + span_blue("\icon[cross][bicon(cross)] " + span_purple("PRAY: ") + "[key_name(src, 1)] [ADMIN_QUE(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] ([admin_jump_link(src, src)]) [ADMIN_CA(src)] [ADMIN_SC(src)] [ADMIN_SMITE(src)]: [raw_msg]") + "" + var/msg = "" + span_blue("[icon2html(cross, GLOB.admins)] " + span_purple("PRAY: ") + "[key_name(src, 1)] [ADMIN_QUE(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] ([admin_jump_link(src, src)]) [ADMIN_CA(src)] [ADMIN_SC(src)] [ADMIN_SMITE(src)]: [raw_msg]") + "" for(var/client/C in GLOB.admins) if(R_ADMIN|R_EVENT & C.holder.rights) diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm index 78e85bfa3e..f8bf5cd9dc 100644 --- a/code/modules/ai/ai_holder.dm +++ b/code/modules/ai/ai_holder.dm @@ -20,7 +20,13 @@ return ..() /mob/living/Destroy() - QDEL_NULL(ai_holder) + if(ai_holder) + ai_holder.holder = null + ai_holder.UnregisterSignal(src,COMSIG_MOB_STATCHANGE) + if(ai_holder.faction_friends && ai_holder.faction_friends.len) //This list is shared amongst the faction + ai_holder.faction_friends -= src + ai_holder.faction_friends = null + QDEL_NULL(ai_holder) return ..() /mob/living/Login() @@ -222,7 +228,7 @@ holder = new_holder home_turf = get_turf(holder) manage_processing(AI_PROCESSING) - GLOB.stat_set_event.register(holder, src, PROC_REF(holder_stat_change)) + RegisterSignal(holder, COMSIG_MOB_STATCHANGE, PROC_REF(holder_stat_change)) ..() /datum/ai_holder/Destroy() diff --git a/code/modules/ai/ai_holder_cooperation.dm b/code/modules/ai/ai_holder_cooperation.dm index dd6228f460..97f3781ad5 100644 --- a/code/modules/ai/ai_holder_cooperation.dm +++ b/code/modules/ai/ai_holder_cooperation.dm @@ -18,8 +18,9 @@ build_faction_friends() /datum/ai_holder/Destroy() - if(faction_friends.len) //This list is shared amongst the faction - faction_friends -= src + if(faction_friends) + if(faction_friends.len) //This list is shared amongst the faction + faction_friends -= src return ..() // Handles everything about that list. @@ -114,4 +115,3 @@ add_attacker(their_target) // We won't wait and 'warn' them while they're stabbing our ally set_follow(friend, 10 SECONDS) ai_log("help_requested() : Exiting.", AI_LOG_DEBUG) - diff --git a/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm b/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm index c23a4d92e6..4455b47072 100644 --- a/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm +++ b/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm @@ -187,7 +187,7 @@ /datum/ai_holder/simple_mob/humanoid/hostile/post_ranged_attack(atom/A) //Pick a random turf to step into var/turf/T = get_step(holder, pick(alldirs)) - if(check_trajectory(A, T)) // Can we even hit them from there? + if((A in check_trajectory(A, T))) // Can we even hit them from there? holder.IMove(T) holder.face_atom(A) @@ -197,4 +197,3 @@ /datum/ai_holder/simple_mob/passive/speedy base_wander_delay = 1 - diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm index 8c0a38b4ff..b918321f8b 100644 --- a/code/modules/ai/ai_holder_targeting.dm +++ b/code/modules/ai/ai_holder_targeting.dm @@ -82,6 +82,8 @@ target = new_target + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(remove_target)) + if(target != null) lose_target_time = 0 track_target_position() @@ -189,6 +191,7 @@ ai_log("lose_target() : Entering.", AI_LOG_TRACE) if(target) ai_log("lose_target() : Had a target, setting to null and LTT.", AI_LOG_DEBUG) + UnregisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(remove_target)) target = null lose_target_time = world.time @@ -204,6 +207,7 @@ /datum/ai_holder/proc/remove_target() ai_log("remove_target() : Entering.", AI_LOG_TRACE) if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(remove_target)) target = null lose_target_time = 0 diff --git a/code/modules/ai/say_list.dm b/code/modules/ai/say_list.dm index f2bd5c028e..fb4e66651e 100644 --- a/code/modules/ai/say_list.dm +++ b/code/modules/ai/say_list.dm @@ -134,4 +134,4 @@ emote_hear = list("hisses") /datum/say_list/crab - emote_hear = list("hisses") \ No newline at end of file + emote_hear = list("hisses") diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 110a9cee35..32ee55d553 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -151,7 +151,7 @@ if(!D) return 0 if(!secured) - visible_message("\icon[src][bicon(src)] *beep* *beep*", "*beep* *beep*") + visible_message("[icon2html(src,viewers(src))] *beep* *beep*", "*beep* *beep*") if((normal) && (a_right) && (a_left)) if(a_right != D) a_right.pulsed(0) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index fb5566504e..7c6ce61458 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -98,7 +98,7 @@ pulse(0) QDEL_LIST_NULL(i_beams) //They will get recreated next process() if the situation is still appropriate if(!holder) - visible_message("\icon[src][bicon(src)] *beep* *beep*") + visible_message("[icon2html(src,viewers(src))] *beep* *beep*") /obj/item/device/assembly/infra/tgui_interact(mob/user, datum/tgui/ui) if(!secured) @@ -178,4 +178,4 @@ return if(istype(AM, /obj/effect/beam)) return - hit() \ No newline at end of file + hit() diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 7c12d5fb03..959d4566d2 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -47,7 +47,7 @@ var/turf/mainloc = get_turf(src) pulse(0) if(!holder) - mainloc.visible_message("\icon[src][bicon(src)] *beep* *beep*", "*beep* *beep*") + mainloc.visible_message("[icon2html(src,viewers(src))] *beep* *beep*", "*beep* *beep*") /obj/item/device/assembly/prox_sensor/process() if(scanning) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index a87a13a576..3232e602d0 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -116,7 +116,7 @@ if(!holder) for(var/mob/O in hearers(1, src.loc)) - O.show_message("\icon[src][bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) + O.show_message("[icon2html(src, O.client)] *beep* *beep*", 3, "*beep* *beep*", 2) /obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) if(!frequency) diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index dd13a1e4a2..fb47a020c3 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -44,7 +44,7 @@ return 0 pulse(0) if(!holder) - visible_message("\icon[src][bicon(src)] *beep* *beep*", "*beep* *beep*") + visible_message("[icon2html(src,viewers(src))] *beep* *beep*", "*beep* *beep*") /obj/item/device/assembly/timer/process() if(timing && time-- <= 0) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 7c8eee7fdf..2783f92b76 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -13,7 +13,7 @@ recorded = msg listening = 0 var/turf/T = get_turf(src) //otherwise it won't work in hand - T.visible_message("\icon[src][bicon(src)] beeps, \"Activation message is '[recorded]'.\"") + T.visible_message("[icon2html(src,viewers(src))] beeps, \"Activation message is '[recorded]'.\"") else if(findtext(msg, recorded)) pulse(0) @@ -23,7 +23,7 @@ if(!holder) listening = !listening var/turf/T = get_turf(src) - T.visible_message("\icon[src][bicon(src)] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") + T.visible_message("[icon2html(src,viewers(src))] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") /obj/item/device/assembly/voice/attack_self(mob/user) @@ -34,4 +34,4 @@ /obj/item/device/assembly/voice/toggle_secure() . = ..() - listening = 0 \ No newline at end of file + listening = 0 diff --git a/code/modules/asset_cache/asset_cache.dm b/code/modules/asset_cache/asset_cache.dm deleted file mode 100644 index 53a30d4299..0000000000 --- a/code/modules/asset_cache/asset_cache.dm +++ /dev/null @@ -1,110 +0,0 @@ -/* -Asset cache quick users guide: - -Make a datum in asset_list_items.dm with your assets for your thing. -Checkout asset_list.dm for the helper subclasses -The simple subclass will most like be of use for most cases. -Then call get_asset_datum() with the type of the datum you created and store the return -Then call .send(client) on that stored return value. - -Note: If your code uses output() with assets you will need to call asset_flush on the client and wait for it to return before calling output(). You only need do this if .send(client) returned TRUE -*/ - -//When sending mutiple assets, how many before we give the client a quaint little sending resources message -#define ASSET_CACHE_TELL_CLIENT_AMOUNT 8 - -//This proc sends the asset to the client, but only if it needs it. -//This proc blocks(sleeps) unless verify is set to false -/proc/send_asset(client/client, asset_name) - return send_asset_list(client, list(asset_name)) - -/// Sends a list of assets to a client -/// This proc will no longer block, use client.asset_flush() if you to need know when the client has all assets (such as for output()). (This is not required for browse() calls as they use the same message queue as asset sends) -/// client - a client or mob -/// asset_list - A list of asset filenames to be sent to the client. -/// Returns TRUE if any assets were sent. -/proc/send_asset_list(client/client, list/asset_list) - if(!istype(client)) - if(ismob(client)) - var/mob/M = client - if(M.client) - client = M.client - else - return - else - return - - var/list/unreceived = list() - - for (var/asset_name in asset_list) - var/datum/asset_cache_item/asset = SSassets.cache[asset_name] - if (!asset) - continue - var/asset_file = asset.resource - if (!asset_file) - continue - - var/asset_md5 = asset.md5 - if (client.sent_assets[asset_name] == asset_md5) - continue - unreceived[asset_name] = asset_md5 - - if (unreceived.len) - if (unreceived.len >= ASSET_CACHE_TELL_CLIENT_AMOUNT) - to_chat(client, "Sending Resources...") - - for(var/asset in unreceived) - var/datum/asset_cache_item/ACI - if ((ACI = SSassets.cache[asset])) - log_asset("Sending asset [asset] to client [client]") - client << browse_rsc(ACI.resource, asset) - - client.sent_assets |= unreceived - addtimer(CALLBACK(client, /client/proc/asset_cache_update_json), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) - return TRUE - return FALSE - -//This proc will download the files without clogging up the browse() queue, used for passively sending files on connection start. -//The proc calls procs that sleep for long times. -/proc/getFilesSlow(client/client, list/files, register_asset = TRUE, filerate = 3) - var/startingfilerate = filerate - for(var/file in files) - if (!client) - break - if (register_asset) - register_asset(file, files[file]) - - if (send_asset(client, file)) - if (!(--filerate)) - filerate = startingfilerate - client.asset_flush() - stoplag(0) //queuing calls like this too quickly can cause issues in some client versions - -//This proc "registers" an asset, it adds it to the cache for further use, you cannot touch it from this point on or you'll fuck things up. -//icons and virtual assets get copied to the dyn rsc before use -/proc/register_asset(asset_name, asset) - var/datum/asset_cache_item/ACI = new(asset_name, asset) - - //this is technically never something that was supported and i want metrics on how often it happens if at all. - if (SSassets.cache[asset_name]) - var/datum/asset_cache_item/OACI = SSassets.cache[asset_name] - if (OACI.md5 != ACI.md5) - stack_trace("ERROR: new asset added to the asset cache with the same name as another asset: [asset_name] existing asset md5: [OACI.md5] new asset md5:[ACI.md5]") - else - var/list/stacktrace = gib_stack_trace() - log_asset("WARNING: dupe asset added to the asset cache: [asset_name] existing asset md5: [OACI.md5] new asset md5:[ACI.md5]\n[stacktrace.Join("\n")]") - SSassets.cache[asset_name] = ACI - return ACI - -/// Returns the url of the asset, currently this is just its name, here to allow further work cdn'ing assets. -/// Can be given an asset as well, this is just a work around for buggy edge cases where two assets may have the same name, doesn't matter now, but it will when the cdn comes. -/proc/get_asset_url(asset_name, asset = null) - var/datum/asset_cache_item/ACI = SSassets.cache[asset_name] - return ACI?.url - -//Generated names do not include file extention. -//Used mainly for code that deals with assets in a generic way -//The same asset will always lead to the same asset name -/proc/generate_asset_name(file) - return "asset.[md5(fcopy_rsc(file))]" - diff --git a/code/modules/asset_cache/asset_cache_client.dm b/code/modules/asset_cache/asset_cache_client.dm index e25b996986..3cff8cb41f 100644 --- a/code/modules/asset_cache/asset_cache_client.dm +++ b/code/modules/asset_cache/asset_cache_client.dm @@ -1,5 +1,5 @@ -/// Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]" +/// Process asset cache client topic calls for `"asset_cache_confirm_arrival=[INT]"` /client/proc/asset_cache_confirm_arrival(job_id) var/asset_cache_job = round(text2num(job_id)) //because we skip the limiter, we have to make sure this is a valid arrival and not somebody tricking us into letting them append to a list without limit. @@ -10,17 +10,9 @@ return asset_cache_job || TRUE -/// Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING] +/// Process asset cache client topic calls for `"asset_cache_preload_data=[HTML+JSON_STRING]"` /client/proc/asset_cache_preload_data(data) - /*var/jsonend = findtextEx(data, "{{{ENDJSONDATA}}}") - if (!jsonend) - CRASH("invalid asset_cache_preload_data, no jsonendmarker")*/ - //var/json = html_decode(copytext(data, 1, jsonend)) var/json = data - - // This is a stupid workaround to BYOND injecting this pngfix mess into IE7 clients browse() - json = replacetext(json, "", "") - var/list/preloaded_assets = json_decode(json) for (var/preloaded_asset in preloaded_assets) @@ -30,19 +22,17 @@ sent_assets |= preloaded_assets -/// Updates the client side stored html/json combo file used to keep track of what assets the client has between restarts/reconnects. -/client/proc/asset_cache_update_json(verify = FALSE, list/new_assets = list()) +/// Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects. +/client/proc/asset_cache_update_json() if (world.time - connection_time < 10 SECONDS) //don't override the existing data file on a new connection return - if (!islist(new_assets)) - new_assets = list("[new_assets]" = md5(SSassets.cache[new_assets])) - src << browse(json_encode(new_assets|sent_assets), "file=asset_data.json&display=0") + src << browse(json_encode(sent_assets), "file=asset_data.json&display=0") -/// Blocks until all currently sending browser assets have been sent. +/// Blocks until all currently sending browse and browse_rsc assets have been sent. /// Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends. /// This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away. -/client/proc/asset_flush(timeout = 50) +/client/proc/browse_queue_flush(timeout = 50) var/job = ++last_asset_job var/t = 0 var/timeout_time = timeout diff --git a/code/modules/asset_cache/asset_cache_item.dm b/code/modules/asset_cache/asset_cache_item.dm index 5f02e561c6..ad4596bded 100644 --- a/code/modules/asset_cache/asset_cache_item.dm +++ b/code/modules/asset_cache/asset_cache_item.dm @@ -1,23 +1,54 @@ /** - * # asset_cache_item - * - * An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed. -**/ + * # asset_cache_item + * + * An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed. + */ /datum/asset_cache_item + /// the name of this asset item, becomes the key in SSassets.cache list var/name - var/url - var/md5 + /// md5() of the file this asset item represents. + var/hash + /// the file this asset represents var/resource + /// our file extension e.g. .png, .gif, etc + var/ext = "" + /// Should this file also be sent via the legacy browse_rsc system + /// when cdn transports are enabled? + var/legacy = FALSE + /// Used by the cdn system to keep legacy css assets with their parent + /// css file. (css files resolve urls relative to the css file, so the + /// legacy system can't be used if the css file itself could go out over + /// the cdn) + var/namespace = null + /// True if this is the parent css or html file for an asset's namespace + var/namespace_parent = FALSE + /// TRUE for keeping local asset names when browse_rsc backend is used + var/keep_local_name = FALSE -/datum/asset_cache_item/New(name, file) +///pass in a valid file_hash if you have one to save it from needing to do it again. +///pass in a valid dmi file path string e.g. "icons/path/to/dmi_file.dmi" to make generating the hash less expensive +/datum/asset_cache_item/New(name, file, file_hash, dmi_file_path) if (!isfile(file)) file = fcopy_rsc(file) - md5 = md5(file) - if (!md5) - md5 = md5(fcopy_rsc(file)) - if (!md5) - CRASH("invalid asset sent to asset cache") - log_world("asset cache unexpected success of second fcopy_rsc") + + hash = file_hash + + //the given file is directly from a dmi file and is thus in the rsc already, we know that its file_hash will be correct + if(!hash) + if(dmi_file_path) + hash = md5(file) + else + hash = md5asfile(file) //icons sent to the rsc md5 incorrectly when theyre given incorrect data + if (!hash) + CRASH("invalid asset sent to asset cache") src.name = name - url = name + var/extstart = findlasttext(name, ".") + if (extstart) + ext = ".[copytext(name, extstart+1)]" resource = file + +/datum/asset_cache_item/vv_edit_var(var_name, var_value) + return FALSE + +/datum/asset_cache_item/CanProcCall(procname) + return FALSE diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm index 4ce9dcf6fc..c9e02cb927 100644 --- a/code/modules/asset_cache/asset_list.dm +++ b/code/modules/asset_cache/asset_list.dm @@ -1,3 +1,4 @@ +#define ASSET_CROSS_ROUND_CACHE_DIRECTORY "tmp/assets" //These datums are used to populate the asset cache, the proc "register()" does this. //Place any asset datums you create in asset_list_items.dm @@ -6,46 +7,101 @@ GLOBAL_LIST_EMPTY(asset_datums) //get an assetdatum or make a new one -/proc/get_asset_datum(type) +//does NOT ensure it's filled, if you want that use get_asset_datum() +/proc/load_asset_datum(type) return GLOB.asset_datums[type] || new type() +/proc/get_asset_datum(type) + var/datum/asset/loaded_asset = GLOB.asset_datums[type] || new type() + return loaded_asset.ensure_ready() + /datum/asset var/_abstract = /datum/asset + var/cached_serialized_url_mappings + var/cached_serialized_url_mappings_transport_type + + /// Whether or not this asset should be loaded in the "early assets" SS + var/early = FALSE + + /// Whether or not this asset can be cached across rounds of the same commit under the `CACHE_ASSETS` config. + /// This is not a *guarantee* the asset will be cached. Not all asset subtypes respect this field, and the + /// config can, of course, be disabled. + /// Disable this if your asset can change between rounds on the same exact version of the code. + var/cross_round_cachable = FALSE /datum/asset/New() GLOB.asset_datums[type] = src register() +/// Stub that allows us to react to something trying to get us +/// Not useful here, more handy for sprite sheets +/datum/asset/proc/ensure_ready() + return src + +/// Stub to hook into if your asset is having its generation queued by SSasset_loading +/datum/asset/proc/queued_generation() + CRASH("[type] inserted into SSasset_loading despite not implementing /proc/queued_generation") + /datum/asset/proc/get_url_mappings() return list() +/// Returns a cached tgui message of URL mappings +/datum/asset/proc/get_serialized_url_mappings() + if (isnull(cached_serialized_url_mappings) || cached_serialized_url_mappings_transport_type != SSassets.transport.type) + cached_serialized_url_mappings = TGUI_CREATE_MESSAGE("asset/mappings", get_url_mappings()) + cached_serialized_url_mappings_transport_type = SSassets.transport.type + + return cached_serialized_url_mappings + /datum/asset/proc/register() return /datum/asset/proc/send(client) return +/// Returns whether or not the asset should attempt to read from cache +/datum/asset/proc/should_refresh() + return !cross_round_cachable || !config.cache_assets -//If you don't need anything complicated. +/// Simply takes any generated file and saves it to the round-specific /logs folder. Useful for debugging potential issues with spritesheet generation/display. +/// Only called when the SAVE_SPRITESHEETS config option is uncommented. +/datum/asset/proc/save_to_logs(file_name, file_location) + var/asset_path = "[log_path]/generated_assets/[file_name]" + fdel(asset_path) // just in case, sadly we can't use rust_g stuff here. + fcopy(file_location, asset_path) + +/// If you don't need anything complicated. /datum/asset/simple _abstract = /datum/asset/simple + /// list of assets for this datum in the form of: + /// asset_filename = asset_file. At runtime the asset_file will be + /// converted into a asset_cache datum. var/assets = list() + /// Set to true to have this asset also be sent via the legacy browse_rsc + /// system when cdn transports are enabled? + var/legacy = FALSE + /// TRUE for keeping local asset names when browse_rsc backend is used + var/keep_local_name = FALSE /datum/asset/simple/register() for(var/asset_name in assets) - assets[asset_name] = register_asset(asset_name, assets[asset_name]) + var/datum/asset_cache_item/ACI = SSassets.transport.register_asset(asset_name, assets[asset_name]) + if (!ACI) + log_asset("ERROR: Invalid asset: [type]:[asset_name]:[ACI]") + continue + if (legacy) + ACI.legacy = legacy + if (keep_local_name) + ACI.keep_local_name = keep_local_name + assets[asset_name] = ACI /datum/asset/simple/send(client) - . = send_asset_list(client, assets) + . = SSassets.transport.send_assets(client, assets) /datum/asset/simple/get_url_mappings() . = list() for (var/asset_name in assets) - var/datum/asset_cache_item/ACI = assets[asset_name] - if (!ACI) - continue - .[asset_name] = ACI.url - + .[asset_name] = SSassets.transport.get_asset_url(asset_name, assets[asset_name]) // For registering or sending multiple others at once /datum/asset/group @@ -54,7 +110,7 @@ GLOBAL_LIST_EMPTY(asset_datums) /datum/asset/group/register() for(var/type in children) - get_asset_datum(type) + load_asset_datum(type) /datum/asset/group/send(client/C) for(var/type in children) @@ -78,40 +134,122 @@ GLOBAL_LIST_EMPTY(asset_datums) /datum/asset/spritesheet _abstract = /datum/asset/spritesheet + cross_round_cachable = TRUE var/name + /// List of arguments to pass into queuedInsert + /// Exists so we can queue icon insertion, mostly for stuff like preferences + var/list/to_generate = list() var/list/sizes = list() // "32x32" -> list(10, icon/normal, icon/stripped) var/list/sprites = list() // "foo_bar" -> list("32x32", 5) + var/list/cached_spritesheets_needed + var/generating_cache = FALSE + var/fully_generated = FALSE + /// If this asset should be fully loaded on new + /// Defaults to false so we can process this stuff nicely + var/load_immediately = FALSE + VAR_PRIVATE + // Kept in state so that the result is the same, even when the files are created, for this run + should_refresh = null + +/datum/asset/spritesheet/proc/should_load_immediately() +#ifdef DO_NOT_DEFER_ASSETS + return TRUE +#else + return load_immediately +#endif + + +/datum/asset/spritesheet/should_refresh() + if (..()) + return TRUE + + if (isnull(should_refresh)) + // `fexists` seems to always fail on static-time + should_refresh = !fexists(css_cache_filename()) || !fexists(data_cache_filename()) + + return should_refresh /datum/asset/spritesheet/register() + SHOULD_NOT_OVERRIDE(TRUE) + if (!name) CRASH("spritesheet [type] cannot register without a name") + + if (!should_refresh() && read_from_cache()) + fully_generated = TRUE + return + + // If it's cached, may as well load it now, while the loading is cheap + if(config.cache_assets && cross_round_cachable) + load_immediately = TRUE + + create_spritesheets() + if(should_load_immediately()) + realize_spritesheets(yield = FALSE) + else + SSasset_loading.queue_asset(src) + +/datum/asset/spritesheet/proc/realize_spritesheets(yield) + if(fully_generated) + return + while(length(to_generate)) + var/list/stored_args = to_generate[to_generate.len] + to_generate.len-- + queuedInsert(arglist(stored_args)) + if(yield && TICK_CHECK) + return + ensure_stripped() for(var/size_id in sizes) var/size = sizes[size_id] - register_asset("[name]_[size_id].png", size[SPRSZ_STRIPPED]) - var/res_name = "spritesheet_[name].css" - var/fname = "data/spritesheets/[res_name]" - fdel(fname) - text2file(generate_css(), fname) - register_asset(res_name, fcopy_rsc(fname)) - fdel(fname) + SSassets.transport.register_asset("[name]_[size_id].png", size[SPRSZ_STRIPPED]) + var/css_name = "spritesheet_[name].css" + var/file_directory = "data/spritesheets/[css_name]" + fdel(file_directory) + text2file(generate_css(), file_directory) + SSassets.transport.register_asset(css_name, fcopy_rsc(file_directory)) -/datum/asset/spritesheet/send(client/C) + if(config.save_spritesheets) + save_to_logs(file_name = css_name, file_location = file_directory) + + fdel(file_directory) + + if (config.cache_assets && cross_round_cachable) + write_to_cache() + fully_generated = TRUE + // If we were ever in there, remove ourselves + SSasset_loading.dequeue_asset(src) + +/datum/asset/spritesheet/queued_generation() + realize_spritesheets(yield = TRUE) + +/datum/asset/spritesheet/ensure_ready() + if(!fully_generated) + realize_spritesheets(yield = FALSE) + return ..() + +/datum/asset/spritesheet/send(client/client) if (!name) return + + if (!should_refresh()) + return send_from_cache(client) + var/all = list("spritesheet_[name].css") for(var/size_id in sizes) all += "[name]_[size_id].png" - . = send_asset_list(C, all) + . = SSassets.transport.send_assets(client, all) /datum/asset/spritesheet/get_url_mappings() if (!name) return - . = list("spritesheet_[name].css" = get_asset_url("spritesheet_[name].css")) + + if (!should_refresh()) + return get_cached_url_mappings() + + . = list("spritesheet_[name].css" = SSassets.transport.get_asset_url("spritesheet_[name].css")) for(var/size_id in sizes) - .["[name]_[size_id].png"] = get_asset_url("[name]_[size_id].png") - - + .["[name]_[size_id].png"] = SSassets.transport.get_asset_url("[name]_[size_id].png") /datum/asset/spritesheet/proc/ensure_stripped(sizes_to_strip = sizes) for(var/size_id in sizes_to_strip) @@ -120,13 +258,19 @@ GLOBAL_LIST_EMPTY(asset_datums) continue // save flattened version - var/fname = "data/spritesheets/[name]_[size_id].png" - fcopy(size[SPRSZ_ICON], fname) - var/error = rustg_dmi_strip_metadata(fname) + var/png_name = "[name]_[size_id].png" + var/file_directory = "data/spritesheets/[png_name]" + fcopy(size[SPRSZ_ICON], file_directory) + var/error = rustg_dmi_strip_metadata(file_directory) if(length(error)) - stack_trace("Failed to strip [name]_[size_id].png: [error]") - size[SPRSZ_STRIPPED] = icon(fname) - fdel(fname) + stack_trace("Failed to strip [png_name]: [error]") + size[SPRSZ_STRIPPED] = icon(file_directory) + + // this is useful here for determining if weird sprite issues (like having a white background) are a cause of what we're doing DM-side or not since we can see the full flattened thing at-a-glance. + if(config.save_spritesheets) + save_to_logs(file_name = png_name, file_location = file_directory) + + fdel(file_directory) /datum/asset/spritesheet/proc/generate_css() var/list/out = list() @@ -134,7 +278,7 @@ GLOBAL_LIST_EMPTY(asset_datums) for (var/size_id in sizes) var/size = sizes[size_id] var/icon/tiny = size[SPRSZ_ICON] - out += ".[name][size_id]{display:inline-block;width:[tiny.Width()]px;height:[tiny.Height()]px;background:url('[get_asset_url("[name]_[size_id].png")]') no-repeat;}" + out += ".[name][size_id]{display:inline-block;width:[tiny.Width()]px;height:[tiny.Height()]px;background:url('[get_background_url("[name]_[size_id].png")]') no-repeat;}" for (var/sprite_id in sprites) var/sprite = sprites[sprite_id] @@ -152,10 +296,109 @@ GLOBAL_LIST_EMPTY(asset_datums) return out.Join("\n") +/datum/asset/spritesheet/proc/css_cache_filename() + return "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css" + +/datum/asset/spritesheet/proc/data_cache_filename() + return "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].json" + +/datum/asset/spritesheet/proc/read_from_cache() + return read_css_from_cache() && read_data_from_cache() + +/datum/asset/spritesheet/proc/read_css_from_cache() + var/replaced_css = file2text(css_cache_filename()) + + var/regex/find_background_urls = regex(@"background:url\('%(.+?)%'\)", "g") + while (find_background_urls.Find(replaced_css)) + var/asset_id = find_background_urls.group[1] + var/asset_cache_item = SSassets.transport.register_asset(asset_id, "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[asset_id]") + var/asset_url = SSassets.transport.get_asset_url(asset_cache_item = asset_cache_item) + replaced_css = replacetext(replaced_css, find_background_urls.match, "background:url('[asset_url]')") + LAZYADD(cached_spritesheets_needed, asset_id) + + var/finalized_name = "spritesheet_[name].css" + var/replaced_css_filename = "data/spritesheets/[finalized_name]" + rustg_file_write(replaced_css, replaced_css_filename) + SSassets.transport.register_asset(finalized_name, replaced_css_filename) + + if(config.save_spritesheets) + save_to_logs(file_name = finalized_name, file_location = replaced_css_filename) + + fdel(replaced_css_filename) + + return TRUE + +/datum/asset/spritesheet/proc/read_data_from_cache() + var/json = json_decode(file2text(data_cache_filename())) + + if (islist(json["sprites"])) + sprites = json["sprites"] + + return TRUE + +/datum/asset/spritesheet/proc/send_from_cache(client/client) + if (isnull(cached_spritesheets_needed)) + stack_trace("cached_spritesheets_needed was null when sending assets from [type] from cache") + cached_spritesheets_needed = list() + + return SSassets.transport.send_assets(client, cached_spritesheets_needed + "spritesheet_[name].css") + +/// Returns the URL to put in the background:url of the CSS asset +/datum/asset/spritesheet/proc/get_background_url(asset) + if (generating_cache) + return "%[asset]%" + else + return SSassets.transport.get_asset_url(asset) + +/datum/asset/spritesheet/proc/write_to_cache() + write_css_to_cache() + write_data_to_cache() + +/datum/asset/spritesheet/proc/write_css_to_cache() + for (var/size_id in sizes) + fcopy(SSassets.cache["[name]_[size_id].png"].resource, "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name]_[size_id].png") + + generating_cache = TRUE + var/mock_css = generate_css() + generating_cache = FALSE + + rustg_file_write(mock_css, css_cache_filename()) + +/datum/asset/spritesheet/proc/write_data_to_cache() + rustg_file_write(json_encode(list( + "sprites" = sprites, + )), data_cache_filename()) + +/datum/asset/spritesheet/proc/get_cached_url_mappings() + var/list/mappings = list() + mappings["spritesheet_[name].css"] = SSassets.transport.get_asset_url("spritesheet_[name].css") + + for (var/asset_name in cached_spritesheets_needed) + mappings[asset_name] = SSassets.transport.get_asset_url(asset_name) + + return mappings + +/// Override this in order to start the creation of the spritehseet. +/// This is where all your Insert, InsertAll, etc calls should be inside. +/datum/asset/spritesheet/proc/create_spritesheets() + SHOULD_CALL_PARENT(FALSE) + CRASH("create_spritesheets() not implemented for [type]!") + /datum/asset/spritesheet/proc/Insert(sprite_name, icon/I, icon_state="", dir=SOUTH, frame=1, moving=FALSE) + if(should_load_immediately()) + queuedInsert(sprite_name, I, icon_state, dir, frame, moving) + else + to_generate += list(args.Copy()) + +/datum/asset/spritesheet/proc/queuedInsert(sprite_name, icon/I, icon_state="", dir=SOUTH, frame=1, moving=FALSE) I = icon(I, icon_state=icon_state, dir=dir, frame=frame, moving=moving) if (!I || !length(icon_states(I))) // that direction or state doesn't exist return + + //var/start_usage = world.tick_usage + + //any sprite modifications we want to do (aka, coloring a greyscaled asset) + I = ModifyInserted(I) var/size_id = "[I.Width()]x[I.Height()]" var/size = sizes[size_id] @@ -164,14 +407,34 @@ GLOBAL_LIST_EMPTY(asset_datums) if (size) var/position = size[SPRSZ_COUNT]++ + // Icons are essentially representations of files + modifications + // Because of this, byond keeps them in a cache. It does this in a really dumb way tho + // It's essentially a FIFO queue. So after we do icon() some amount of times, our old icons go out of cache + // When this happens it becomes impossible to modify them, trying to do so will instead throw a + // "bad icon" error. + // What we're doing here is ensuring our icon is in the cache by refreshing it, so we can modify it w/o runtimes. var/icon/sheet = size[SPRSZ_ICON] + var/icon/sheet_copy = icon(sheet) size[SPRSZ_STRIPPED] = null - sheet.Insert(I, icon_state=sprite_name) + sheet_copy.Insert(I, icon_state=sprite_name) + size[SPRSZ_ICON] = sheet_copy + sprites[sprite_name] = list(size_id, position) else sizes[size_id] = size = list(1, I, null) sprites[sprite_name] = list(size_id, 0) + //SSblackbox.record_feedback("tally", "spritesheet_queued_insert_time", TICK_USAGE_TO_MS(start_usage), name) + +/** + * A simple proc handing the Icon for you to modify before it gets turned into an asset. + * + * Arguments: + * * I: icon being turned into an asset + */ +/datum/asset/spritesheet/proc/ModifyInserted(icon/pre_asset) + return pre_asset + /datum/asset/spritesheet/proc/InsertAll(prefix, icon/I, list/directions) if (length(prefix)) prefix = "[prefix]-" @@ -188,14 +451,14 @@ GLOBAL_LIST_EMPTY(asset_datums) return {""} /datum/asset/spritesheet/proc/css_filename() - return get_asset_url("spritesheet_[name].css") + return SSassets.transport.get_asset_url("spritesheet_[name].css") /datum/asset/spritesheet/proc/icon_tag(sprite_name) var/sprite = sprites[sprite_name] if (!sprite) return null var/size_id = sprite[SPR_SIZE] - return {""} + return {""} /datum/asset/spritesheet/proc/icon_class_name(sprite_name) var/sprite = sprites[sprite_name] @@ -204,6 +467,19 @@ GLOBAL_LIST_EMPTY(asset_datums) var/size_id = sprite[SPR_SIZE] return {"[name][size_id] [sprite_name]"} +/** + * Returns the size class (ex design32x32) for a given sprite's icon + * + * Arguments: + * * sprite_name - The sprite to get the size of + */ +/datum/asset/spritesheet/proc/icon_size_id(sprite_name) + var/sprite = sprites[sprite_name] + if (!sprite) + return null + var/size_id = sprite[SPR_SIZE] + return "[name][size_id]" + #undef SPR_SIZE #undef SPR_IDX #undef SPRSZ_COUNT @@ -211,14 +487,31 @@ GLOBAL_LIST_EMPTY(asset_datums) #undef SPRSZ_STRIPPED +/datum/asset/changelog_item + _abstract = /datum/asset/changelog_item + var/item_filename + +/datum/asset/changelog_item/New(date) + item_filename = sanitize_filename("[date].yml") + SSassets.transport.register_asset(item_filename, file("html/changelogs_ch/archive/" + item_filename)) + +/datum/asset/changelog_item/send(client) + if (!item_filename) + return + . = SSassets.transport.send_assets(client, item_filename) + +/datum/asset/changelog_item/get_url_mappings() + if (!item_filename) + return + . = list("[item_filename]" = SSassets.transport.get_asset_url(item_filename)) + /datum/asset/spritesheet/simple _abstract = /datum/asset/spritesheet/simple var/list/assets -/datum/asset/spritesheet/simple/register() +/datum/asset/spritesheet/simple/create_spritesheets() for (var/key in assets) Insert(key, assets[key]) - ..() //Generates assets based on iconstates of a single icon /datum/asset/simple/icon_states @@ -243,7 +536,7 @@ GLOBAL_LIST_EMPTY(asset_datums) if (generic_icon_names) asset_name = "[generate_asset_name(asset)].png" - register_asset(asset_name, asset) + SSassets.transport.register_asset(asset_name, asset) /datum/asset/simple/icon_states/multiple_icons _abstract = /datum/asset/simple/icon_states/multiple_icons @@ -253,4 +546,79 @@ GLOBAL_LIST_EMPTY(asset_datums) for(var/i in icons) ..(i) +/// Namespace'ed assets (for static css and html files) +/// When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names. +/// Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html) +/// For example `blah.css` with asset `blah.png` will get loaded as `namespaces/a3d..14f/f12..d3c.css` and `namespaces/a3d..14f/blah.png`. allowing the css file to load `blah.png` by a relative url rather then compute the generated url with get_url_mappings(). +/// The namespace folder's name will change if any of the assets change. (excluding parent assets) +/datum/asset/simple/namespaced + _abstract = /datum/asset/simple/namespaced + /// parents - list of the parent asset or assets (in name = file assoicated format) for this namespace. + /// parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity. + var/list/parents = list() +/datum/asset/simple/namespaced/register() + if (legacy) + assets |= parents + var/list/hashlist = list() + var/list/sorted_assets = sortList(assets) + + for (var/asset_name in sorted_assets) + var/datum/asset_cache_item/ACI = new(asset_name, sorted_assets[asset_name]) + if (!ACI?.hash) + log_asset("ERROR: Invalid asset: [type]:[asset_name]:[ACI]") + continue + hashlist += ACI.hash + sorted_assets[asset_name] = ACI + var/namespace = md5(hashlist.Join()) + + for (var/asset_name in parents) + var/datum/asset_cache_item/ACI = new(asset_name, parents[asset_name]) + if (!ACI?.hash) + log_asset("ERROR: Invalid asset: [type]:[asset_name]:[ACI]") + continue + ACI.namespace_parent = TRUE + sorted_assets[asset_name] = ACI + + for (var/asset_name in sorted_assets) + var/datum/asset_cache_item/ACI = sorted_assets[asset_name] + if (!ACI?.hash) + log_asset("ERROR: Invalid asset: [type]:[asset_name]:[ACI]") + continue + ACI.namespace = namespace + + assets = sorted_assets + ..() + +/// Get a html string that will load a html asset. +/// Needed because byond doesn't allow you to browse() to a url. +/datum/asset/simple/namespaced/proc/get_htmlloader(filename) + return url2htmlloader(SSassets.transport.get_asset_url(filename, assets[filename])) + +/// A subtype to generate a JSON file from a list +/datum/asset/json + _abstract = /datum/asset/json + /// The filename, will be suffixed with ".json" + var/name + +/datum/asset/json/send(client) + return SSassets.transport.send_assets(client, "[name].json") + +/datum/asset/json/get_url_mappings() + return list( + "[name].json" = SSassets.transport.get_asset_url("[name].json"), + ) + +/datum/asset/json/register() + var/filename = "data/[name].json" + fdel(filename) + text2file(json_encode(generate()), filename) + SSassets.transport.register_asset("[name].json", fcopy_rsc(filename)) + fdel(filename) + +/// Returns the data that will be JSON encoded +/datum/asset/json/proc/generate() + SHOULD_CALL_PARENT(FALSE) + CRASH("generate() not implemented for [type]!") + +#undef ASSET_CROSS_ROUND_CACHE_DIRECTORY diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 71cd0286aa..de961a96af 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -258,29 +258,26 @@ /datum/asset/spritesheet/pipes name = "pipes" -/datum/asset/spritesheet/pipes/register() +/datum/asset/spritesheet/pipes/create_spritesheets() for(var/each in list('icons/obj/pipe-item.dmi', 'icons/obj/pipes/disposal.dmi')) InsertAll("", each, global.alldirs) - ..() //VOREStation Add /datum/asset/spritesheet/vore name = "vore" -/datum/asset/spritesheet/vore/register() +/datum/asset/spritesheet/vore/create_spritesheets() var/icon/downscaled = icon('icons/mob/screen_full_vore.dmi') downscaled.Scale(240, 240) InsertAll("", downscaled) - ..() /datum/asset/spritesheet/vore_colorized //This should be getting loaded in the TGUI vore panel but the game refuses to do so, for some reason. It only loads the vore spritesheet. name = "colorizedvore" -/datum/asset/spritesheet/vore_colorized/register() +/datum/asset/spritesheet/vore_colorized/create_spritesheets() var/icon/downscaledVC = icon('icons/mob/screen_full_colorized_vore.dmi') downscaledVC.Scale(240, 240) InsertAll("", downscaledVC) - ..() //VOREStation Add End @@ -346,7 +343,7 @@ /datum/asset/spritesheet/vending name = "vending" -/datum/asset/spritesheet/vending/register() +/datum/asset/spritesheet/vending/create_spritesheets() populate_vending_products() for(var/atom/item as anything in GLOB.vending_products) if(!ispath(item, /atom)) @@ -384,7 +381,6 @@ var/imgid = replacetext(replacetext("[item]", "/obj/item/", ""), "/", "-") Insert(imgid, I) - return ..() // this is cursed but necessary or else vending product icons can be missing // basically, if there's any vending machines that aren't already mapped in, our register() will not know @@ -442,10 +438,10 @@ assets["bottle-[i].png"] = icon('icons/obj/chemical.dmi', "bottle-[i]") for(var/asset_name in assets) - register_asset(asset_name, assets[asset_name]) + SSassets.transport.register_asset(asset_name, assets[asset_name]) /datum/asset/chem_master/send(client) - send_asset_list(client, assets, verify) + SSassets.transport.send_assets(client, assets, verify) //Cloning pod sprites for UIs /datum/asset/cloning @@ -457,10 +453,10 @@ assets["pod_cloning.gif"] = icon('icons/obj/cloning.dmi', "pod_cloning") assets["pod_mess.gif"] = icon('icons/obj/cloning.dmi', "pod_mess") for(var/asset_name in assets) - register_asset(asset_name, assets[asset_name]) + SSassets.transport.register_asset(asset_name, assets[asset_name]) /datum/asset/cloning/send(client) - send_asset_list(client, assets, verify) + SSassets.transport.send_assets(client, assets, verify) // VOREStation Add /datum/asset/cloning/resleeving @@ -471,15 +467,14 @@ assets["synthprinter.gif"] = icon('icons/obj/machines/synthpod.dmi', "pod_0") assets["synthprinter_working.gif"] = icon('icons/obj/machines/synthpod.dmi', "pod_1") for(var/asset_name in assets) - register_asset(asset_name, assets[asset_name]) + SSassets.transport.register_asset(asset_name, assets[asset_name]) // VOREStation Add End /datum/asset/spritesheet/sheetmaterials name = "sheetmaterials" -/datum/asset/spritesheet/sheetmaterials/register() +/datum/asset/spritesheet/sheetmaterials/create_spritesheets() InsertAll("", 'icons/obj/stacks.dmi') - ..() // Nanomaps /datum/asset/simple/nanomaps diff --git a/code/modules/asset_cache/assets/chat.dm b/code/modules/asset_cache/assets/chat.dm index 328beaca9d..0853ea542c 100644 --- a/code/modules/asset_cache/assets/chat.dm +++ b/code/modules/asset_cache/assets/chat.dm @@ -1,2 +1,6 @@ /datum/asset/spritesheet/chat name = "chat" + +/datum/asset/spritesheet/chat/create_spritesheets() + //honk + //This function has to be overridden otherwise it will generate runtimes diff --git a/code/modules/asset_cache/assets/fontawesome.dm b/code/modules/asset_cache/assets/fontawesome.dm index 72af739f4e..6f5441ab42 100644 --- a/code/modules/asset_cache/assets/fontawesome.dm +++ b/code/modules/asset_cache/assets/fontawesome.dm @@ -1,9 +1,8 @@ -/datum/asset/simple/fontawesome +/datum/asset/simple/namespaced/fontawesome assets = list( - "fa-regular-400.eot" = 'html/font-awesome/webfonts/fa-regular-400.eot', - "fa-regular-400.woff" = 'html/font-awesome/webfonts/fa-regular-400.woff', - "fa-solid-900.eot" = 'html/font-awesome/webfonts/fa-solid-900.eot', - "fa-solid-900.woff" = 'html/font-awesome/webfonts/fa-solid-900.woff', - "font-awesome.css" = 'html/font-awesome/css/all.min.css', - "v4shim.css" = 'html/font-awesome/css/v4-shims.min.css' + "fa-regular-400.ttf" = 'html/font-awesome/webfonts/fa-regular-400.ttf', + "fa-solid-900.ttf" = 'html/font-awesome/webfonts/fa-solid-900.ttf', + "fa-v4compatibility.ttf" = 'html/font-awesome/webfonts/fa-v4compatibility.ttf', + "v4shim.css" = 'html/font-awesome/css/v4-shims.min.css', ) + parents = list("font-awesome.css" = 'html/font-awesome/css/all.min.css') diff --git a/code/modules/asset_cache/assets/jquery.dm b/code/modules/asset_cache/assets/jquery.dm index 2a28293fbb..b7241fdb61 100644 --- a/code/modules/asset_cache/assets/jquery.dm +++ b/code/modules/asset_cache/assets/jquery.dm @@ -1,4 +1,5 @@ /datum/asset/simple/jquery + legacy = TRUE assets = list( - "jquery.min.js" = 'code/modules/tooltip/jquery.min.js', + "jquery.min.js" = 'html/jquery/jquery.min.js', ) diff --git a/code/modules/asset_cache/assets/tgfont.dm b/code/modules/asset_cache/assets/tgfont.dm index 48db3e4e67..1d9df4282c 100644 --- a/code/modules/asset_cache/assets/tgfont.dm +++ b/code/modules/asset_cache/assets/tgfont.dm @@ -1,6 +1,8 @@ -/datum/asset/simple/tgfont +/datum/asset/simple/namespaced/tgfont assets = list( "tgfont.eot" = file("tgui/packages/tgfont/dist/tgfont.eot"), "tgfont.woff2" = file("tgui/packages/tgfont/dist/tgfont.woff2"), + ) + parents = list( "tgfont.css" = file("tgui/packages/tgfont/dist/tgfont.css"), ) diff --git a/code/modules/asset_cache/readme.md b/code/modules/asset_cache/readme.md new file mode 100644 index 0000000000..82e6bea896 --- /dev/null +++ b/code/modules/asset_cache/readme.md @@ -0,0 +1,37 @@ +# Asset cache system + +## Framework for managing browser assets (javascript,css,images,etc) + +This manages getting the asset to the client without doing unneeded re-sends, as well as utilizing any configured cdns. + +There are two frameworks for using this system: + +### Asset datum: + +Make a datum in asset_list_items.dm with your browser assets for your thing. + +Checkout asset_list.dm for the helper subclasses + +The `simple` subclass will most likely be of use for most cases. + +Call get_asset_datum() with the type of the datum you created to get your asset cache datum + +Call .send(client|usr) on that datum to send the asset to the client. Depending on the asset transport this may or may not block. + +Call .get_url_mappings() to get an associated list with the urls your assets can be found at. + +### Manual backend: + +See the documentation for `/datum/asset_transport` for the backend api the asset datums utilize. + +The global variable `SSassets.transport` contains the currently configured transport. + + + +### Notes: + +Because byond browse() calls use non-blocking queues, if your code uses output() (which bypasses all of these queues) to invoke javascript functions you will need to first have the javascript announce to the server it has loaded before trying to invoke js functions. + +To make your code work with any CDNs configured by the server, you must make sure assets are referenced from the url returned by `get_url_mappings()` or by asset_transport's `get_asset_url()`. (TGUI also has helpers for this.) If this can not be easily done, you can bypass the cdn using legacy assets, see the simple asset datum for details. + +CSS files that use url() can be made to use the CDN without needing to rewrite all url() calls in code by using the namespaced helper datum. See the documentation for `/datum/asset/simple/namespaced` for details. diff --git a/code/modules/asset_cache/transports/asset_transport.dm b/code/modules/asset_cache/transports/asset_transport.dm new file mode 100644 index 0000000000..5be975a385 --- /dev/null +++ b/code/modules/asset_cache/transports/asset_transport.dm @@ -0,0 +1,162 @@ +/// When sending mutiple assets, how many before we give the client a quaint little sending resources message +#define ASSET_CACHE_TELL_CLIENT_AMOUNT 8 + +/// Base browse_rsc asset transport +/datum/asset_transport + var/name = "Simple browse_rsc asset transport" + var/static/list/preload + /// Don't mutate the filename of assets when sending via browse_rsc. + /// This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production. + /// If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those. + var/dont_mutate_filenames = FALSE + +/// Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change. +/datum/asset_transport/proc/Load() + if (config.asset_simple_preload) + for(var/client/C in GLOB.clients) + addtimer(CALLBACK(src, PROC_REF(send_assets_slow), C, preload), 1 SECONDS) + +/// Initialize - Called when SSassets initializes. +/datum/asset_transport/proc/Initialize(list/assets) + preload = assets.Copy() + if (!config.asset_simple_preload) + return + for(var/client/C in GLOB.clients) + addtimer(CALLBACK(src, PROC_REF(send_assets_slow), C, preload), 1 SECONDS) + + +/** + * Register a browser asset with the asset cache system. + * returns a /datum/asset_cache_item. + * mutiple calls to register the same asset under the same asset_name return the same datum. + * + * Arguments: + * * asset_name - the identifier of the asset. + * * asset - the actual asset file (or an asset_cache_item datum). + * * file_hash - optional, a hash of the contents of the asset files contents. used so asset_cache_item doesnt have to hash it again + * * dmi_file_path - optional, means that the given asset is from the rsc and thus we dont need to do some expensive operations + */ +/datum/asset_transport/proc/register_asset(asset_name, asset, file_hash, dmi_file_path) + var/datum/asset_cache_item/ACI = asset + if (!istype(ACI)) + ACI = new(asset_name, asset, file_hash, dmi_file_path) + if (!ACI || !ACI.hash) + CRASH("ERROR: Invalid asset: [asset_name]:[asset]:[ACI]") + if (SSassets.cache[asset_name]) + var/datum/asset_cache_item/OACI = SSassets.cache[asset_name] + OACI.legacy = ACI.legacy = (ACI.legacy|OACI.legacy) + OACI.namespace_parent = ACI.namespace_parent = (ACI.namespace_parent | OACI.namespace_parent) + OACI.namespace = OACI.namespace || ACI.namespace + if (OACI.hash != ACI.hash) + var/error_msg = "ERROR: new asset added to the asset cache with the same name as another asset: [asset_name] existing asset hash: [OACI.hash] new asset hash:[ACI.hash]" + stack_trace(error_msg) + log_asset(error_msg) + else + if (length(ACI.namespace)) + return ACI + return OACI + + SSassets.cache[asset_name] = ACI + return ACI + + +/// Returns a url for a given asset. +/// asset_name - Name of the asset. +/// asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name +/datum/asset_transport/proc/get_asset_url(asset_name, datum/asset_cache_item/asset_cache_item) + if (!istype(asset_cache_item)) + asset_cache_item = SSassets.cache[asset_name] + // To ensure code that breaks on cdns breaks in local testing, we only + // use the normal filename on legacy assets and name space assets. + var/keep_local_name = dont_mutate_filenames \ + || asset_cache_item.legacy \ + || asset_cache_item.keep_local_name \ + || (asset_cache_item.namespace && !asset_cache_item.namespace_parent) + if (keep_local_name) + return url_encode(asset_cache_item.name) + return url_encode("asset.[asset_cache_item.hash][asset_cache_item.ext]") + + +/// Sends a list of browser assets to a client +/// client - a client or mob +/// asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum. +/// Returns TRUE if any assets were sent. +/datum/asset_transport/proc/send_assets(client/client, list/asset_list) + if (!istype(client)) + if (ismob(client)) + var/mob/M = client + if (M.client) + client = M.client + else //no stacktrace because this will mainly happen because the client went away + return + else + CRASH("Invalid argument: client: `[client]`") + if (!islist(asset_list)) + asset_list = list(asset_list) + var/list/unreceived = list() + + for (var/asset_name in asset_list) + var/datum/asset_cache_item/ACI = asset_list[asset_name] + if (!istype(ACI) && !(ACI = SSassets.cache[asset_name])) + log_asset("ERROR: can't send asset `[asset_name]`: unregistered or invalid state: `[ACI]`") + continue + var/asset_file = ACI.resource + if (!asset_file) + log_asset("ERROR: can't send asset `[asset_name]`: invalid registered resource: `[ACI.resource]`") + continue + + var/asset_hash = ACI.hash + var/new_asset_name = asset_name + var/keep_local_name = dont_mutate_filenames \ + || ACI.legacy \ + || ACI.keep_local_name \ + || (ACI.namespace && !ACI.namespace_parent) + if (!keep_local_name) + new_asset_name = "asset.[ACI.hash][ACI.ext]" + if (client.sent_assets[new_asset_name] == asset_hash) + /*if (GLOB.Debug2) + log_asset("DEBUG: Skipping send of `[asset_name]` (as `[new_asset_name]`) for `[client]` because it already exists in the client's sent_assets list")*/ + continue + unreceived[asset_name] = ACI + + if (unreceived.len) + if (unreceived.len >= ASSET_CACHE_TELL_CLIENT_AMOUNT) + to_chat(client, "Sending Resources...") + + for (var/asset_name in unreceived) + var/new_asset_name = asset_name + var/datum/asset_cache_item/ACI = unreceived[asset_name] + var/keep_local_name = dont_mutate_filenames \ + || ACI.legacy \ + || ACI.keep_local_name \ + || (ACI.namespace && !ACI.namespace_parent) + if (!keep_local_name) + new_asset_name = "asset.[ACI.hash][ACI.ext]" + log_asset("Sending asset `[asset_name]` to client `[client]` as `[new_asset_name]`") + client << browse_rsc(ACI.resource, new_asset_name) + + client.sent_assets[new_asset_name] = ACI.hash + + addtimer(CALLBACK(client, TYPE_PROC_REF(/client, asset_cache_update_json)), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) + return TRUE + return FALSE + + +/// Precache files without clogging up the browse() queue, used for passively sending files on connection start. +/datum/asset_transport/proc/send_assets_slow(client/client, list/files, filerate = 6) + var/startingfilerate = filerate + for (var/file in files) + if (!client) + break + if (send_assets(client, file)) + if (!(--filerate)) + filerate = startingfilerate + client.browse_queue_flush() + stoplag(0) //queuing calls like this too quickly can cause issues in some client versions + +/// Check the config is valid to load this transport +/// Returns TRUE or FALSE +/datum/asset_transport/proc/validate_config(log = TRUE) + return TRUE + +#undef ASSET_CACHE_TELL_CLIENT_AMOUNT diff --git a/code/modules/asset_cache/transports/webroot_transport.dm b/code/modules/asset_cache/transports/webroot_transport.dm new file mode 100644 index 0000000000..9ee8768efd --- /dev/null +++ b/code/modules/asset_cache/transports/webroot_transport.dm @@ -0,0 +1,87 @@ +/// CDN Webroot asset transport. +/datum/asset_transport/webroot + name = "CDN Webroot asset transport" + +/datum/asset_transport/webroot/Load() + if (validate_config(log = FALSE)) + load_existing_assets() + +/// Processes thru any assets that were registered before we were loaded as a transport. +/datum/asset_transport/webroot/proc/load_existing_assets() + for (var/asset_name in SSassets.cache) + var/datum/asset_cache_item/ACI = SSassets.cache[asset_name] + save_asset_to_webroot(ACI) + +/// Register a browser asset with the asset cache system +/// We also save it to the CDN webroot at this step instead of waiting for send_assets() +/// asset_name - the identifier of the asset +/// asset - the actual asset file or an asset_cache_item datum. +/datum/asset_transport/webroot/register_asset(asset_name, asset) + . = ..() + var/datum/asset_cache_item/ACI = . + + if (istype(ACI) && ACI.hash) + save_asset_to_webroot(ACI) + +/// Saves the asset to the webroot taking into account namespaces and hashes. +/datum/asset_transport/webroot/proc/save_asset_to_webroot(datum/asset_cache_item/ACI) + var/webroot = config.asset_cdn_webroot + var/newpath = "[webroot][get_asset_suffex(ACI)]" + if (fexists(newpath)) + return + if (fexists("[newpath].gz")) //its a common pattern in webhosting to save gzip'ed versions of text files and let the webserver serve them up as gzip compressed normal files, sometimes without keeping the original version. + return + return fcopy(ACI.resource, newpath) + +/// Returns a url for a given asset. +/// asset_name - Name of the asset. +/// asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name +/datum/asset_transport/webroot/get_asset_url(asset_name, datum/asset_cache_item/asset_cache_item) + if (!istype(asset_cache_item)) + asset_cache_item = SSassets.cache[asset_name] + var/url = config.asset_cdn_url //config loading will handle making sure this ends in a / + return "[url][get_asset_suffex(asset_cache_item)]" + +/datum/asset_transport/webroot/proc/get_asset_suffex(datum/asset_cache_item/asset_cache_item) + var/base = "[copytext(asset_cache_item.hash, 1, 3)]/" + var/filename = "asset.[asset_cache_item.hash][asset_cache_item.ext]" + if (length(asset_cache_item.namespace)) + base = "namespaces/[copytext(asset_cache_item.namespace, 1, 3)]/[asset_cache_item.namespace]/" + if (!asset_cache_item.namespace_parent) + filename = "[asset_cache_item.name]" + return base + filename + + +/// webroot asset sending - does nothing unless passed legacy assets +/datum/asset_transport/webroot/send_assets(client/client, list/asset_list) + . = FALSE + var/list/legacy_assets = list() + if (!islist(asset_list)) + asset_list = list(asset_list) + for (var/asset_name in asset_list) + var/datum/asset_cache_item/ACI = asset_list[asset_name] + if (!istype(ACI)) + ACI = SSassets.cache[asset_name] + if (!ACI) + legacy_assets += asset_name //pass it on to base send_assets so it can output an error + continue + if (ACI.legacy) + legacy_assets[asset_name] = ACI + if (length(legacy_assets)) + . = ..(client, legacy_assets) + + +/// webroot slow asset sending - does nothing. +/datum/asset_transport/webroot/send_assets_slow(client/client, list/files, filerate) + return FALSE + +/datum/asset_transport/webroot/validate_config(log = TRUE) + if (!config.asset_cdn_url) + if (log) + log_asset("ERROR: [type]: Invalid Config: ASSET_CDN_URL") + return FALSE + if (!config.asset_cdn_webroot) + if (log) + log_asset("ERROR: [type]: Invalid Config: ASSET_CDN_WEBROOT") + return FALSE + return TRUE diff --git a/code/modules/asset_cache/validate_assets.html b/code/modules/asset_cache/validate_assets.html index b27a266c00..78bcbb92a1 100644 --- a/code/modules/asset_cache/validate_assets.html +++ b/code/modules/asset_cache/validate_assets.html @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/code/modules/blob2/core_chunk.dm b/code/modules/blob2/core_chunk.dm index 15db91e89e..b499f6dc67 100644 --- a/code/modules/blob2/core_chunk.dm +++ b/code/modules/blob2/core_chunk.dm @@ -86,7 +86,7 @@ /obj/item/weapon/blobcore_chunk/attack_self(var/mob/user) if(blob_type && world.time > active_ability_cooldown + last_active_use) last_active_use = world.time - to_chat(user, "\icon [src] \The [src] gesticulates.") + to_chat(user, "[icon2html(src, user.client)] \The [src] gesticulates.") blob_type.on_chunk_use(src, user) else to_chat(user, "\The [src] doesn't seem to respond.") diff --git a/code/modules/blob2/overmind/types/ectoplasmic_horror.dm b/code/modules/blob2/overmind/types/ectoplasmic_horror.dm index a528ce8388..d453c87ac9 100644 --- a/code/modules/blob2/overmind/types/ectoplasmic_horror.dm +++ b/code/modules/blob2/overmind/types/ectoplasmic_horror.dm @@ -94,7 +94,7 @@ break if(!beamtarget_exists && GetAnomalySusceptibility(L) >= 0.5) - carrier.visible_message("\icon [B] \The [B] lashes out at \the [L]!") + carrier.visible_message("[icon2html(B,viewers(carrier))] \The [B] lashes out at \the [L]!") var/datum/beam/drain_beam = carrier.Beam(L, icon_state = "drain_life", time = 10 SECONDS) active_beams |= drain_beam spawn(9 SECONDS) diff --git a/code/modules/blob2/overmind/types/ravenous_macrophage.dm b/code/modules/blob2/overmind/types/ravenous_macrophage.dm index b6b3b65a4f..a97eb2df71 100644 --- a/code/modules/blob2/overmind/types/ravenous_macrophage.dm +++ b/code/modules/blob2/overmind/types/ravenous_macrophage.dm @@ -41,10 +41,10 @@ /datum/blob_type/ravenous_macrophage/on_chunk_tick(obj/item/weapon/blobcore_chunk/B) var/mob/living/L = locate() in range(world.view, B) if(prob(5) && !L.stat) // There's some active living thing nearby, produce offgas. - B.visible_message("\icon [B] \The [B] disgorches a cloud of noxious gas!") + B.visible_message("[icon2html(B,viewers(B))] \The [B] disgorches a cloud of noxious gas!") var/turf/T = get_turf(B) var/datum/effect/effect/system/smoke_spread/noxious/BS = new /datum/effect/effect/system/smoke_spread/noxious BS.attach(T) BS.set_up(3, 0, T) playsound(T, 'sound/effects/smoke.ogg', 50, 1, -3) - BS.start() \ No newline at end of file + BS.start() diff --git a/code/modules/blob2/overmind/types/reactive_spines.dm b/code/modules/blob2/overmind/types/reactive_spines.dm index 0d0021f243..f52d4e3812 100644 --- a/code/modules/blob2/overmind/types/reactive_spines.dm +++ b/code/modules/blob2/overmind/types/reactive_spines.dm @@ -55,5 +55,11 @@ return /datum/blob_type/reactive_spines/chunk_setup(obj/item/weapon/blobcore_chunk/B) - GLOB.moved_event.register_global(B, /obj/item/weapon/blobcore_chunk/proc/call_chunk_unique) - return \ No newline at end of file + B.RegisterSignal(SSmobs, COMSIG_OBSERVER_GLOBALMOVED, /obj/item/weapon/blobcore_chunk/proc/call_chunk_unique) + return + +//I'm putting this here so everybody knows that it's this shitty code that is why that comsig exists. +//I'm just reimplementing the way it worked before but with comsigs. I don't have the patience to refactor this. +/mob/living/Moved() + . = ..() + SEND_SIGNAL(SSmobs, COMSIG_OBSERVER_GLOBALMOVED) diff --git a/code/modules/blob2/overmind/types/roiling_mold.dm b/code/modules/blob2/overmind/types/roiling_mold.dm index 4594ad1c9f..8a2534ebb5 100644 --- a/code/modules/blob2/overmind/types/roiling_mold.dm +++ b/code/modules/blob2/overmind/types/roiling_mold.dm @@ -28,7 +28,7 @@ return var/mob/living/L = locate() in (view(world.view + 3, get_turf(B)) - view(2,get_turf(B)) - previous_targets) // No adjacent mobs. - if(!check_trajectory(L, B, PASSTABLE)) + if(!(L in check_trajectory(L, B, PASSTABLE))) if(!LAZYLEN(previous_targets)) previous_targets = list() @@ -53,12 +53,12 @@ if(istype(user) && user == L) continue - if(!check_trajectory(L, B, PASSTABLE)) // Can't fire at things on the other side of walls / windows. + if(!(L in check_trajectory(L, B, PASSTABLE))) // Can't fire at things on the other side of walls / windows. continue var/obj/item/projectile/P = new spore_projectile(get_turf(B)) - user.visible_message("\icon [B] \The [B] discharges energy toward \the [L]!") + user.visible_message("[icon2html(B,viewers(user))] \The [B] discharges energy toward \the [L]!") P.launch_projectile(L, BP_TORSO, user) - return \ No newline at end of file + return diff --git a/code/modules/blob2/overmind/types/synchronous_mesh.dm b/code/modules/blob2/overmind/types/synchronous_mesh.dm index acf9441b71..1e32ebb40f 100644 --- a/code/modules/blob2/overmind/types/synchronous_mesh.dm +++ b/code/modules/blob2/overmind/types/synchronous_mesh.dm @@ -68,5 +68,5 @@ carrier.adjustFireLoss(-3 / nearby_mobs.len) if(need_beam) - carrier.visible_message("\icon [B] \The [B] sends noxious spores toward \the [victim]!") - carrier.Beam(victim, icon_state = "lichbeam", time = 2 SECONDS) \ No newline at end of file + carrier.visible_message("[icon2html(B,viewers(carrier))] \The [B] sends noxious spores toward \the [victim]!") + carrier.Beam(victim, icon_state = "lichbeam", time = 2 SECONDS) diff --git a/code/modules/casino/casino_prize_vendor.dm b/code/modules/casino/casino_prize_vendor.dm index 18ffd62b7d..df7bebcefc 100644 --- a/code/modules/casino/casino_prize_vendor.dm +++ b/code/modules/casino/casino_prize_vendor.dm @@ -211,7 +211,7 @@ /obj/machinery/casino_prize_dispenser/proc/pay_with_chips(var/obj/item/weapon/spacecasinocash/cashmoney, mob/user, var/price) //"cashmoney_:[cashmoney] user:[user] currently_vending:[currently_vending]" if(price > cashmoney.worth) - to_chat(usr, "\icon[cashmoney] That is not enough chips.") + to_chat(usr, "[icon2html(cashmoney, user.client)] That is not enough chips.") return 0 if(istype(cashmoney, /obj/item/weapon/spacecasinocash)) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 525f7256f4..0f053b73ee 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -448,7 +448,8 @@ src << browse('code/modules/asset_cache/validate_assets.html', "window=asset_cache_browser") //Precache the client with all other assets slowly, so as to not block other browse() calls - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(getFilesSlow), src, SSassets.preload, FALSE), 5 SECONDS) + if (config.asset_simple_preload) + addtimer(CALLBACK(SSassets.transport, TYPE_PROC_REF(/datum/asset_transport, send_assets_slow), src, SSassets.transport.preload), 5 SECONDS) /mob/proc/MayRespawn() return 0 diff --git a/code/modules/clothing/spacesuits/rig/modules/specific/pat_module_vr.dm b/code/modules/clothing/spacesuits/rig/modules/specific/pat_module_vr.dm index 7c7e8453d6..86880b897e 100644 --- a/code/modules/clothing/spacesuits/rig/modules/specific/pat_module_vr.dm +++ b/code/modules/clothing/spacesuits/rig/modules/specific/pat_module_vr.dm @@ -38,7 +38,8 @@ var/mob/living/carbon/human/H = holder.wearer to_chat(H,"You activate the P.A.T. module.") - GLOB.moved_event.register(H, src, /obj/item/rig_module/pat_module/proc/boop) + H.AddComponent(/datum/component/recursive_move) + RegisterSignal(H, COMSIG_OBSERVER_MOVED, /obj/item/rig_module/pat_module/proc/boop) /obj/item/rig_module/pat_module/deactivate() if(!..()) @@ -46,7 +47,7 @@ var/mob/living/carbon/human/H = holder.wearer to_chat(H,"Your disable the P.A.T. module.") - GLOB.moved_event.unregister(H, src) + UnregisterSignal(H, COMSIG_OBSERVER_MOVED) /obj/item/rig_module/pat_module/proc/boop(var/mob/living/carbon/human/user,var/turf/To,var/turf/Tn) if(!istype(user) || !istype(To) || !istype(Tn)) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 742a10ffab..62967ad138 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -177,13 +177,13 @@ spark_system = null return ..() -/obj/item/weapon/rig/examine() +/obj/item/weapon/rig/examine(mob/user) . = ..() if(wearer) for(var/obj/item/piece in list(helmet,gloves,chest,boots)) if(!piece || piece.loc != wearer) continue - . += "\icon[piece][bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." + . += "[icon2html(piece, user.client)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." if(src.loc == usr) . += "The access panel is [locked? "locked" : "unlocked"]." diff --git a/code/modules/clothing/suits/hooded.dm b/code/modules/clothing/suits/hooded.dm index 60d7f53b73..d56f6c590d 100644 --- a/code/modules/clothing/suits/hooded.dm +++ b/code/modules/clothing/suits/hooded.dm @@ -15,7 +15,7 @@ ..() /obj/item/clothing/suit/storage/hooded/Destroy() - qdel(hood) + QDEL_NULL(hood) return ..() /obj/item/clothing/suit/storage/hooded/proc/MakeHood() @@ -34,12 +34,13 @@ /obj/item/clothing/suit/storage/hooded/proc/RemoveHood() hood_up = FALSE update_icon() - hood.canremove = TRUE // This shouldn't matter anyways but just incase. - if(ishuman(hood.loc)) - var/mob/living/carbon/H = hood.loc - H.unEquip(hood, 1) - H.update_inv_wear_suit() - hood.forceMove(src) + if(hood) + hood.canremove = TRUE // This shouldn't matter anyways but just incase. + if(ishuman(hood.loc)) + var/mob/living/carbon/H = hood.loc + H.unEquip(hood, 1) + H.update_inv_wear_suit() + hood.forceMove(src) /obj/item/clothing/suit/storage/hooded/dropped() RemoveHood() diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm index ba8f247443..340158eba8 100644 --- a/code/modules/detectivework/microscope/dnascanner.dm +++ b/code/modules/detectivework/microscope/dnascanner.dm @@ -105,7 +105,7 @@ last_process_worldtime = world.time /obj/machinery/dnaforensics/proc/complete_scan() - visible_message("\icon[src][bicon(src)] makes an insistent chime.", 2) + visible_message("[icon2html(src,viewers(src))] makes an insistent chime.", 2) update_icon() if(bloodsamp) var/obj/item/weapon/paper/P = new(src) @@ -142,4 +142,4 @@ else if(bloodsamp) icon_state = "dnaclosed" else - icon_state = "dnaopen" \ No newline at end of file + icon_state = "dnaopen" diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index 5d77b215f3..4c310c4a53 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -76,7 +76,7 @@ log transactions //display a message to the user var/response = pick("Initiating withdraw. Have a nice day!", "CRITICAL ERROR: Activating cash chamber panic siphon.","PIN Code accepted! Emptying account balance.", "Jackpot!") - to_chat(user, "\icon[src][bicon(src)] The [src] beeps: \"[response]\"") + to_chat(user, "[icon2html(src, user.client)] The [src] beeps: \"[response]\"") return 1 /obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob) @@ -85,7 +85,7 @@ log transactions if(istype(I, /obj/item/weapon/card)) if(emagged > 0) //prevent inserting id into an emagged ATM - to_chat(user, span_red("\icon[src][bicon(src)] CARD READER ERROR. This system has been compromised!")) + to_chat(user, span_red("[icon2html(src, user.client)] CARD READER ERROR. This system has been compromised!")) return else if(istype(I,/obj/item/weapon/card/emag)) I.resolve_attackby(src, user) @@ -234,7 +234,7 @@ log transactions var/target_account_number = text2num(href_list["target_acc_number"]) var/transfer_purpose = href_list["purpose"] if(charge_to_account(target_account_number, authenticated_account.owner_name, transfer_purpose, machine_id, transfer_amount)) - to_chat(usr, "\icon[src][bicon(src)]Funds transfer successful.") + to_chat(usr, "[icon2html(src, usr.client)]Funds transfer successful.") authenticated_account.money -= transfer_amount //create an entry in the account transaction log @@ -247,10 +247,10 @@ log transactions T.amount = "([transfer_amount])" authenticated_account.transaction_log.Add(T) else - to_chat(usr, "\icon[src][bicon(src)]Funds transfer failed.") + to_chat(usr, "[icon2html(src, usr.client)]Funds transfer failed.") else - to_chat(usr, "\icon[src][bicon(src)]You don't have enough funds to do that!") + to_chat(usr, "[icon2html(src, usr.client)]You don't have enough funds to do that!") if("view_screen") view_screen = text2num(href_list["view_screen"]) if("change_security_level") @@ -288,11 +288,11 @@ log transactions T.time = stationtime2text() failed_account.transaction_log.Add(T) else - to_chat(usr, span_red("\icon[src][bicon(src)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.")) + to_chat(usr, span_red("[icon2html(src, usr.client)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.")) previous_account_number = tried_account_num playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) else - to_chat(usr, span_red("\icon[src][bicon(src)] incorrect pin/account combination entered.")) + to_chat(usr, span_red("[icon2html(src, usr.client)] incorrect pin/account combination entered.")) number_incorrect_tries = 0 else playsound(src, 'sound/machines/twobeep.ogg', 50, 1) @@ -308,7 +308,7 @@ log transactions T.time = stationtime2text() authenticated_account.transaction_log.Add(T) - to_chat(usr, span_blue("\icon[src][bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'")) + to_chat(usr, span_blue("[icon2html(src, usr.client)] Access granted. Welcome user '[authenticated_account.owner_name].'")) previous_account_number = tried_account_num if("e_withdrawal") @@ -336,7 +336,7 @@ log transactions T.time = stationtime2text() authenticated_account.transaction_log.Add(T) else - to_chat(usr, "\icon[src][bicon(src)]You don't have enough funds to do that!") + to_chat(usr, "[icon2html(src, usr.client)]You don't have enough funds to do that!") if("withdrawal") var/amount = max(text2num(href_list["funds_amount"]),0) amount = round(amount, 0.01) @@ -361,7 +361,7 @@ log transactions T.time = stationtime2text() authenticated_account.transaction_log.Add(T) else - to_chat(usr, "\icon[src][bicon(src)]You don't have enough funds to do that!") + to_chat(usr, "[icon2html(src, usr.client)]You don't have enough funds to do that!") if("balance_statement") if(authenticated_account) var/obj/item/weapon/paper/R = new(src.loc) @@ -433,7 +433,7 @@ log transactions if(!held_card) //this might happen if the user had the browser window open when somebody emagged it if(emagged > 0) - to_chat(usr, span_red("\icon[src][bicon(src)] The ATM card reader rejected your ID because this machine has been sabotaged!")) + to_chat(usr, span_red("[icon2html(src, usr.client)] The ATM card reader rejected your ID because this machine has been sabotaged!")) else var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card/id)) diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index 3673f67814..e8fca4633b 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -107,7 +107,7 @@ if(linked_account) scan_card(I, O) else - to_chat(usr, "\icon[src][bicon(src)]Unable to connect to linked account.") + to_chat(usr, "[icon2html(src, usr.client)]Unable to connect to linked account.") else if (istype(O, /obj/item/weapon/spacecash/ewallet)) var/obj/item/weapon/spacecash/ewallet/E = O if (linked_account) @@ -115,7 +115,7 @@ if(transaction_locked && !transaction_paid) if(transaction_amount <= E.worth) playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("\icon[src][bicon(src)] \The [src] chimes.") + src.visible_message("[icon2html(src,viewers(src))] \The [src] chimes.") transaction_paid = 1 //transfer the money @@ -132,11 +132,11 @@ T.time = stationtime2text() linked_account.transaction_log.Add(T) else - to_chat(usr, "\icon[src][bicon(src)]\The [O] doesn't have that much money!") + to_chat(usr, "[icon2html(src, usr.client)]\The [O] doesn't have that much money!") else - to_chat(usr, "\icon[src][bicon(src)]Connected account has been suspended.") + to_chat(usr, "[icon2html(src, usr.client)]Connected account has been suspended.") else - to_chat(usr, "\icon[src][bicon(src)]EFTPOS is not connected to an account.") + to_chat(usr, "[icon2html(src, usr.client)]EFTPOS is not connected to an account.") else ..() @@ -154,14 +154,14 @@ tgui_alert_async(usr, "That is not a valid code!") print_reference() else - to_chat(usr, "\icon[src][bicon(src)]Incorrect code entered.") + to_chat(usr, "[icon2html(src, usr.client)]Incorrect code entered.") if("change_id") var/attempt_code = text2num(input(usr, "Re-enter the current EFTPOS access code", "Confirm EFTPOS code")) if(attempt_code == access_code) eftpos_name = sanitize(input(usr, "Enter a new terminal ID for this device", "Enter new EFTPOS ID"), MAX_NAME_LEN) + " EFTPOS scanner" print_reference() else - to_chat(usr, "\icon[src][bicon(src)]Incorrect code entered.") + to_chat(usr, "[icon2html(src, usr.client)]Incorrect code entered.") if("link_account") var/attempt_account_num = tgui_input_number(usr, "Enter account number to pay EFTPOS charges into", "New account number") var/attempt_pin = tgui_input_number(usr, "Enter pin code", "Account pin") @@ -169,9 +169,9 @@ if(linked_account) if(linked_account.suspended) linked_account = null - to_chat(usr, "\icon[src][bicon(src)]Account has been suspended.") + to_chat(usr, "[icon2html(src, usr.client)]Account has been suspended.") else - to_chat(usr, "\icon[src][bicon(src)]Account not found.") + to_chat(usr, "[icon2html(src, usr.client)]Account not found.") if("trans_purpose") var/choice = sanitize(input(usr, "Enter reason for EFTPOS transaction", "Transaction purpose")) if(choice) transaction_purpose = choice @@ -194,14 +194,14 @@ else if(linked_account) transaction_locked = 1 else - to_chat(usr, "\icon[src][bicon(src)]No account connected to send transactions to.") + to_chat(usr, "[icon2html(src, usr.client)]No account connected to send transactions to.") if("scan_card") if(linked_account) var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card)) scan_card(I) else - to_chat(usr, "\icon[src][bicon(src)]Unable to link accounts.") + to_chat(usr, "[icon2html(src, usr.client)]Unable to link accounts.") if("reset") //reset the access code - requires HoP/captain access var/obj/item/I = usr.get_active_hand() @@ -209,10 +209,10 @@ var/obj/item/weapon/card/id/C = I if((access_cent_captain in C.access) || (access_hop in C.access) || (access_captain in C.access)) access_code = 0 - to_chat(usr, "\icon[src][bicon(src)]Access code reset to 0.") + to_chat(usr, "[icon2html(src, usr.client)]Access code reset to 0.") else if (istype(I, /obj/item/weapon/card/emag)) access_code = 0 - to_chat(usr, "\icon[src][bicon(src)]Access code reset to 0.") + to_chat(usr, "[icon2html(src, usr.client)]Access code reset to 0.") src.attack_self(usr) @@ -236,7 +236,7 @@ if(!D.suspended) if(transaction_amount <= D.money) playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("\icon[src][bicon(src)] \The [src] chimes.") + src.visible_message("[icon2html(src,viewers(src))] \The [src] chimes.") transaction_paid = 1 //transfer the money @@ -265,25 +265,25 @@ T.time = stationtime2text() linked_account.transaction_log.Add(T) else - to_chat(usr, "\icon[src][bicon(src)]You don't have that much money!") + to_chat(usr, "[icon2html(src, usr.client)]You don't have that much money!") else - to_chat(usr, "\icon[src][bicon(src)]Your account has been suspended.") + to_chat(usr, "[icon2html(src, usr.client)]Your account has been suspended.") else - to_chat(usr, "\icon[src][bicon(src)]Unable to access account. Check security settings and try again.") + to_chat(usr, "[icon2html(src, usr.client)]Unable to access account. Check security settings and try again.") else - to_chat(usr, "\icon[src][bicon(src)]Connected account has been suspended.") + to_chat(usr, "[icon2html(src, usr.client)]Connected account has been suspended.") else - to_chat(usr, "\icon[src][bicon(src)]EFTPOS is not connected to an account.") + to_chat(usr, "[icon2html(src, usr.client)]EFTPOS is not connected to an account.") else if (istype(I, /obj/item/weapon/card/emag)) if(transaction_locked) if(transaction_paid) - to_chat(usr, "\icon[src][bicon(src)]You stealthily swipe \the [I] through \the [src].") + to_chat(usr, "[icon2html(src, usr.client)]You stealthily swipe \the [I] through \the [src].") transaction_locked = 0 transaction_paid = 0 else usr.visible_message("\The [usr] swipes a card through \the [src].") playsound(src, 'sound/machines/chime.ogg', 50, 1) - src.visible_message("\icon[src][bicon(src)] \The [src] chimes.") + src.visible_message("[icon2html(src,viewers(src))] \The [src] chimes.") transaction_paid = 1 //emag? diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index ae2479d613..f48404af0e 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -103,7 +103,7 @@ if(allowed(usr)) locked = !locked else - to_chat(usr, "\icon[src][bicon(src)]Insufficient access.") + to_chat(usr, "[icon2html(src, usr.client)]Insufficient access.") if("toggle_cash_lock") cash_locked = !cash_locked if("link_account") @@ -113,9 +113,9 @@ if(linked_account) if(linked_account.suspended) linked_account = null - src.visible_message("\icon[src][bicon(src)]Account has been suspended.") + src.visible_message("[icon2html(src,viewers(src))]Account has been suspended.") else - to_chat(usr, "\icon[src][bicon(src)]Account not found.") + to_chat(usr, "[icon2html(src, usr.client)]Account not found.") if("custom_order") var/t_purpose = sanitize(tgui_input_text(usr, "Enter purpose", "New purpose")) if (!t_purpose || !Adjacent(usr)) return @@ -126,7 +126,7 @@ transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) - src.visible_message("\icon[src][bicon(src)][transaction_purpose]: [t_amount] Thaler\s.") + src.visible_message("[icon2html(src,viewers(src))][transaction_purpose]: [t_amount] Thaler\s.") if("set_amount") var/item_name = locate(href_list["item"]) var/n_amount = round(tgui_input_number(usr, "Enter amount", "New amount", 0, 20, 0)) @@ -163,7 +163,7 @@ price_list.Cut() if("reset_log") transaction_logs.Cut() - to_chat(usr, "\icon[src][bicon(src)]Transaction log reset.") + to_chat(usr, "[icon2html(src, usr.client)]Transaction log reset.") updateDialog() @@ -208,7 +208,7 @@ return 1 else confirm_item = I - src.visible_message("\icon[src][bicon(src)]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") + src.visible_message("[icon2html(src,viewers(src))]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") playsound(src, 'sound/machines/twobeep.ogg', 25) return 0 @@ -219,14 +219,14 @@ if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") + to_chat(usr, "[icon2html(src, usr.client)]The cash box is open.") return if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I)) return if (!linked_account) - usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") + usr.visible_message("[icon2html(src,viewers(src))]Unable to connect to linked account.") return // Access account for transaction @@ -239,13 +239,13 @@ D = attempt_account_access(I.associated_account_number, attempt_pin, 2) if(!D) - src.visible_message("\icon[src][bicon(src)]Unable to access account. Check security settings and try again.") + src.visible_message("[icon2html(src,viewers(src))]Unable to access account. Check security settings and try again.") else if(D.suspended) - src.visible_message("\icon[src][bicon(src)]Your account has been suspended.") + src.visible_message("[icon2html(src,viewers(src))]Your account has been suspended.") else if(transaction_amount > D.money) - src.visible_message("\icon[src][bicon(src)]Not enough funds.") + src.visible_message("[icon2html(src,viewers(src))]Not enough funds.") else // Transfer the money D.money -= transaction_amount @@ -284,7 +284,7 @@ if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") + to_chat(usr, "[icon2html(src, usr.client)]The cash box is open.") return if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E)) @@ -293,7 +293,7 @@ // Access account for transaction if(check_account()) if(transaction_amount > E.worth) - src.visible_message("\icon[src][bicon(src)]Not enough funds.") + src.visible_message("[icon2html(src,viewers(src))]Not enough funds.") else // Transfer the money E.worth -= transaction_amount @@ -322,14 +322,14 @@ if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") + to_chat(usr, "[icon2html(src, usr.client)]The cash box is open.") return if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(SC)) return if(transaction_amount > SC.worth) - src.visible_message("\icon[src][bicon(src)]Not enough money.") + src.visible_message("[icon2html(src,viewers(src))]Not enough money.") else // Insert cash into magical slot SC.worth -= transaction_amount @@ -351,20 +351,20 @@ /obj/machinery/cash_register/proc/scan_item_price(obj/O) if(!istype(O)) return if(item_list.len > 10) - src.visible_message("\icon[src][bicon(src)]Only up to ten different items allowed per purchase.") + src.visible_message("[icon2html(src,viewers(src))]Only up to ten different items allowed per purchase.") return if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - to_chat(usr, "\icon[src][bicon(src)]The cash box is open.") + to_chat(usr, "[icon2html(src, usr.client)]The cash box is open.") return // First check if item has a valid price var/price = O.get_item_cost() if(isnull(price)) - src.visible_message("\icon[src][bicon(src)]Unable to find item in database.") + src.visible_message("[icon2html(src,viewers(src))]Unable to find item in database.") return // Call out item cost - src.visible_message("\icon[src][bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") + src.visible_message("[icon2html(src,viewers(src))]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") // Note the transaction purpose for later use if(transaction_purpose) transaction_purpose += "
" @@ -432,11 +432,11 @@ /obj/machinery/cash_register/proc/check_account() if (!linked_account) - usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") + usr.visible_message("[icon2html(src,viewers(src))]Unable to connect to linked account.") return 0 if(linked_account.suspended) - src.visible_message("\icon[src][bicon(src)]Connected account has been suspended.") + src.visible_message("[icon2html(src,viewers(src))]Connected account has been suspended.") return 0 return 1 @@ -444,7 +444,7 @@ /obj/machinery/cash_register/proc/transaction_complete() /// Visible confirmation playsound(src, 'sound/machines/chime.ogg', 25) - src.visible_message("\icon[src][bicon(src)]Transaction complete.") + src.visible_message("[icon2html(src,viewers(src))]Transaction complete.") flick("register_approve", src) reset_memory() updateDialog() diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index d2ab5884ae..5632203dd8 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -99,7 +99,7 @@ if(allowed(usr)) locked = !locked else - to_chat(usr, "\icon[src][bicon(src)]Insufficient access.") + to_chat(usr, "[icon2html(src, usr.client)]Insufficient access.") if("link_account") var/attempt_account_num = tgui_input_number(usr, "Enter account number", "New account number") var/attempt_pin = tgui_input_number(usr, "Enter PIN", "Account PIN") @@ -107,9 +107,9 @@ if(linked_account) if(linked_account.suspended) linked_account = null - src.visible_message("\icon[src][bicon(src)]Account has been suspended.") + src.visible_message("[icon2html(src,viewers(src))]Account has been suspended.") else - to_chat(usr, "\icon[src][bicon(src)]Account not found.") + to_chat(usr, "[icon2html(src, usr.client)]Account not found.") if("custom_order") var/t_purpose = sanitize(tgui_input_text(usr, "Enter purpose", "New purpose")) if (!t_purpose || !Adjacent(usr)) return @@ -120,7 +120,7 @@ transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) - src.visible_message("\icon[src][bicon(src)][transaction_purpose]: [t_amount] Thaler\s.") + src.visible_message("[icon2html(src,viewers(src))][transaction_purpose]: [t_amount] Thaler\s.") if("set_amount") var/item_name = locate(href_list["item"]) var/n_amount = round(tgui_input_number(usr, "Enter amount", "New amount", 0, 20, 0)) @@ -157,7 +157,7 @@ price_list.Cut() if("reset_log") transaction_logs.Cut() - to_chat(usr, "\icon[src][bicon(src)]Transaction log reset.") + to_chat(usr, "[icon2html(src, usr.client)]Transaction log reset.") updateDialog() @@ -190,7 +190,7 @@ return 1 else confirm_item = I - src.visible_message("\icon[src][bicon(src)]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") + src.visible_message("[icon2html(src,viewers(src))]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") playsound(src, 'sound/machines/twobeep.ogg', 25) return 0 @@ -203,7 +203,7 @@ return if (!linked_account) - usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") + usr.visible_message("[icon2html(src,viewers(src))]Unable to connect to linked account.") return // Access account for transaction @@ -216,13 +216,13 @@ D = attempt_account_access(I.associated_account_number, attempt_pin, 2) if(!D) - src.visible_message("\icon[src][bicon(src)]Unable to access account. Check security settings and try again.") + src.visible_message("[icon2html(src,viewers(src))]Unable to access account. Check security settings and try again.") else if(D.suspended) - src.visible_message("\icon[src][bicon(src)]Your account has been suspended.") + src.visible_message("[icon2html(src,viewers(src))]Your account has been suspended.") else if(transaction_amount > D.money) - src.visible_message("\icon[src][bicon(src)]Not enough funds.") + src.visible_message("[icon2html(src,viewers(src))]Not enough funds.") else // Transfer the money D.money -= transaction_amount @@ -265,7 +265,7 @@ // Access account for transaction if(check_account()) if(transaction_amount > E.worth) - src.visible_message("\icon[src][bicon(src)]Not enough funds.") + src.visible_message("[icon2html(src,viewers(src))]Not enough funds.") else // Transfer the money E.worth -= transaction_amount @@ -291,16 +291,16 @@ /obj/item/device/retail_scanner/proc/scan_item_price(var/obj/O) if(!istype(O)) return if(item_list.len > 10) - src.visible_message("\icon[src][bicon(src)]Only up to ten different items allowed per purchase.") + src.visible_message("[icon2html(src,viewers(src))]Only up to ten different items allowed per purchase.") return // First check if item has a valid price var/price = O.get_item_cost() if(isnull(price)) - src.visible_message("\icon[src][bicon(src)]Unable to find item in database.") + src.visible_message("[icon2html(src,viewers(src))]Unable to find item in database.") return // Call out item cost - src.visible_message("\icon[src][bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") + src.visible_message("[icon2html(src,viewers(src))]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") // Note the transaction purpose for later use if(transaction_purpose) transaction_purpose += "
" @@ -368,11 +368,11 @@ /obj/item/device/retail_scanner/proc/check_account() if (!linked_account) - usr.visible_message("\icon[src][bicon(src)]Unable to connect to linked account.") + usr.visible_message("[icon2html(src,viewers(src))]Unable to connect to linked account.") return 0 if(linked_account.suspended) - src.visible_message("\icon[src][bicon(src)]Connected account has been suspended.") + src.visible_message("[icon2html(src,viewers(src))]Connected account has been suspended.") return 0 return 1 @@ -380,7 +380,7 @@ /obj/item/device/retail_scanner/proc/transaction_complete() /// Visible confirmation playsound(src, 'sound/machines/chime.ogg', 25) - src.visible_message("\icon[src][bicon(src)]Transaction complete.") + src.visible_message("[icon2html(src,viewers(src))]Transaction complete.") flick("retail_approve", src) reset_memory() updateDialog() diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index a11a6768dd..17747948ee 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -270,7 +270,7 @@ GLOBAL_LIST_EMPTY(vending_products) // This is not a status display message, since it's something the character // themselves is meant to see BEFORE putting the money in - to_chat(usr, "\icon[cashmoney][bicon(cashmoney)] That is not enough money.") + to_chat(usr, "[icon2html(cashmoney, user.client)] That is not enough money.") return 0 if(istype(cashmoney, /obj/item/weapon/spacecash)) diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index f098533a3b..467f5e25e2 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -71,7 +71,7 @@ // Spawn a single carp at given location. /datum/event/carp_migration/proc/spawn_one_carp(var/loc) var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/carp/event(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_carp_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_carp_destruction)) spawned_carp.Add(M) return M @@ -85,7 +85,7 @@ // If carp is bomphed, remove it from the list. /datum/event/carp_migration/proc/on_carp_destruction(var/mob/M) spawned_carp -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_carp_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) /datum/event/carp_migration/end() . = ..() diff --git a/code/modules/events/gnat_migration.dm b/code/modules/events/gnat_migration.dm index e8b7696cb6..535b3d81f6 100644 --- a/code/modules/events/gnat_migration.dm +++ b/code/modules/events/gnat_migration.dm @@ -71,7 +71,7 @@ // Spawn a single gnat at given location. /datum/event/gnat_migration/proc/spawn_one_gnat(var/loc) var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/gnat(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_gnat_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_gnat_destruction)) spawned_gnat.Add(M) return M @@ -85,7 +85,7 @@ // If gnat is bomphed, remove it from the list. /datum/event/gnat_migration/proc/on_gnat_destruction(var/mob/M) spawned_gnat -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_gnat_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) /datum/event/gnat_migration/end() . = ..() diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index 17fcdec8d6..b5b8f6876f 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -53,7 +53,7 @@ // Spawn a single vermin at given location. /datum/event/infestation/proc/spawn_one_vermin(var/loc) var/mob/living/simple_mob/animal/M = new spawn_types(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_vermin_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_vermin_destruction)) spawned_vermin.Add(M) return M @@ -67,7 +67,7 @@ // If vermin is kill, remove it from the list. /datum/event/infestation/proc/on_vermin_destruction(var/mob/M) spawned_vermin -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_vermin_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) diff --git a/code/modules/events/jellyfish_migration.dm b/code/modules/events/jellyfish_migration.dm index aecf726739..1fd08b1364 100644 --- a/code/modules/events/jellyfish_migration.dm +++ b/code/modules/events/jellyfish_migration.dm @@ -71,7 +71,7 @@ // Spawn a single jellyfish at given location. /datum/event/jellyfish_migration/proc/spawn_one_jellyfish(var/loc) var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/vore/alienanimals/space_jellyfish(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_jellyfish_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_jellyfish_destruction)) spawned_jellyfish.Add(M) return M @@ -85,7 +85,7 @@ // If jellyfish is bomphed, remove it from the list. /datum/event/jellyfish_migration/proc/on_jellyfish_destruction(var/mob/M) spawned_jellyfish -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_jellyfish_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) /datum/event/jellyfish_migration/end() . = ..() diff --git a/code/modules/events/ray_migration.dm b/code/modules/events/ray_migration.dm index 94674c7522..8603205d52 100644 --- a/code/modules/events/ray_migration.dm +++ b/code/modules/events/ray_migration.dm @@ -71,7 +71,7 @@ // Spawn a single ray at given location. /datum/event/ray_migration/proc/spawn_one_ray(var/loc) var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/ray(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_ray_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_ray_destruction)) spawned_ray.Add(M) return M @@ -85,7 +85,7 @@ // If ray is bomphed, remove it from the list. /datum/event/ray_migration/proc/on_ray_destruction(var/mob/M) spawned_ray -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_ray_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) /datum/event/ray_migration/end() . = ..() diff --git a/code/modules/events/shark_migration.dm b/code/modules/events/shark_migration.dm index fd5d152f44..c36dd28cb2 100644 --- a/code/modules/events/shark_migration.dm +++ b/code/modules/events/shark_migration.dm @@ -71,7 +71,7 @@ // Spawn a single shark at given location. /datum/event/shark_migration/proc/spawn_one_shark(var/loc) var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/shark/event(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_shark_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_shark_destruction)) spawned_shark.Add(M) return M @@ -85,7 +85,7 @@ // If shark is bomphed, remove it from the list. /datum/event/shark_migration/proc/on_shark_destruction(var/mob/M) spawned_shark -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_shark_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) /datum/event/shark_migration/end() . = ..() diff --git a/code/modules/events/spacefish_migration.dm b/code/modules/events/spacefish_migration.dm index e25ae3a3cb..75a435bd8c 100644 --- a/code/modules/events/spacefish_migration.dm +++ b/code/modules/events/spacefish_migration.dm @@ -86,7 +86,7 @@ // Spawn a single fish at given location. /datum/event/spacefish_migration/proc/spawn_one_fish(var/loc) var/mob/living/simple_mob/animal/M = new fish_type(loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_fish_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_fish_destruction)) spawned_fish.Add(M) return M @@ -100,7 +100,7 @@ // If fish is bomphed, remove it from the list. /datum/event/spacefish_migration/proc/on_fish_destruction(var/mob/M) spawned_fish -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_fish_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) /datum/event/spacefish_migration/end() . = ..() diff --git a/code/modules/examine/descriptions/armor.dm b/code/modules/examine/descriptions/armor.dm index 2ea8c4e4a0..b1cf96af6e 100644 --- a/code/modules/examine/descriptions/armor.dm +++ b/code/modules/examine/descriptions/armor.dm @@ -24,7 +24,7 @@ switch(slowdown) if(-INFINITY to -0.1) return "It looks like it might actually make you faster!" - if(0 || null) + if(0,null) return "It doesn't look like it'll impede your mobility." if(0.5) return "It might slow you down a little bit." diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 949afd4a6f..9d4f8a9c0b 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -34,7 +34,7 @@ // Quickly adds the boilerplate code to add an image and padding for the image. /proc/desc_panel_image(var/icon_state) - return "\icon[description_icons[icon_state]][EXAMINE_PANEL_PADDING]" + return "[bicon(description_icons[icon_state])][EXAMINE_PANEL_PADDING]" /mob/living/get_description_fluff() if(flavor_text) //Get flavor text for the green text. @@ -56,7 +56,7 @@ description_holders["interactions"] = A.get_description_interaction() description_holders["name"] = "[A.name]" - description_holders["icon"] = "\icon[A.examine_icon()]" + description_holders["icon"] = "[icon2html(A.examine_icon(),src)]" description_holders["desc"] = A.desc /mob/Stat() diff --git a/code/modules/food/kitchen/icecream.dm b/code/modules/food/kitchen/icecream.dm index e92bd32254..93b43035d7 100644 --- a/code/modules/food/kitchen/icecream.dm +++ b/code/modules/food/kitchen/icecream.dm @@ -92,7 +92,7 @@ var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O if(!I.ice_creamed) if(product_types[dispense_flavour] > 0) - src.visible_message("\icon[src][bicon(src)] [user] scoops delicious [flavour_name] icecream into [I].") + src.visible_message("[icon2html(src,viewers(src))] [user] scoops delicious [flavour_name] icecream into [I].") product_types[dispense_flavour] -= 1 I.add_ice_cream(flavour_name) // if(beaker) @@ -192,4 +192,4 @@ #undef ICECREAM_STRAWBERRY #undef ICECREAM_BLUE #undef CONE_WAFFLE -#undef CONE_CHOC \ No newline at end of file +#undef CONE_CHOC diff --git a/code/modules/gamemaster/event2/events/mob_spawning.dm b/code/modules/gamemaster/event2/events/mob_spawning.dm index 16ed6a3150..828947a07d 100644 --- a/code/modules/gamemaster/event2/events/mob_spawning.dm +++ b/code/modules/gamemaster/event2/events/mob_spawning.dm @@ -80,7 +80,7 @@ /datum/event2/event/mob_spawning/proc/spawn_one_mob(new_loc, mob_type) var/mob/living/simple_mob/M = new mob_type(new_loc) - GLOB.destroyed_event.register(M, src, PROC_REF(on_mob_destruction)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(on_mob_destruction)) spawned_mobs += M return M @@ -94,4 +94,4 @@ // If simple_mob is bomphed, remove it from the list. /datum/event2/event/mob_spawning/proc/on_mob_destruction(mob/M) spawned_mobs -= M - GLOB.destroyed_event.unregister(M, src, PROC_REF(on_mob_destruction)) + UnregisterSignal(M, COMSIG_OBSERVER_DESTROYED) diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm index b997948a5a..1358625caa 100644 --- a/code/modules/holomap/station_holomap.dm +++ b/code/modules/holomap/station_holomap.dm @@ -112,9 +112,10 @@ user.client.images |= holomap_datum.station_map watching_mob = user - GLOB.moved_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) - GLOB.dir_set_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) - GLOB.destroyed_event.register(watching_mob, src, /obj/machinery/station_map/proc/stopWatching) + watching_mob.AddComponent(/datum/component/recursive_move) + RegisterSignal(watching_mob, COMSIG_OBSERVER_MOVED, /obj/machinery/station_map/proc/checkPosition) + //GLOB.dir_set_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) + RegisterSignal(watching_mob, COMSIG_OBSERVER_DESTROYED, /obj/machinery/station_map/proc/stopWatching) update_use_power(USE_POWER_ACTIVE) if(bogus) @@ -141,9 +142,9 @@ var/mob/M = watching_mob spawn(5) //we give it time to fade out M.client.images -= holomap_datum.station_map - GLOB.moved_event.unregister(watching_mob, src) - GLOB.dir_set_event.unregister(watching_mob, src) - GLOB.destroyed_event.unregister(watching_mob, src) + UnregisterSignal(watching_mob, COMSIG_OBSERVER_MOVED) + //GLOB.dir_set_event.unregister(watching_mob, src) + UnregisterSignal(watching_mob, COMSIG_OBSERVER_DESTROYED) watching_mob = null update_use_power(USE_POWER_IDLE) @@ -163,7 +164,7 @@ /obj/machinery/station_map/update_icon() if(!holomap_datum) return //Not yet. - + cut_overlays() if(stat & BROKEN) icon_state = "station_mapb" diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index 128c1dc745..e81d5606d3 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -68,15 +68,15 @@ active = 0 if(failed_task) failed_task = 0 - visible_message("\icon[src][bicon(src)] [src] pings unhappily, flashing a red warning light.") + visible_message("[icon2html(src,viewers(src))] [src] pings unhappily, flashing a red warning light.") else - visible_message("\icon[src][bicon(src)] [src] pings happily.") + visible_message("[icon2html(src,viewers(src))] [src] pings happily.") if(eject_disk) eject_disk = 0 if(loaded_disk) loaded_disk.loc = get_turf(src) - visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("[icon2html(src,viewers(src))] [src] beeps and spits out [loaded_disk].") loaded_disk = null /obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -190,7 +190,7 @@ SSplants.seeds[seed.seed.name] = seed.seed seed.update_seed() - visible_message("\icon[src][bicon(src)] [src] beeps and spits out [seed].") + visible_message("[icon2html(src,viewers(src))] [src] beeps and spits out [seed].") seed = null return TRUE @@ -199,7 +199,7 @@ if(!loaded_disk) return loaded_disk.forceMove(get_turf(src)) - visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("[icon2html(src,viewers(src))] [src] beeps and spits out [loaded_disk].") loaded_disk = null return TRUE diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 13bb767579..42b1acb554 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -415,7 +415,7 @@ if(loc) for(var/mob/O in hearers(1, get_turf(src))) - O.show_message("\icon[src][bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) + O.show_message("[icon2html(src, usr.client)] *beep* *beep*", 3, "*beep* *beep*", 2) /obj/item/integrated_circuit/input/EPv2 name = "\improper EPv2 circuit" diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 143ed46544..6569136994 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -188,14 +188,14 @@ // These procs do not relocate the grenade, that's the callers responsibility /obj/item/integrated_circuit/manipulation/grenade/proc/attach_grenade(var/obj/item/weapon/grenade/G) attached_grenade = G - GLOB.destroyed_event.register(attached_grenade, src, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) + RegisterSignal(attached_grenade, COMSIG_OBSERVER_DESTROYED, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) size += G.w_class desc += " \An [attached_grenade] is attached to it!" /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade() if(!attached_grenade) return - GLOB.destroyed_event.unregister(attached_grenade, src, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) + UnregisterSignal(attached_grenade, COMSIG_OBSERVER_DESTROYED) attached_grenade = null size = initial(size) desc = initial(desc) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index a20a02c8f1..06e03856a3 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -43,7 +43,7 @@ var/list/nearby_things = range(0, get_turf(src)) for(var/mob/M in nearby_things) var/obj/O = assembly ? assembly : src - to_chat(M, "\icon[O][bicon(O)] [stuff_to_display]") + to_chat(M, "[icon2html(O,M.client)] [stuff_to_display]") /obj/item/integrated_circuit/output/screen/large name = "large screen" @@ -56,7 +56,7 @@ /obj/item/integrated_circuit/output/screen/large/do_work() ..() var/obj/O = assembly ? loc : assembly - O.visible_message("\icon[O][bicon(O)] [stuff_to_display]") + O.visible_message("[icon2html(O,viewers(O))] [stuff_to_display]") /obj/item/integrated_circuit/output/light name = "light" @@ -134,7 +134,7 @@ text = get_pin_data(IC_INPUT, 1) if(!isnull(text)) var/obj/O = assembly ? loc : assembly - audible_message("\icon[O][bicon(O)] \The [O.name] states, \"[text]\"", runemessage = text) + audible_message("[icon2html(O,hearers(src))] \The [O.name] states, \"[text]\"", runemessage = text) /obj/item/integrated_circuit/output/text_to_speech/advanced name = "advanced text-to-speech circuit" @@ -444,11 +444,12 @@ /obj/item/integrated_circuit/output/holographic_projector/Initialize() . = ..() - GLOB.moved_event.register(src, src, PROC_REF(on_moved)) + AddComponent(/datum/component/recursive_move) + RegisterSignal(src, COMSIG_OBSERVER_MOVED, PROC_REF(on_moved)) /obj/item/integrated_circuit/output/holographic_projector/Destroy() destroy_hologram() - GLOB.moved_event.unregister(src, src, PROC_REF(on_moved)) + UnregisterSignal(src, COMSIG_OBSERVER_MOVED) return ..() /obj/item/integrated_circuit/output/holographic_projector/do_work() diff --git a/code/modules/mining/abandonedcrates_vr.dm b/code/modules/mining/abandonedcrates_vr.dm index 166c5d05ed..fc69d2a31f 100644 --- a/code/modules/mining/abandonedcrates_vr.dm +++ b/code/modules/mining/abandonedcrates_vr.dm @@ -41,7 +41,7 @@ list(/obj/item/toy/syndicateballoon, 3) = 2, list(/obj/item/clothing/suit/ianshirt, 3) = 2, list(/obj/item/clothing/head/bearpelt, 4) = 2, - list(/obj/item/weapon/archaeological_find, 3) = 2, + //list(/obj/item/weapon/archaeological_find, 3) = 2, //ChompREMOVE - causes runtimes list(pick(subtypesof(/obj/item/toy/mecha)), 4) = 2, list(pick(subtypesof(/obj/item/toy/figure)), 4) = 2, list(pick(subtypesof(/obj/item/toy/plushie)), 4) = 2, @@ -171,4 +171,4 @@ /obj/item/weapon/storage/backpack/sport/hyd/catchemall/Initialize() //gotta have your starter 'mon too (or an improved way to catch one) ..() var/path = pick(subtypesof(/obj/item/capture_crystal)) - contents += new path() \ No newline at end of file + contents += new path() diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm index 34c0c2f99c..e8f88a0f88 100644 --- a/code/modules/mining/drilling/scanner.dm +++ b/code/modules/mining/drilling/scanner.dm @@ -51,7 +51,7 @@ if(ore_type) metals[ore_type] += T.resources[metal] - var/message = "\icon[src][bicon(src)] The scanner beeps and displays a readout." + var/message = "[icon2html(src, user.client)] The scanner beeps and displays a readout." for(var/ore_type in metals) var/result = "no sign" @@ -87,4 +87,4 @@ var/custom_range = tgui_input_list(usr, "Scanner Range","Pick a range to scan. ", list(0,1,2,3,4,5,6,7)) if(custom_range) range = custom_range - to_chat(usr, "Scanner will now look up to [range] tile(s) away.") \ No newline at end of file + to_chat(usr, "Scanner will now look up to [range] tile(s) away.") diff --git a/code/modules/mob/dead/observer/logout.dm b/code/modules/mob/dead/observer/logout.dm index bf7db4bf87..5e1be92091 100644 --- a/code/modules/mob/dead/observer/logout.dm +++ b/code/modules/mob/dead/observer/logout.dm @@ -4,4 +4,4 @@ if(src && !key) //we've transferred to another mob. This ghost should be deleted. qdel(src) else - cleanup_timer = QDEL_IN(src, 10 MINUTES) + cleanup_timer = QDEL_IN_STOPPABLE(src, 10 MINUTES) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 32ec266f4c..dc7c1cbbdd 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -460,6 +460,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(target != src) if(following && following == target) return + if(following) + src.stop_following() following = target to_chat(src, "Now following [target]") if(ismob(target)) diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index a0f485df78..0d32705542 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -213,17 +213,18 @@ say("Down on the floor, [suspect_name]! You have [SECBOT_WAIT_TIME*2] seconds to comply.") playsound(src, pick(preparing_arrest_sounds), 50) // Register to be told when the target moves - GLOB.moved_event.register(target, src, /mob/living/bot/secbot/proc/target_moved) + target.AddComponent(/datum/component/recursive_move) + RegisterSignal(target, COMSIG_OBSERVER_MOVED, /mob/living/bot/secbot/proc/target_moved) // Callback invoked if the registered target moves /mob/living/bot/secbot/proc/target_moved(atom/movable/moving_instance, atom/old_loc, atom/new_loc) if(get_dist(get_turf(src), get_turf(target)) >= 1) awaiting_surrender = INFINITY // Done waiting! - GLOB.moved_event.unregister(moving_instance, src) + UnregisterSignal(moving_instance, COMSIG_OBSERVER_MOVED) /mob/living/bot/secbot/resetTarget() ..() - GLOB.moved_event.unregister(target, src) + UnregisterSignal(target, COMSIG_OBSERVER_MOVED) awaiting_surrender = 0 attacked = FALSE walk_to(src, 0) @@ -477,4 +478,4 @@ return if(!in_range(src, user) && loc != user) return - created_name = t \ No newline at end of file + created_name = t diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 316f314860..4a1d9748fd 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -18,13 +18,11 @@ germ_level++ /mob/living/carbon/Destroy() - qdel(ingested) - qdel(touching) + QDEL_NULL(ingested) + QDEL_NULL(touching) // We don't qdel(bloodstr) because it's the same as qdel(reagents) - for(var/guts in internal_organs) - qdel(guts) - for(var/food in stomach_contents) - qdel(food) + bloodstr = null + QDEL_NULL_LIST(stomach_contents) return ..() /mob/living/carbon/rejuvenate() diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index c7f3fe1f26..76083f014d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -101,7 +101,7 @@ else if(species.name != "Human") name_ender = ", \a [species.get_examine_name()]![species.get_additional_examine_text(src)]" - var/list/msg = list("*---------*","This is \icon[src.examine_icon()][bicon(src)] [src.name][name_ender]") + var/list/msg = list("*---------*","This is [icon2html(src, user.client)] [src.name][name_ender]") //uniform if(w_uniform && !(skip_gear & EXAMINE_SKIPJUMPSUIT) && w_uniform.show_examine) @@ -125,16 +125,16 @@ tie_msg += " [lowertext(english_list(accessory_descs))]." if(w_uniform.blood_DNA) - msg += "[T.He] [T.is] wearing \icon[w_uniform][bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != "#030303") ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]" + msg += "[T.He] [T.is] wearing [icon2html(w_uniform,user.client)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != "#030303") ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]" else - msg += "[T.He] [T.is] wearing [bicon(w_uniform)] \a [w_uniform].[tie_msg]" + msg += "[T.He] [T.is] wearing [icon2html(w_uniform,user.client)] \a [w_uniform].[tie_msg]" //head if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine) if(head.blood_DNA) - msg += "[T.He] [T.is] wearing \icon[w_uniform][bicon(head)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != "#030303") ? "blood" : "oil"]-stained [head.name] on [T.his] head!" + msg += "[T.He] [T.is] wearing [icon2html(head,user.client)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != "#030303") ? "blood" : "oil"]-stained [head.name] on [T.his] head!" else - msg += "[T.He] [T.is] wearing [bicon(head)] \a [head] on [T.his] head." + msg += "[T.He] [T.is] wearing [icon2html(head,user.client)] \a [head] on [T.his] head." //suit/armour if(wear_suit) @@ -151,71 +151,71 @@ tie_msg += " [lowertext(english_list(accessory_descs))]." if(wear_suit.blood_DNA) - msg += "[T.He] [T.is] wearing \icon[wear_suit][bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_suit.name]![tie_msg]" + msg += "[T.He] [T.is] wearing [icon2html(wear_suit,user.client)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_suit.name]![tie_msg]" else - msg += "[T.He] [T.is] wearing \icon[wear_suit][bicon(wear_suit)] \a [wear_suit].[tie_msg]" + msg += "[T.He] [T.is] wearing [icon2html(wear_suit,user.client)] \a [wear_suit].[tie_msg]" //suit/armour storage if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine) if(s_store.blood_DNA) - msg += "[T.He] [T.is] carrying \icon[s_store][bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != "#030303") ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!" + msg += "[T.He] [T.is] carrying [icon2html(s_store,user.client)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != "#030303") ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!" else - msg += "[T.He] [T.is] carrying \icon[s_store][bicon(s_store)] \a [s_store] on [T.his] [wear_suit.name]." + msg += "[T.He] [T.is] carrying [icon2html(s_store,user.client)] \a [s_store] on [T.his] [wear_suit.name]." //back if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine) if(back.blood_DNA) - msg += "[T.He] [T.has] \icon[back][bicon(back)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != "#030303") ? "blood" : "oil"]-stained [back] on [T.his] back." + msg += "[T.He] [T.has] [icon2html(back,user.client)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != "#030303") ? "blood" : "oil"]-stained [back] on [T.his] back." else - msg += "[T.He] [T.has] \icon[back][bicon(back)] \a [back] on [T.his] back." + msg += "[T.He] [T.has] [icon2html(back,user.client)] \a [back] on [T.his] back." //left hand if(l_hand && l_hand.show_examine) if(l_hand.blood_DNA) - msg += "[T.He] [T.is] holding \icon[l_hand][bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!" + msg += "[T.He] [T.is] holding [icon2html(l_hand,user.client)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!" else - msg += "[T.He] [T.is] holding \icon[l_hand][bicon(l_hand)] \a [l_hand] in [T.his] left hand." + msg += "[T.He] [T.is] holding [icon2html(l_hand,user.client)] \a [l_hand] in [T.his] left hand." //right hand if(r_hand && r_hand.show_examine) if(r_hand.blood_DNA) - msg += "[T.He] [T.is] holding \icon[r_hand][bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!" + msg += "[T.He] [T.is] holding [icon2html(r_hand,user.client)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != "#030303") ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!" else - msg += "[T.He] [T.is] holding \icon[r_hand][bicon(r_hand)] \a [r_hand] in [T.his] right hand." + msg += "[T.He] [T.is] holding [icon2html(r_hand,user.client)] \a [r_hand] in [T.his] right hand." //gloves if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine) if(gloves.blood_DNA) - msg += "[T.He] [T.has] \icon[gloves][bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != "#030303") ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!" + msg += "[T.He] [T.has] [icon2html(gloves,user.client)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != "#030303") ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!" else - msg += "[T.He] [T.has] \icon[gloves][bicon(gloves)] \a [gloves] on [T.his] hands." + msg += "[T.He] [T.has] [icon2html(gloves,user.client)] \a [gloves] on [T.his] hands." else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) msg += "[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!" //handcuffed? if(handcuffed && handcuffed.show_examine) if(istype(handcuffed, /obj/item/weapon/handcuffs/cable)) - msg += "[T.He] [T.is] \icon[handcuffed][bicon(handcuffed)] restrained with cable!" + msg += "[T.He] [T.is] [icon2html(handcuffed,user.client)] restrained with cable!" else - msg += "[T.He] [T.is] \icon[handcuffed][bicon(handcuffed)] handcuffed!" + msg += "[T.He] [T.is] [icon2html(handcuffed,user.client)] handcuffed!" //buckled if(buckled) - msg += "[T.He] [T.is] \icon[buckled][bicon(buckled)] buckled to [buckled]!" + msg += "[T.He] [T.is] [icon2html(buckled,user.client)] buckled to [buckled]!" //belt if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine) if(belt.blood_DNA) - msg += "[T.He] [T.has] \icon[belt][bicon(belt)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != "#030303") ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!" + msg += "[T.He] [T.has] [icon2html(belt,user.client)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != "#030303") ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!" else - msg += "[T.He] [T.has] \icon[belt][bicon(belt)] \a [belt] about [T.his] waist." + msg += "[T.He] [T.has] [icon2html(belt,user.client)] \a [belt] about [T.his] waist." //shoes if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine) if(shoes.blood_DNA) - msg += "[T.He] [T.is] wearing \icon[shoes][bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != "#030303") ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!" + msg += "[T.He] [T.is] wearing [icon2html(shoes,user.client)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != "#030303") ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!" else - msg += "[T.He] [T.is] wearing \icon[shoes][bicon(shoes)] \a [shoes] on [T.his] feet." + msg += "[T.He] [T.is] wearing [icon2html(shoes,user.client)] \a [shoes] on [T.his] feet." else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) msg += "[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!" @@ -226,28 +226,28 @@ descriptor = "in [T.his] mouth" if(wear_mask.blood_DNA) - msg += "[T.He] [T.has] \icon[wear_mask][bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!" + msg += "[T.He] [T.has] [icon2html(wear_mask,user.client)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != "#030303") ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!" else - msg += "[T.He] [T.has] \icon[wear_mask][bicon(wear_mask)] \a [wear_mask] [descriptor]." + msg += "[T.He] [T.has] [icon2html(wear_mask,user.client)] \a [wear_mask] [descriptor]." //eyes if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine) if(glasses.blood_DNA) - msg += "[T.He] [T.has] \icon[glasses][bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != "#030303") ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!" + msg += "[T.He] [T.has] [icon2html(glasses,user.client)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != "#030303") ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!" else - msg += "[T.He] [T.has] \icon[glasses][bicon(glasses)] \a [glasses] covering [T.his] eyes." + msg += "[T.He] [T.has] [icon2html(glasses,user.client)] \a [glasses] covering [T.his] eyes." //left ear if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine) - msg += "[T.He] [T.has] \icon[l_ear][bicon(l_ear)] \a [l_ear] on [T.his] left ear." + msg += "[T.He] [T.has] [icon2html(l_ear,user.client)] \a [l_ear] on [T.his] left ear." //right ear if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine) - msg += "[T.He] [T.has] \icon[r_ear][bicon(r_ear)] \a [r_ear] on [T.his] right ear." + msg += "[T.He] [T.has] [icon2html(r_ear,user.client)] \a [r_ear] on [T.his] right ear." //ID if(wear_id && wear_id.show_examine) - msg += "[T.He] [T.is] wearing \icon[wear_id][bicon(wear_id)]\a [wear_id]." + msg += "[T.He] [T.is] wearing [icon2html(wear_id,user.client)]\a [wear_id]." //Jitters if(is_jittery) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 308d2479ef..fce4a9f988 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -57,10 +57,17 @@ /mob/living/carbon/human/Destroy() human_mob_list -= src + /* //Chomp REMOVE - this is done on mob/living/Destroy for(var/organ in organs) qdel(organ) - QDEL_NULL(nif) //VOREStation Add + */ + if(nif) + QDEL_NULL(nif) //VOREStation Add worn_clothing.Cut() + + + if(vessel) + QDEL_NULL(vessel) return ..() /mob/living/carbon/human/Stat() diff --git a/code/modules/mob/living/carbon/human/human_modular_limbs.dm b/code/modules/mob/living/carbon/human/human_modular_limbs.dm index 481c9e5734..b9c783a8b1 100644 --- a/code/modules/mob/living/carbon/human/human_modular_limbs.dm +++ b/code/modules/mob/living/carbon/human/human_modular_limbs.dm @@ -73,13 +73,13 @@ // Called in robotize(), replaced() and removed() to update our modular limb verbs. /mob/living/carbon/human/proc/refresh_modular_limb_verbs() if(length(get_modular_limbs(return_first_found = TRUE, validate_proc = /obj/item/organ/external/proc/can_attach_modular_limb_here))) - verbs |= PROC_REF(attach_limb_verb) + verbs |= /mob/living/carbon/human/proc/attach_limb_verb else - verbs -= PROC_REF(attach_limb_verb) + verbs -= /mob/living/carbon/human/proc/attach_limb_verb if(length(get_modular_limbs(return_first_found = TRUE, validate_proc = /obj/item/organ/external/proc/can_remove_modular_limb))) - verbs |= PROC_REF(detach_limb_verb) + verbs |= /mob/living/carbon/human/proc/detach_limb_verb else - verbs -= PROC_REF(detach_limb_verb) + verbs -= /mob/living/carbon/human/proc/detach_limb_verb // Proc helper for attachment verb. /mob/living/carbon/human/proc/check_can_attach_modular_limb(var/obj/item/organ/external/E) diff --git a/code/modules/mob/living/carbon/human/human_vr.dm b/code/modules/mob/living/carbon/human/human_vr.dm index 1fd36d32ff..cfbfc387ba 100644 --- a/code/modules/mob/living/carbon/human/human_vr.dm +++ b/code/modules/mob/living/carbon/human/human_vr.dm @@ -7,7 +7,6 @@ img.override = TRUE add_alt_appearance("animals", img, displayTo = alt_farmanimals) - /mob/living/carbon/human/Destroy() alt_farmanimals -= src @@ -18,4 +17,3 @@ /mob/living/carbon/human/get_digestion_efficiency_modifier() return species.digestion_efficiency - diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index 9ca4008d83..99cd1fd877 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -99,20 +99,15 @@ return new_copy +//We REALLY don't need to go through every variable. Doing so makes this lag like hell on 515 /datum/species/proc/copy_variables(var/datum/species/S, var/list/whitelist) //List of variables to ignore, trying to copy type will runtime. - var/list/blacklist = list("type", "loc", "client", "ckey") + //var/list/blacklist = list("type", "loc", "client", "ckey") //Makes thorough copy of species datum. - for(var/i in vars) + for(var/i in whitelist) if(!(i in S.vars)) //Don't copy incompatible vars. continue if(S.vars[i] != vars[i] && !islist(vars[i])) //If vars are same, no point in copying. - if(i in blacklist) - continue - if(whitelist)//If whitelist is provided, only vars in the list will be copied. - if(i in whitelist) - S.vars[i] = vars[i] - continue S.vars[i] = vars[i] /datum/species/get_bodytype() diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm index 7006dd9968..73a9a10fc5 100644 --- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm @@ -78,8 +78,7 @@ if(stored_blob) stored_blob.drop_l_hand() stored_blob.drop_r_hand() - stored_blob = null - qdel(stored_blob) + QDEL_NULL(stored_blob) return ..() /mob/living/simple_mob/slime/promethean/Stat() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 7abf8601aa..18a2a90d0f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -50,14 +50,17 @@ B.owner = tf_mob_holder tf_mob_holder.vore_organs |= B vore_organs -= B - if(tf_mob_holder) tf_mob_holder = null //VOREStation Addition End - - qdel(selected_image) - QDEL_NULL(vorePanel) //VOREStation Add - QDEL_LIST_NULL(vore_organs) //VOREStation Add + if(hud_list) //prune out images in hud_list + for(var/item in hud_list) + if(item) + item = null + if(selected_image) + selected_image = null + //QDEL_NULL(vorePanel) //VOREStation Add commented and moved to /mob + //QDEL_LIST_NULL(vore_organs) //VOREStation Add commented and moved to /mob temp_language_sources = null //VOREStation Add temp_languages = null //VOREStation Add @@ -1294,7 +1297,7 @@ /datum/component/character_setup/proc/character_setup_click(source, location, control, params, user) var/mob/owner = user if(owner.client?.prefs) - INVOKE_ASYNC(owner.client.prefs, /datum/preferences/proc/ShowChoices, owner) + INVOKE_ASYNC(owner.client.prefs, TYPE_PROC_REF(/datum/preferences, ShowChoices), owner) /** * Screen object for vore panel diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 5fceeceb33..3f527a06f3 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -491,7 +491,7 @@ spawn(0) R.send_signal("ACTIVATE") for(var/mob/O in hearers(1, R.loc)) - O.show_message("\icon[R][bicon(R)] *beep* *beep*", 3, "*beep* *beep*", 2) + O.show_message("[icon2html(R,O.client)] *beep* *beep*", 3, "*beep* *beep*", 2) if("freq") var/frequency = unformat_frequency(params["freq"]) frequency = sanitize_frequency(frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 276ab699a3..347c4e5b8a 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -227,21 +227,20 @@ else src.healths.icon_state = "health6" else - switch(health) - if(200 to INFINITY) - src.healths.icon_state = "health0" - if(150 to 200) - src.healths.icon_state = "health1" - if(100 to 150) - src.healths.icon_state = "health2" - if(50 to 100) - src.healths.icon_state = "health3" - if(0 to 50) - src.healths.icon_state = "health4" - if(config.health_threshold_dead to 0) - src.healths.icon_state = "health5" - else - src.healths.icon_state = "health6" + if(health >= 200) + src.healths.icon_state = "health0" + else if(health >= 150) + src.healths.icon_state = "health1" + else if(health >= 100) + src.healths.icon_state = "health2" + else if(health >= 50) + src.healths.icon_state = "health3" + else if(health >= 0) + src.healths.icon_state = "health4" + else if(health >= config.health_threshold_dead) + src.healths.icon_state = "health5" + else + src.healths.icon_state = "health6" else src.healths.icon_state = "health7" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index d203d12949..ec2f45c9f0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -224,9 +224,7 @@ return visible_message("\The [src] pushes [M]'s hand away from their tummy and furrows their brow!") if(prob(5)) - ai_holder.target = M - ai_holder.track_target_position() - ai_holder.set_stance(STANCE_FIGHT) + ai_holder.give_target(M, urgent = TRUE) else return ..() @@ -453,9 +451,7 @@ return visible_message("\The [src] pushes [M]'s hand away from their tummy and furrows their brow, frantically pressing at the buttons [M] so carelessly pushed!") if(prob(5)) - ai_holder.target = M - ai_holder.track_target_position() - ai_holder.set_stance(STANCE_FIGHT) + ai_holder.give_target(M, urgent = TRUE) else return ..() @@ -555,9 +551,7 @@ return visible_message("\The [src] pushes [M]'s hand away from their tummy and furrows their brow!") if(prob(5)) - ai_holder.target = M - ai_holder.track_target_position() - ai_holder.set_stance(STANCE_FIGHT) + ai_holder.give_target(M, urgent = TRUE) else return ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm index dd6b6db3cf..cb63b48cff 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm @@ -79,7 +79,7 @@ if( ishuman(AM) ) if(!stat) var/mob/M = AM - M.visible_message(span_blue("\icon[src][bicon(src)] Squeek!")) + M.visible_message(span_blue("[icon2html(src,viewers(src))] Squeek!")) playsound(src, 'sound/effects/mouse_squeak.ogg', 35, 1) ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm index db748e732a..ac5d53e86a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm @@ -143,7 +143,7 @@ var/global/list/grub_machine_overlays = list() sparks.start() if(machine_effect) QDEL_NULL(machine_effect) - ai_holder.target = null + ai_holder.remove_target() powermachine.draining = 1 spawn(30) set_AI_busy(FALSE) diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 901807583a..77558211f0 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -83,7 +83,7 @@ var/new_name = sanitizeSafe(tgui_input_text(src, "Who would you like to be now?", "Communicator", src.client.prefs.real_name, MAX_NAME_LEN), MAX_NAME_LEN) if(new_name) if(comm) - comm.visible_message("\icon[comm][bicon(comm)] [src.name] has left, and now you see [new_name].") + comm.visible_message("[icon2html(comm,viewers(comm))] [src.name] has left, and now you see [new_name].") //Do a bit of logging in-case anyone tries to impersonate other characters for whatever reason. var/msg = "[src.client.key] ([src]) has changed their communicator identity's name to [new_name]." message_admins(msg) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 53a8372f3a..9efeca0e58 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -2,20 +2,42 @@ mob_list -= src dead_mob_list -= src living_mob_list -= src + player_list -= src unset_machine() - qdel(hud_used) + QDEL_NULL(hud_used) clear_fullscreen() if(client) for(var/obj/screen/movable/spell_master/spell_master in spell_masters) qdel(spell_master) remove_screen_obj_references() - client.screen = list() + client.screen.Cut() if(mind && mind.current == src) spellremove(src) ghostize() - QDEL_NULL(plane_holder) - ..() - return QDEL_HINT_HARDDEL_NOW + if(focus) + focus = null + if(plane_holder) + QDEL_NULL(plane_holder) + + if(pulling) + stop_pulling() //TG does this on atom/movable but our stop_pulling proc is here so whatever + + vore_selected = null + if(vore_organs) + QDEL_NULL_LIST(vore_organs) + if(vorePanel) + QDEL_NULL(vorePanel) + + + if(mind) + if(mind.current == src) + mind.current = null + if(mind.original == src) + mind.original = null + + . = ..() + update_client_z(null) + //return QDEL_HINT_HARDDEL_NOW /mob/proc/remove_screen_obj_references() hands = null @@ -43,7 +65,8 @@ set_focus(src) // VOREStation Add - Key Handling hook_vr("mob_new",list(src)) //VOREStation Code update_transform() // Some mobs may start bigger or smaller than normal. - return ..() + . = ..() + //return QDEL_HINT_HARDDEL_NOW Just keep track of mob references. They delete SO much faster now. /mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) var/time = say_timestamp() @@ -1204,6 +1227,15 @@ var/exploitmsg = html_decode("\n" + "Has " + I.name + ".") exploit_record += exploitmsg + +/obj/Destroy() + if(istype(src.loc, /mob)) + var/mob/holder = src.loc + if(src in holder.exploit_addons) + holder.exploit_addons -= src + . = ..() + + /client/proc/check_has_body_select() return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel) diff --git a/code/modules/mob/mob_planes_vr.dm b/code/modules/mob/mob_planes_vr.dm index 1c47b13e72..b23067733f 100644 --- a/code/modules/mob/mob_planes_vr.dm +++ b/code/modules/mob/mob_planes_vr.dm @@ -5,7 +5,7 @@ plane_masters[VIS_CH_BACKUP] = new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status plane_masters[VIS_CH_VANTAG] = new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags - plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(my_mob) //Augmented reality + plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(M = my_mob) //Augmented reality ..() ///////////////// @@ -15,7 +15,7 @@ var/state = FALSE //Saves cost with the lists var/mob/my_mob -/obj/screen/plane_master/augmented/New(var/mob/M) +/obj/screen/plane_master/augmented/New(null, var/mob/M) ..() my_mob = M diff --git a/code/modules/mob/new_player/logout.dm b/code/modules/mob/new_player/logout.dm index 37e7d535ec..bbffe5e9ba 100644 --- a/code/modules/mob/new_player/logout.dm +++ b/code/modules/mob/new_player/logout.dm @@ -8,8 +8,8 @@ ..() - if(created_for) - del_mannequin(created_for) + //if(created_for) + //del_mannequin(created_for) No need to delete this, honestly. It saves up hardly any memory in the long run and fucks the GC in the short run. if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to. key = null//We null their key before deleting the mob, so they are properly kicked out. diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index a8ea47ae0a..851d43f5b1 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -25,6 +25,12 @@ verbs |= /mob/proc/insidePanel initialized = TRUE // Explicitly don't use Initialize(). New players join super early and use New() + +/mob/new_player/Destroy() + if(panel) + QDEL_NULL(panel) + . = ..() + /mob/new_player/verb/new_player_panel() set src = usr new_player_panel_proc() @@ -159,11 +165,11 @@ if(!client) return 1 //Make a new mannequin quickly, and allow the observer to take the appearance - var/mob/living/carbon/human/dummy/mannequin = new() + var/mob/living/carbon/human/dummy/mannequin = get_mannequin(client.ckey) client.prefs.dress_preview_mob(mannequin) var/mob/observer/dead/observer = new(mannequin) observer.moveToNullspace() //Let's not stay in our doomed mannequin - qdel(mannequin) + //qdel(mannequin) spawning = 1 if(client.media) diff --git a/code/modules/multiz/movement_vr.dm b/code/modules/multiz/movement_vr.dm index c77ab2c041..fa000ef4b7 100644 --- a/code/modules/multiz/movement_vr.dm +++ b/code/modules/multiz/movement_vr.dm @@ -177,15 +177,14 @@ climb_time += 10 SECONDS if(climbing_delay_min > 1.0) climb_time += 2.5 SECONDS - switch(L.nutrition) //Values are 50 lower than the warning icon appearing - if(100 to 200) - to_chat(L, SPAN_NOTICE("Climbing while [L.isSynthetic() ? "low on power" : "hungry"] slows you down")) - climb_time += 1 SECONDS - if(nutrition_cost to 100) - to_chat(L, SPAN_DANGER("You [L.isSynthetic() ? "lack enough power" : "are too hungry"] to climb safely!")) - climb_time +=3 SECONDS - if(fall_chance < 30) - fall_chance = 30 + if(L.nutrition >= 100 && L.nutrition <= 200) + to_chat(L, SPAN_NOTICE("Climbing while [L.isSynthetic() ? "low on power" : "hungry"] slows you down")) + climb_time += 1 SECONDS + else if(L.nutrition >= nutrition_cost && L.nutrition <= 100) + to_chat(L, SPAN_DANGER("You [L.isSynthetic() ? "lack enough power" : "are too hungry"] to climb safely!")) + climb_time +=3 SECONDS + if(fall_chance < 30) + fall_chance = 30 L.visible_message(message = "[L] begins to climb up on \The [src]", self_message = "You begin to clumb up on \The [src]", \ blind_message = "You hear the sounds of climbing!", runemessage = "Tap Tap") var/oops_time = world.time @@ -294,15 +293,14 @@ climb_time += 10 SECONDS if(climbing_delay_min > 1.0) climb_time += 2.5 SECONDS - switch(nutrition) //Values are 50 lower than the warning icon appearing - if(100 to 200) - to_chat(src, SPAN_NOTICE("Climbing while [isSynthetic() ? "low on power" : "hungry"] slows you down")) - climb_time += 1 SECONDS - if(nutrition_cost to 100) - to_chat(src, SPAN_DANGER("You [isSynthetic() ? "lack enough power" : "are too hungry"] to climb safely!")) - climb_time +=3 SECONDS - if(fall_chance < 30) - fall_chance = 30 + if(nutrition >= 100 && nutrition <= 200) //Values are 50 lower than the warning icon appearing + to_chat(src, SPAN_NOTICE("Climbing while [isSynthetic() ? "low on power" : "hungry"] slows you down")) + climb_time += 1 SECONDS + else if(nutrition >= nutrition_cost && nutrition <= 100) + to_chat(src, SPAN_DANGER("You [isSynthetic() ? "lack enough power" : "are too hungry"] to climb safely!")) + climb_time +=3 SECONDS + if(fall_chance < 30) + fall_chance = 30 if(!climbing_surface.climbable) to_chat(src, SPAN_DANGER("\The [climbing_surface] is not suitable for climbing! Even for a master climber, this is risky!")) diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index 7890e52206..bc84f214c7 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -383,7 +383,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable last_notification = message // TGUI Hook - to_chat(human,"\[\icon[src.big_icon][bicon(src.big_icon)]NIF\] displays, \"[message]\"") + to_chat(human,"\[[icon2html(src.big_icon, human.client)]NIF\] displays, \"[message]\"") if(prob(1)) human.visible_message("\The [human] [pick(look_messages)].") if(alert) human << bad_sound diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index 20172ac924..5c0bad4294 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -74,13 +74,13 @@ to_chat(nif.human, type = MESSAGE_TYPE_NIF, - html = "\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] Soulcatcher displays, \"[message]\"") + html = "\[[icon2html(nif.big_icon, nif.human)]NIF\] Soulcatcher displays, \"[message]\"") nif.human << sound for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS, type = MESSAGE_TYPE_NIF, - html = "\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] Soulcatcher displays, \"[message]\"") + html = "\[[icon2html(nif.big_icon, CS.client)]NIF\] Soulcatcher displays, \"[message]\"") CS << sound /datum/nifsoft/soulcatcher/proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj) @@ -94,11 +94,11 @@ else to_chat(nif.human, type = MESSAGE_TYPE_NIF, - html = "\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") + html = "\[[icon2html(nif.big_icon, nif.human.client)]NIF\] [sender_name] speaks, \"[message]\"") for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS, type = MESSAGE_TYPE_NIF, - html = "\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") + html = "\[[icon2html(nif.big_icon, CS.client)]NIF\] [sender_name] speaks, \"[message]\"") log_nsay(message,nif.human.real_name,sender) @@ -113,11 +113,11 @@ else to_chat(nif.human, type = MESSAGE_TYPE_NIF, - html = "\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] [message]") + html = "\[[icon2html(nif.big_icon,nif.human.client)]NIF\] [sender_name] [message]") for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS, type = MESSAGE_TYPE_NIF, - html = "\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\] [sender_name] [message]") + html = "\[[icon2html(nif.big_icon,CS.client)]NIF\] [sender_name] [message]") log_nme(message,nif.human.real_name,sender) @@ -420,7 +420,8 @@ real_name = brainmob.real_name //And the OTHER name forceMove(get_turf(parent_human)) - GLOB.moved_event.register(parent_human, src, /mob/observer/eye/ar_soul/proc/human_moved) + parent_human.AddComponent(/datum/component/recursive_move) + RegisterSignal(parent_human, COMSIG_OBSERVER_MOVED, /mob/observer/eye/ar_soul/proc/human_moved) //Time to play dressup if(brainmob.client.prefs) @@ -435,7 +436,7 @@ /mob/observer/eye/ar_soul/Destroy() if(parent_human) //It's POSSIBLE they've been deleted before the NIF somehow - GLOB.moved_event.unregister(parent_human, src) + UnregisterSignal(parent_human, COMSIG_OBSERVER_MOVED) parent_human = null return ..() diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm index 47b602e184..79cac60fa9 100644 --- a/code/modules/nifsoft/software/14_commlink.dm +++ b/code/modules/nifsoft/software/14_commlink.dm @@ -81,7 +81,7 @@ var/message = combined["formatted"] var/name_used = M.GetVoice() var/rendered = null - rendered = "\icon[icon_object][bicon(icon_object)] [name_used] [message]" + rendered = "[icon2html(icon_object,mob.client)] [name_used] [message]" mob.show_message(rendered, 2) //Not supported by the internal one diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 76283cdf51..7ca9cde39e 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -87,16 +87,21 @@ if(parent && parent.children) parent.children -= src + parent = null if(children) for(var/obj/item/organ/external/C in children) + children -= C + C.parent = null qdel(C) if(internal_organs) for(var/obj/item/organ/O in internal_organs) + internal_organs -= O qdel(O) if(splinted && splinted.loc == src) + splinted.loc = null qdel(splinted) splinted = null diff --git a/code/modules/overmap/disperser/disperser_console.dm b/code/modules/overmap/disperser/disperser_console.dm index a173163c17..2135d8830b 100644 --- a/code/modules/overmap/disperser/disperser_console.dm +++ b/code/modules/overmap/disperser/disperser_console.dm @@ -55,9 +55,9 @@ middle = M back = B if(is_valid_setup()) - GLOB.destroyed_event.register(F, src, PROC_REF(release_links)) - GLOB.destroyed_event.register(M, src, PROC_REF(release_links)) - GLOB.destroyed_event.register(B, src, PROC_REF(release_links)) + RegisterSignal(F, COMSIG_OBSERVER_DESTROYED, PROC_REF(release_links)) + RegisterSignal(M, COMSIG_OBSERVER_DESTROYED, PROC_REF(release_links)) + RegisterSignal(B, COMSIG_OBSERVER_DESTROYED, PROC_REF(release_links)) return TRUE return FALSE @@ -69,9 +69,9 @@ return FALSE /obj/machinery/computer/ship/disperser/proc/release_links() - GLOB.destroyed_event.unregister(front, src, PROC_REF(release_links)) - GLOB.destroyed_event.unregister(middle, src, PROC_REF(release_links)) - GLOB.destroyed_event.unregister(back, src, PROC_REF(release_links)) + UnregisterSignal(front, COMSIG_OBSERVER_DESTROYED) + UnregisterSignal(middle, COMSIG_OBSERVER_DESTROYED) + UnregisterSignal(back, COMSIG_OBSERVER_DESTROYED) front = null middle = null back = null diff --git a/code/modules/overmap/ships/computers/ship.dm b/code/modules/overmap/ships/computers/ship.dm index 8f52fdbe0b..31f6d39168 100644 --- a/code/modules/overmap/ships/computers/ship.dm +++ b/code/modules/overmap/ships/computers/ship.dm @@ -77,7 +77,8 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov L.looking_elsewhere = 1 L.handle_vision() user.set_viewsize(world.view + extra_view) - GLOB.moved_event.register(user, src, /obj/machinery/computer/ship/proc/unlook) + user.AddComponent(/datum/component/recursive_move) + RegisterSignal(user, COMSIG_OBSERVER_MOVED, /obj/machinery/computer/ship/proc/unlook, override = TRUE) //This needs override or else it will spam runtimes because it is called repeatedly. // TODO GLOB.stat_set_event.register(user, src, /obj/machinery/computer/ship/proc/unlook) LAZYDISTINCTADD(viewers, WEAKREF(user)) @@ -90,7 +91,7 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov L.looking_elsewhere = 0 L.handle_vision() user.set_viewsize() // reset to default - GLOB.moved_event.unregister(user, src, /obj/machinery/computer/ship/proc/unlook) + UnregisterSignal(user, COMSIG_OBSERVER_MOVED) // TODO GLOB.stat_set_event.unregister(user, src, /obj/machinery/computer/ship/proc/unlook) LAZYREMOVE(viewers, WEAKREF(user)) diff --git a/code/modules/overmap/ships/landable.dm b/code/modules/overmap/ships/landable.dm index 45c8386da5..6c2e3e6e0b 100644 --- a/code/modules/overmap/ships/landable.dm +++ b/code/modules/overmap/ships/landable.dm @@ -10,8 +10,8 @@ icon_state = "shuttle_nosprite" /obj/effect/overmap/visitable/ship/landable/Destroy() - GLOB.shuttle_pre_move_event.unregister(SSshuttles.shuttles[shuttle], src) - GLOB.shuttle_moved_event.unregister(SSshuttles.shuttles[shuttle], src) + UnregisterSignal(SSshuttles.shuttles[shuttle], COMSIG_OBSERVER_SHUTTLE_PRE_MOVE) + UnregisterSignal(SSshuttles.shuttles[shuttle], COMSIG_OBSERVER_SHUTTLE_MOVED) return ..() /obj/effect/overmap/visitable/ship/landable/can_burn() @@ -71,8 +71,8 @@ if(istype(shuttle_datum,/datum/shuttle/autodock/overmap)) var/datum/shuttle/autodock/overmap/oms = shuttle_datum oms.myship = src - GLOB.shuttle_pre_move_event.register(shuttle_datum, src, PROC_REF(pre_shuttle_jump)) - GLOB.shuttle_moved_event.register(shuttle_datum, src, PROC_REF(on_shuttle_jump)) + RegisterSignal(shuttle_datum, COMSIG_OBSERVER_SHUTTLE_PRE_MOVE, PROC_REF(pre_shuttle_jump)) + RegisterSignal(shuttle_datum, COMSIG_OBSERVER_SHUTTLE_MOVED, PROC_REF(on_shuttle_jump)) on_landing(landmark, shuttle_datum.current_location) // We "land" at round start to properly place ourselves on the overmap. @@ -123,11 +123,11 @@ core_landmark = master name = _name landmark_tag = master.shuttle_name + _name - GLOB.destroyed_event.register(master, src, /datum/proc/qdel_self) + RegisterSignal(master, COMSIG_OBSERVER_DESTROYED, /datum/proc/qdel_self) . = ..() /obj/effect/shuttle_landmark/visiting_shuttle/Destroy() - GLOB.destroyed_event.unregister(core_landmark, src) + UnregisterSignal(core_landmark, COMSIG_OBSERVER_DESTROYED) LAZYREMOVE(core_landmark.visitors, src) core_landmark = null . = ..() @@ -144,11 +144,11 @@ /obj/effect/shuttle_landmark/visiting_shuttle/shuttle_arrived(datum/shuttle/shuttle) LAZYSET(core_landmark.visitors, src, shuttle) - GLOB.shuttle_moved_event.register(shuttle, src, PROC_REF(shuttle_left)) + RegisterSignal(shuttle, COMSIG_OBSERVER_SHUTTLE_MOVED, PROC_REF(shuttle_left)) /obj/effect/shuttle_landmark/visiting_shuttle/proc/shuttle_left(datum/shuttle/shuttle, obj/effect/shuttle_landmark/old_landmark, obj/effect/shuttle_landmark/new_landmark) if(old_landmark == src) - GLOB.shuttle_moved_event.unregister(shuttle, src) + UnregisterSignal(shuttle, COMSIG_OBSERVER_SHUTTLE_MOVED) LAZYREMOVE(core_landmark.visitors, src) // @@ -160,7 +160,7 @@ return if(into == landmark) setup_overmap_location() // They're coming boys, better actually exist! - GLOB.shuttle_pre_move_event.unregister(SSshuttles.shuttles[shuttle], src) + UnregisterSignal(SSshuttles.shuttles[shuttle], COMSIG_OBSERVER_SHUTTLE_PRE_MOVE) /obj/effect/overmap/visitable/ship/landable/proc/on_shuttle_jump(datum/shuttle/given_shuttle, obj/effect/shuttle_landmark/from, obj/effect/shuttle_landmark/into) if(given_shuttle != SSshuttles.shuttles[shuttle]) diff --git a/code/modules/paperwork/paper_sticky.dm b/code/modules/paperwork/paper_sticky.dm index ba2a9195b3..32f92cea6f 100644 --- a/code/modules/paperwork/paper_sticky.dm +++ b/code/modules/paperwork/paper_sticky.dm @@ -97,7 +97,8 @@ /obj/item/weapon/paper/sticky/Initialize() . = ..() - GLOB.moved_event.register(src, src, /obj/item/weapon/paper/sticky/proc/reset_persistence_tracking) + AddComponent(/datum/component/recursive_move) + RegisterSignal(src, COMSIG_OBSERVER_MOVED, /obj/item/weapon/paper/sticky/proc/reset_persistence_tracking) /obj/item/weapon/paper/sticky/proc/reset_persistence_tracking() SSpersistence.forget_value(src, /datum/persistent/paper/sticky) @@ -106,7 +107,7 @@ /obj/item/weapon/paper/sticky/Destroy() reset_persistence_tracking() - GLOB.moved_event.unregister(src, src) + UnregisterSignal(src, COMSIG_OBSERVER_MOVED) . = ..() /obj/item/weapon/paper/sticky/update_icon() @@ -149,4 +150,4 @@ if(dir_offset & NORTH) pixel_y += 32 else if(dir_offset & SOUTH) - pixel_y -= 32 \ No newline at end of file + pixel_y -= 32 diff --git a/code/modules/pda/app.dm b/code/modules/pda/app.dm index c86f9e507d..4e508838e9 100644 --- a/code/modules/pda/app.dm +++ b/code/modules/pda/app.dm @@ -34,7 +34,7 @@ L = get(pda, /mob/living/silicon) if(L) - to_chat(L, "\icon[pda][bicon(pda)] [message]") + to_chat(L, "[icon2html(pda,L.client)] [message]") SStgui.update_user_uis(L, pda) // Update the receiving user's PDA UI so that they can see the new message if(!notify_silent) diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index 829fc9a431..29810e398c 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -181,7 +181,7 @@ SStgui.update_user_uis(U, P) // Update the sending user's PDA UI so that they can see the new message log_pda("(PDA: [src.name]) sent \"[t]\" to [P.name]", usr) - to_chat(U, "\icon[pda][bicon(pda)] Sent message to [P.owner] ([P.ownjob]), \"[t]\"") + to_chat(U, "[icon2html(pda,U.client)] Sent message to [P.owner] ([P.ownjob]), \"[t]\"") else to_chat(U, "ERROR: Messaging server is not responding.") diff --git a/code/modules/pda/pda.dm b/code/modules/pda/pda.dm index cd9d011e40..daad415ef7 100644 --- a/code/modules/pda/pda.dm +++ b/code/modules/pda/pda.dm @@ -112,7 +112,7 @@ var/global/list/obj/item/device/pda/PDAs = list() S = 'sound/machines/twobeep.ogg' playsound(loc, S, 50, 1) for(var/mob/O in hearers(3, loc)) - O.show_message(text("\icon[src][bicon(src)] *[ttone]*")) + O.show_message(text("[icon2html(src, O.client)] *[ttone]*")) /obj/item/device/pda/proc/set_ringtone() var/t = tgui_input_text(usr, "Please enter new ringtone", name, ttone) @@ -145,7 +145,7 @@ var/global/list/obj/item/device/pda/PDAs = list() model_name = "Thinktronic 5230 Personal Data Assistant" if(2) icon = 'icons/obj/pda_slim.dmi' - model_name = "Ward-Takahashi SlimFit™ Personal Data Assistant" + model_name = "Ward-Takahashi SlimFit� Personal Data Assistant" if(3) icon = 'icons/obj/pda_old.dmi' model_name = "Thinktronic 5120 Personal Data Assistant" @@ -172,7 +172,7 @@ var/global/list/obj/item/device/pda/PDAs = list() ) if(7) icon = 'icons/obj/pda_slider.dmi' //VOREStation edit - model_name = "Slider® Personal Data Assistant" + model_name = "Slider� Personal Data Assistant" if(8) icon = 'icons/obj/pda_vintage.dmi' model_name = "\[ERR:INVALID_MANUFACTURER_ID\] Personal Data Assistant" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 87b480576a..6c2aafb0c8 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -523,7 +523,7 @@ return 2 //just assume we can shoot through glass and stuff. No big deal, the player can just choose to not target someone //on the other side of a window if it makes a difference. Or if they run behind a window, too bad. - if(check_trajectory(target, user)) + if(target in check_trajectory(target, user)) return 1 // Magic numbers are fun. //called if there was no projectile to shoot diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index a73c633795..fe438ead6d 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -41,6 +41,7 @@ var/ricochets_max = 2 var/ricochet_chance = 30 var/can_miss = TRUE + var/bump_targets = TRUE //Should we bump and/or attack objects we hit? Used only for 'raytraces' e.g. subtype /test //Hitscan var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored. @@ -145,6 +146,14 @@ var/hud_state = "unknown" // What HUD state we use when we have ammunition. var/hud_state_empty = "unknown" // The empty state. DON'T USE _FLASH IN THE NAME OF THE EMPTY STATE STRING, THAT IS ADDED BY THE CODE. + var/obj/item/ammo_casing/my_case = null + + +/obj/item/projectile/New() + if(istype(loc, /obj/item/ammo_casing)) + my_case = loc + . = ..() + /obj/item/projectile/proc/Range() range-- if(range <= 0 && loc) @@ -231,7 +240,7 @@ after_move() if(can_hit_target(original, permutated)) Bump(original) - if(!hitscanning && !forcemoved) + if(!hitscanning && !forcemoved && trajectory) pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) @@ -320,7 +329,8 @@ /obj/item/projectile/proc/fire(angle, atom/direct_target) //If no angle needs to resolve it from xo/yo! if(direct_target) - direct_target.bullet_act(src, def_zone) + if(bump_targets) + direct_target.bullet_act(src, def_zone) qdel(src) return if(isnum(angle)) @@ -459,7 +469,16 @@ impacted_mobs.Cut() impacted_mobs = null - qdel(trajectory) + trajectory = null + beam_index = null + beam_components = null + + + if(my_case) + if(my_case.BB == src) + my_case.BB = null + my_case = null + return ..() /obj/item/projectile/proc/cleanup_beam_segments() @@ -565,25 +584,31 @@ var/shield_chance = min(80, (30 * (M.mob_size / 10))) //Small mobs have a harder time keeping a dead body as a shield than a human-sized one. Unathi would have an easier job, if they are made to be SIZE_LARGE in the future. -Mech if(prob(shield_chance)) visible_message("\The [M] uses [G.affecting] as a shield!") - if(Bump(G.affecting)) - return + if(bump_targets) + if(Bump(G.affecting)) + return else visible_message("\The [M] tries to use [G.affecting] as a shield, but fails!") else visible_message("\The [M] uses [G.affecting] as a shield!") - if(Bump(G.affecting)) - return //If Bump() returns 0 (keep going) then we continue on to attack M. + if(bump_targets) + if(Bump(G.affecting)) + return //If Bump() returns 0 (keep going) then we continue on to attack M. - passthrough = !attack_mob(M, distance) + if(bump_targets) + passthrough = !attack_mob(M, distance) + else + passthrough = 1 //Projectiles that don't bump (raytraces) always pass through else passthrough = 1 //so ghosts don't stop bullets else passthrough = (A.bullet_act(src, def_zone) == PROJECTILE_CONTINUE) //backwards compatibility - if(isturf(A)) - for(var/obj/O in A) - O.bullet_act(src) - for(var/mob/living/M in A) - attack_mob(M, distance) + if(bump_targets) // only attack/act a turf's contents if our projectile is not a raytrace + if(isturf(A)) + for(var/obj/O in A) + O.bullet_act(src) + for(var/mob/living/M in A) + attack_mob(M, distance) //penetrating projectiles can pass through things that otherwise would not let them if(!passthrough && penetrating > 0) @@ -598,7 +623,7 @@ trajectory_ignore_forcemove = FALSE return FALSE - if(A) + if(A && bump_targets) on_impact(A) qdel(src) return TRUE @@ -641,7 +666,9 @@ return 1 /obj/item/projectile/proc/check_fire(atom/target as mob, mob/living/user as mob) //Checks if you can hit them or not. - check_trajectory(target, user, pass_flags, flags) + if(target in check_trajectory(target, user, pass_flags, flags)) + return TRUE + return FALSE /obj/item/projectile/CanPass() return TRUE diff --git a/code/modules/projectiles/projectile/trace.dm b/code/modules/projectiles/projectile/trace.dm index aaf7b9a7b6..ccb13ad7be 100644 --- a/code/modules/projectiles/projectile/trace.dm +++ b/code/modules/projectiles/projectile/trace.dm @@ -14,7 +14,9 @@ return trace.launch_projectile(target) //Test it! /obj/item/projectile/proc/_check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. - check_trajectory(target, user, pass_flags, flags) + if(target in check_trajectory(target, user, pass_flags, flags)) + return TRUE + return FALSE //"Tracing" projectile /obj/item/projectile/test //Used to see if you can hit them. @@ -22,6 +24,7 @@ hitscan = TRUE nodamage = TRUE damage = 0 + bump_targets = FALSE var/list/hit = list() /obj/item/projectile/test/process_hitscan() @@ -33,7 +36,24 @@ /obj/item/projectile/test/Bump(atom/A) if(A != src) hit |= A + if(isturf(A)) + for(var/obj/O in A) + hit |= A + for(var/mob/living/M in A) + hit |= A return ..() +/obj/item/projectile/test/fire(angle, atom/direct_target) + . = ..() + if(direct_target) + if(direct_target != src) + hit |= direct_target + . = hit + + /obj/item/projectile/test/attack_mob() return + +//Don't generate tracers - they are generated on Destroy() +/obj/item/projectile/test/finalize_hitscan_and_generate_tracers() + return diff --git a/code/modules/reagents/Chemistry-Metabolism.dm b/code/modules/reagents/Chemistry-Metabolism.dm index 671e8110f1..d979b5cc17 100644 --- a/code/modules/reagents/Chemistry-Metabolism.dm +++ b/code/modules/reagents/Chemistry-Metabolism.dm @@ -31,4 +31,4 @@ metabolism_speed = 0.5 /datum/reagents/metabolism/touch - metabolism_class = CHEM_TOUCH \ No newline at end of file + metabolism_class = CHEM_TOUCH diff --git a/code/modules/reagents/reactions/_reactions.dm b/code/modules/reagents/reactions/_reactions.dm index 61c926153e..b3e242ba70 100644 --- a/code/modules/reagents/reactions/_reactions.dm +++ b/code/modules/reagents/reactions/_reactions.dm @@ -119,10 +119,10 @@ var/list/seen = viewers(4, T) for(var/mob/M in seen) if(M.client) - M.show_message("\icon[container][bicon(container)] [mix_message]", 1) + M.show_message("[icon2html(container,M.client)] [mix_message]", 1) playsound(T, reaction_sound, 80, 1) //obtains any special data that will be provided to the reaction products //this is called just before reactants are removed. /decl/chemical_reaction/proc/send_data(var/datum/reagents/holder, var/reaction_limit) - return null \ No newline at end of file + return null diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 693f8cbeef..8eff337f57 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -747,7 +747,15 @@ return /obj/structure/disposalholder/Destroy() - qdel(gas) + QDEL_NULL(gas) + if(contents.len) + var/turf/qdelloc = get_turf(src) + if(qdelloc) + for(var/atom/movable/AM in contents) + AM.loc = qdelloc + else + log_and_message_admins("A disposal holder was deleted with contents in nullspace") //ideally, this should never happen + active = 0 return ..() diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 6a74b9829c..2f45135a23 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -60,7 +60,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). update_icon() else if(busy) - visible_message("\icon [src] flashes: insufficient materials: [getLackingMaterials(D)].") + visible_message("[icon2html(src,viewers(src))] flashes: insufficient materials: [getLackingMaterials(D)].") busy = 0 update_icon() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 23516eeb17..5d65c6f9a2 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -131,12 +131,12 @@ var/global/list/obj/machinery/message_server/message_servers = list() if(2) if(!Console.silent) playsound(Console, 'sound/machines/twobeep.ogg', 50, 1) - Console.audible_message(text("\icon[Console][bicon(Console)] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5, runemessage = "beep! beep!") + Console.audible_message(text("[icon2html(Console,hearers(Console))] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5, runemessage = "beep! beep!") Console.message_log += list(list("High Priority message from [sender]", "[authmsg]")) else if(!Console.silent) playsound(Console, 'sound/machines/twobeep.ogg', 50, 1) - Console.audible_message(text("\icon[Console][bicon(Console)] *The Requests Console beeps: 'Message from [sender]'"),,4, runemessage = "beep beep") + Console.audible_message(text("[icon2html(Console,hearers(Console))] *The Requests Console beeps: 'Message from [sender]'"),,4, runemessage = "beep beep") Console.message_log += list(list("Message from [sender]", "[authmsg]")) Console.set_light(2) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index b00b98523e..57474f3bc1 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -75,7 +75,7 @@ update_icon() else if(busy) - visible_message("\icon [src] flashes: insufficient materials: [getLackingMaterials(D)].") + visible_message("[icon2html(src,viewers(src))] flashes: insufficient materials: [getLackingMaterials(D)].") busy = 0 update_icon() @@ -270,7 +270,7 @@ // Reduce our amount stored materials[matstring] -= ejected * S.perunit - + // Recurse if we have enough left for more sheets if(recursive && materials[matstring] >= S.perunit) eject_materials(matstring, -1) diff --git a/code/modules/scripting/AST/AST Nodes.dm b/code/modules/scripting/AST/AST Nodes.dm index 941d63ba13..ceeacdcdc3 100644 --- a/code/modules/scripting/AST/AST Nodes.dm +++ b/code/modules/scripting/AST/AST Nodes.dm @@ -64,16 +64,16 @@ var Class: operator See and for subtypes. */ -/node/expression/operator +/node/expression/op var/node/expression/exp var/tmp/name var/tmp/precedence -/node/expression/operator/New() +/node/expression/op/New() .=..() if(!src.name) src.name="[src.type]" -/node/expression/operator/ToString() +/node/expression/op/ToString() return "operator: [name]" /* @@ -125,4 +125,4 @@ var src.value=value /node/expression/value/reference/ToString() - return "ref: [src.value] ([src.value.type])" \ No newline at end of file + return "ref: [src.value] ([src.value.type])" diff --git a/code/modules/scripting/AST/Operators/Binary Operators.dm b/code/modules/scripting/AST/Operators/Binary Operators.dm index 42e00db0c7..71d9517197 100644 --- a/code/modules/scripting/AST/Operators/Binary Operators.dm +++ b/code/modules/scripting/AST/Operators/Binary Operators.dm @@ -7,7 +7,7 @@ Class: binary Represents a binary operator in the AST. A binary operator takes two operands (ie x and y) and returns a value. */ -/node/expression/operator/binary +/node/expression/op/binary var/node/expression/exp2 ////////// Comparison Operators ////////// @@ -16,7 +16,7 @@ Returns true if x = y. */ // -/node/expression/operator/binary/Equal +/node/expression/op/binary/Equal precedence=OOP_EQUAL /* @@ -24,7 +24,7 @@ Returns true if x and y aren't equal. */ // -/node/expression/operator/binary/NotEqual +/node/expression/op/binary/NotEqual precedence=OOP_EQUAL /* @@ -32,7 +32,7 @@ Returns true if x > y. */ // -/node/expression/operator/binary/Greater +/node/expression/op/binary/Greater precedence=OOP_COMPARE /* @@ -40,7 +40,7 @@ Returns true if x < y. */ // -/node/expression/operator/binary/Less +/node/expression/op/binary/Less precedence=OOP_COMPARE /* @@ -48,7 +48,7 @@ Returns true if x >= y. */ // -/node/expression/operator/binary/GreaterOrEqual +/node/expression/op/binary/GreaterOrEqual precedence=OOP_COMPARE /* @@ -56,7 +56,7 @@ Returns true if x <= y. */ // -/node/expression/operator/binary/LessOrEqual +/node/expression/op/binary/LessOrEqual precedence=OOP_COMPARE @@ -67,7 +67,7 @@ Returns true if x and y are true. */ // -/node/expression/operator/binary/LogicalAnd +/node/expression/op/binary/LogicalAnd precedence=OOP_AND /* @@ -75,7 +75,7 @@ Returns true if x, y, or both are true. */ // -/node/expression/operator/binary/LogicalOr +/node/expression/op/binary/LogicalOr precedence=OOP_OR /* @@ -83,7 +83,7 @@ Returns true if either x or y but not both are true. */ // -/node/expression/operator/binary/LogicalXor //Not implemented in nS +/node/expression/op/binary/LogicalXor //Not implemented in nS precedence=OOP_OR @@ -97,7 +97,7 @@ 011 & 110 = 010 */ // -/node/expression/operator/binary/BitwiseAnd +/node/expression/op/binary/BitwiseAnd precedence=OOP_BIT /* @@ -108,7 +108,7 @@ 011 | 110 = 111 */ // -/node/expression/operator/binary/BitwiseOr +/node/expression/op/binary/BitwiseOr precedence=OOP_BIT /* @@ -119,7 +119,7 @@ 011 xor 110 = 101 */ // -/node/expression/operator/binary/BitwiseXor +/node/expression/op/binary/BitwiseXor precedence=OOP_BIT @@ -130,7 +130,7 @@ Returns the sum of x and y. */ // -/node/expression/operator/binary/Add +/node/expression/op/binary/Add precedence=OOP_ADD /* @@ -138,7 +138,7 @@ Returns the difference of x and y. */ // -/node/expression/operator/binary/Subtract +/node/expression/op/binary/Subtract precedence=OOP_ADD /* @@ -146,7 +146,7 @@ Returns the product of x and y. */ // -/node/expression/operator/binary/Multiply +/node/expression/op/binary/Multiply precedence=OOP_MULTIPLY /* @@ -154,7 +154,7 @@ Returns the quotient of x and y. */ // -/node/expression/operator/binary/Divide +/node/expression/op/binary/Divide precedence=OOP_MULTIPLY /* @@ -162,7 +162,7 @@ Returns x raised to the power of y. */ // -/node/expression/operator/binary/Power +/node/expression/op/binary/Power precedence=OOP_POW /* @@ -170,5 +170,5 @@ Returns the remainder of x / y. */ // -/node/expression/operator/binary/Modulo +/node/expression/op/binary/Modulo precedence=OOP_MULTIPLY diff --git a/code/modules/scripting/AST/Operators/Unary Operators.dm b/code/modules/scripting/AST/Operators/Unary Operators.dm index ccfbc3ca3b..07bb79a8c5 100644 --- a/code/modules/scripting/AST/Operators/Unary Operators.dm +++ b/code/modules/scripting/AST/Operators/Unary Operators.dm @@ -5,7 +5,7 @@ Class: unary Represents a unary operator in the AST. Unary operators take a single operand (referred to as x below) and return a value. */ -/node/expression/operator/unary +/node/expression/op/unary precedence=OOP_UNARY /* @@ -16,7 +16,7 @@ !true = false and !false = true */ // -/node/expression/operator/unary/LogicalNot +/node/expression/op/unary/LogicalNot name="logical not" /* @@ -27,7 +27,7 @@ ~10 (decimal 2) = 01 (decimal 1). */ // -/node/expression/operator/unary/BitwiseNot +/node/expression/op/unary/BitwiseNot name="bitwise not" /* @@ -35,7 +35,7 @@ Returns -x. */ // -/node/expression/operator/unary/Minus +/node/expression/op/unary/Minus name="minus" /* @@ -43,9 +43,9 @@ A special unary operator representing a value in parentheses. */ // -/node/expression/operator/unary/group +/node/expression/op/unary/group precedence=OOP_GROUP -/node/expression/operator/unary/New(node/expression/exp) +/node/expression/op/unary/New(node/expression/exp) src.exp=exp return ..() diff --git a/code/modules/scripting/Interpreter/Evaluation.dm b/code/modules/scripting/Interpreter/Evaluation.dm index 2cc90506b4..be488c9ddb 100644 --- a/code/modules/scripting/Interpreter/Evaluation.dm +++ b/code/modules/scripting/Interpreter/Evaluation.dm @@ -4,7 +4,7 @@ /n_Interpreter/proc/Eval(node/expression/exp) if(istype(exp, /node/expression/FunctionCall)) return RunFunction(exp) - else if(istype(exp, /node/expression/operator)) + else if(istype(exp, /node/expression/op)) return EvalOperator(exp) else if(istype(exp, /node/expression/value/literal)) var/node/expression/value/literal/lit=exp @@ -34,57 +34,57 @@ else return exp -/n_Interpreter/proc/EvalOperator(node/expression/operator/exp) - if(istype(exp, /node/expression/operator/binary)) - var/node/expression/operator/binary/bin=exp +/n_Interpreter/proc/EvalOperator(node/expression/op/exp) + if(istype(exp, /node/expression/op/binary)) + var/node/expression/op/binary/bin=exp switch(bin.type) - if(/node/expression/operator/binary/Equal) + if(/node/expression/op/binary/Equal) return Equal(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/NotEqual) + if(/node/expression/op/binary/NotEqual) return NotEqual(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Greater) + if(/node/expression/op/binary/Greater) return Greater(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Less) + if(/node/expression/op/binary/Less) return Less(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/GreaterOrEqual) + if(/node/expression/op/binary/GreaterOrEqual) return GreaterOrEqual(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/LessOrEqual) + if(/node/expression/op/binary/LessOrEqual) return LessOrEqual(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/LogicalAnd) + if(/node/expression/op/binary/LogicalAnd) return LogicalAnd(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/LogicalOr) + if(/node/expression/op/binary/LogicalOr) return LogicalOr(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/LogicalXor) + if(/node/expression/op/binary/LogicalXor) return LogicalXor(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/BitwiseAnd) + if(/node/expression/op/binary/BitwiseAnd) return BitwiseAnd(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/BitwiseOr) + if(/node/expression/op/binary/BitwiseOr) return BitwiseOr(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/BitwiseXor) + if(/node/expression/op/binary/BitwiseXor) return BitwiseXor(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Add) + if(/node/expression/op/binary/Add) return Add(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Subtract) + if(/node/expression/op/binary/Subtract) return Subtract(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Multiply) + if(/node/expression/op/binary/Multiply) return Multiply(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Divide) + if(/node/expression/op/binary/Divide) return Divide(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Power) + if(/node/expression/op/binary/Power) return Power(Eval(bin.exp), Eval(bin.exp2)) - if(/node/expression/operator/binary/Modulo) + if(/node/expression/op/binary/Modulo) return Modulo(Eval(bin.exp), Eval(bin.exp2)) else RaiseError(new/runtimeError/UnknownInstruction()) return switch(exp.type) - if(/node/expression/operator/unary/Minus) + if(/node/expression/op/unary/Minus) return Minus(Eval(exp.exp)) - if(/node/expression/operator/unary/LogicalNot) + if(/node/expression/op/unary/LogicalNot) return LogicalNot(Eval(exp.exp)) - if(/node/expression/operator/unary/BitwiseNot) + if(/node/expression/op/unary/BitwiseNot) return BitwiseNot(Eval(exp.exp)) - if(/node/expression/operator/unary/group) + if(/node/expression/op/unary/group) return Eval(exp.exp) else RaiseError(new/runtimeError/UnknownInstruction()) @@ -164,4 +164,4 @@ //Unary// /n_Interpreter/proc/Minus(a) return -a /n_Interpreter/proc/LogicalNot(a) return !a -/n_Interpreter/proc/BitwiseNot(a) return ~a \ No newline at end of file +/n_Interpreter/proc/BitwiseNot(a) return ~a diff --git a/code/modules/scripting/Options.dm b/code/modules/scripting/Options.dm index cc9e0308ca..1dd35da43b 100644 --- a/code/modules/scripting/Options.dm +++ b/code/modules/scripting/Options.dm @@ -70,31 +70,31 @@ associated values are types of which the proc w ) var/list/unary_operators =list( - "!" = /node/expression/operator/unary/LogicalNot, - "~" = /node/expression/operator/unary/BitwiseNot, - "-" = /node/expression/operator/unary/Minus + "!" = /node/expression/op/unary/LogicalNot, + "~" = /node/expression/op/unary/BitwiseNot, + "-" = /node/expression/op/unary/Minus ) var/list/binary_operators=list( - "==" = /node/expression/operator/binary/Equal, - "!=" = /node/expression/operator/binary/NotEqual, - ">" = /node/expression/operator/binary/Greater, - "<" = /node/expression/operator/binary/Less, - ">=" = /node/expression/operator/binary/GreaterOrEqual, - "<=" = /node/expression/operator/binary/LessOrEqual, - "&&" = /node/expression/operator/binary/LogicalAnd, - "||" = /node/expression/operator/binary/LogicalOr, - "&" = /node/expression/operator/binary/BitwiseAnd, - "|" = /node/expression/operator/binary/BitwiseOr, - "`" = /node/expression/operator/binary/BitwiseXor, - "+" = /node/expression/operator/binary/Add, - "-" = /node/expression/operator/binary/Subtract, - "*" = /node/expression/operator/binary/Multiply, - "/" = /node/expression/operator/binary/Divide, - "^" = /node/expression/operator/binary/Power, - "%" = /node/expression/operator/binary/Modulo) + "==" = /node/expression/op/binary/Equal, + "!=" = /node/expression/op/binary/NotEqual, + ">" = /node/expression/op/binary/Greater, + "<" = /node/expression/op/binary/Less, + ">=" = /node/expression/op/binary/GreaterOrEqual, + "<=" = /node/expression/op/binary/LessOrEqual, + "&&" = /node/expression/op/binary/LogicalAnd, + "||" = /node/expression/op/binary/LogicalOr, + "&" = /node/expression/op/binary/BitwiseAnd, + "|" = /node/expression/op/binary/BitwiseOr, + "`" = /node/expression/op/binary/BitwiseXor, + "+" = /node/expression/op/binary/Add, + "-" = /node/expression/op/binary/Subtract, + "*" = /node/expression/op/binary/Multiply, + "/" = /node/expression/op/binary/Divide, + "^" = /node/expression/op/binary/Power, + "%" = /node/expression/op/binary/Modulo) /n_scriptOptions/nS_Options/New() .=..() for(var/O in assign_operators+binary_operators+unary_operators) - if(!symbols.Find(O)) symbols+=O \ No newline at end of file + if(!symbols.Find(O)) symbols+=O diff --git a/code/modules/scripting/Parser/Expressions.dm b/code/modules/scripting/Parser/Expressions.dm index c90a08254e..1e25c9be69 100644 --- a/code/modules/scripting/Parser/Expressions.dm +++ b/code/modules/scripting/Parser/Expressions.dm @@ -30,7 +30,7 @@ Proc: Precedence Compares two operators, decides which is higher in the order of operations, and returns or . */ -/n_Parser/nS_Parser/proc/Precedence(node/expression/operator/top, node/expression/operator/input) +/n_Parser/nS_Parser/proc/Precedence(node/expression/op/top, node/expression/op/input) if(istype(top)) top=top.precedence if(istype(input)) @@ -88,7 +88,7 @@ See Also: - - */ -/n_Parser/nS_Parser/proc/GetOperator(O, type=/node/expression/operator, L[]) +/n_Parser/nS_Parser/proc/GetOperator(O, type=/node/expression/op, L[]) if(istype(O, type)) return O //O is already the desired type if(istype(O, /token)) O=O:value //sets O to text if(istext(O)) //sets O to path @@ -108,7 +108,7 @@ See Also: - */ /n_Parser/nS_Parser/proc/GetBinaryOperator(O) - return GetOperator(O, /node/expression/operator/binary, options.binary_operators) + return GetOperator(O, /node/expression/op/binary, options.binary_operators) /* Proc: GetUnaryOperator @@ -120,7 +120,7 @@ See Also: - */ /n_Parser/nS_Parser/proc/GetUnaryOperator(O) - return GetOperator(O, /node/expression/operator/unary, options.unary_operators) + return GetOperator(O, /node/expression/op/unary, options.unary_operators) /* Proc: Reduce @@ -128,15 +128,15 @@ Takes the operator on top of the opr stack and assigns its operand(s). Then this of the val stack. */ /n_Parser/nS_Parser/proc/Reduce(stack/opr, stack/val) - var/node/expression/operator/O=opr.Pop() + var/node/expression/op/O=opr.Pop() if(!O) return if(!istype(O)) errors+=new/scriptError("Error reducing expression - invalid operator.") return //Take O and assign its operands, popping one or two values from the val stack //depending on whether O is a binary or unary operator. - if(istype(O, /node/expression/operator/binary)) - var/node/expression/operator/binary/B=O + if(istype(O, /node/expression/op/binary)) + var/node/expression/op/binary/B=O B.exp2=val.Pop() B.exp =val.Pop() val.Push(B) @@ -203,7 +203,7 @@ See Also: continue val.Push(ParseParenExpression()) else if(istype(curToken, /token/symbol)) //Operator found. - var/node/expression/operator/curOperator //Figure out whether it is unary or binary and get a new instance. + var/node/expression/op/curOperator //Figure out whether it is unary or binary and get a new instance. if(src.expecting==OPERATOR) curOperator=GetBinaryOperator(curToken) if(!curOperator) @@ -297,7 +297,7 @@ See Also: /n_Parser/nS_Parser/proc/ParseParenExpression() if(!CheckToken("(", /token/symbol)) return - return new/node/expression/operator/unary/group(ParseExpression(list(")"))) + return new/node/expression/op/unary/group(ParseExpression(list(")"))) /* Proc: ParseParamExpression @@ -307,4 +307,4 @@ See Also: - */ /n_Parser/nS_Parser/proc/ParseParamExpression() - return ParseExpression(list(",", ")")) \ No newline at end of file + return ParseExpression(list(",", ")")) diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm index 6754878674..204f47b000 100644 --- a/code/modules/shieldgen/directional_shield.dm +++ b/code/modules/shieldgen/directional_shield.dm @@ -100,15 +100,20 @@ /obj/item/shield_projector/Initialize() START_PROCESSING(SSobj, src) + AddComponent(/datum/component/recursive_move) + RegisterSignal(src, COMSIG_OBSERVER_MOVED, PROC_REF(moved_event)) + //ChompEDIT START - shields on init if(always_on) - create_shields() - GLOB.moved_event.register(src, src, PROC_REF(moved_event)) + spawn(0) + if(!QDELETED(src)) + create_shields() + //ChompEDIT END return ..() /obj/item/shield_projector/Destroy() destroy_shields() STOP_PROCESSING(SSobj, src) - GLOB.moved_event.unregister(src, src, PROC_REF(moved_event)) + UnregisterSignal(src, COMSIG_OBSERVER_MOVED) return ..() /obj/item/shield_projector/proc/moved_event() diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 49610cbcd0..a7f9b851b6 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -259,14 +259,14 @@ return if (src.active) - user.visible_message(span_blue("\icon[src][bicon(src)] [user] deactivated the shield generator."), \ - span_blue("\icon[src][bicon(src)] You deactivate the shield generator."), \ + user.visible_message(span_blue("[icon2html(src,viewers(src))] [user] deactivated the shield generator."), \ + span_blue("[icon2html(src,user.client)] You deactivate the shield generator."), \ "You hear heavy droning fade out.") src.shields_down() else if(anchored) - user.visible_message(span_blue("\icon[src][bicon(src)] [user] activated the shield generator."), \ - span_blue("\icon[src][bicon(src)] You activate the shield generator."), \ + user.visible_message(span_blue("[icon2html(src,viewers(src))] [user] activated the shield generator."), \ + span_blue("[icon2html(src, user.client)] You activate the shield generator."), \ "You hear heavy droning.") src.shields_up() else diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index 6ec477ceb2..f650a3d15b 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -49,7 +49,7 @@ else if(W.has_tool_quality(TOOL_WRENCH)) src.anchored = !src.anchored playsound(src, W.usesound, 75, 1) - src.visible_message(span_blue("\icon[src][bicon(src)] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].")) + src.visible_message(span_blue("[icon2html(src,viewers(src))] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].")) if(anchored) spawn(0) diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index 5a2cfc2616..2e2888a4be 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -69,7 +69,7 @@ else if(W.has_tool_quality(TOOL_WRENCH)) src.anchored = !src.anchored playsound(src, W.usesound, 75, 1) - src.visible_message(span_blue("\icon[src][bicon(src)] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].")) + src.visible_message(span_blue("[icon2html(src,viewers(src))] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].")) if(active) toggle() @@ -242,7 +242,7 @@ covered_turfs = null for(var/mob/M in view(5,src)) - to_chat(M, "\icon[src][bicon(src)] You hear heavy droning start up.") + to_chat(M, "[icon2html(src, M.client)] You hear heavy droning start up.") for(var/obj/effect/energy_field/E in field) // Update the icons here to ensure all the shields have been made already. E.update_icon() else @@ -252,7 +252,7 @@ qdel(D) for(var/mob/M in view(5,src)) - to_chat(M, "\icon[src][bicon(src)] You hear heavy droning fade out.") + to_chat(M, "[icon2html(src, M.client)] You hear heavy droning fade out.") /obj/machinery/shield_gen/update_icon() if(stat & BROKEN) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index f1d23995c4..d8b44e9d61 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -257,7 +257,7 @@ // Observer pattern pre-move var/old_location = current_location - GLOB.shuttle_pre_move_event.raise_event(src, old_location, destination) + SEND_SIGNAL(src, COMSIG_OBSERVER_SHUTTLE_PRE_MOVE, old_location, destination) current_location.shuttle_departed(src) if(debug_logging) @@ -273,7 +273,7 @@ // Observer pattern post-move destination.shuttle_arrived(src) - GLOB.shuttle_moved_event.raise_event(src, old_location, destination) + SEND_SIGNAL(src, COMSIG_OBSERVER_SHUTTLE_MOVED, old_location, destination) return TRUE diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm index 0b0bc59a51..5dd9666178 100644 --- a/code/modules/shuttles/shuttles_web.dm +++ b/code/modules/shuttles/shuttles_web.dm @@ -409,10 +409,10 @@ /obj/shuttle_connector/Initialize() . = ..() - GLOB.shuttle_added.register_global(src, PROC_REF(setup_routes)) + RegisterSignal(SSshuttles,COMSIG_OBSERVER_SHUTTLE_ADDED,PROC_REF(setup_routes)) /obj/shuttle_connector/Destroy() - GLOB.shuttle_added.unregister_global(src, PROC_REF(setup_routes)) + UnregisterSignal(SSshuttles,COMSIG_OBSERVER_SHUTTLE_ADDED) . = ..() // This is called whenever a shuttle is initialized. If its our shuttle, do our thing! diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm index 659e77c301..e55296c902 100644 --- a/code/modules/tgui/modules/appearance_changer.dm +++ b/code/modules/tgui/modules/appearance_changer.dm @@ -65,13 +65,14 @@ owner = H if(owner) - GLOB.moved_event.register(owner, src, PROC_REF(update_active_camera_screen)) + owner.AddComponent(/datum/component/recursive_move) + RegisterSignal(owner, COMSIG_OBSERVER_MOVED, PROC_REF(update_active_camera_screen)) check_whitelist = check_species_whitelist whitelist = species_whitelist blacklist = species_blacklist /datum/tgui_module/appearance_changer/Destroy() - GLOB.moved_event.unregister(owner, src, PROC_REF(update_active_camera_screen)) + UnregisterSignal(owner, COMSIG_OBSERVER_MOVED) last_camera_turf = null qdel(cam_screen) QDEL_LIST(cam_plane_masters) diff --git a/code/modules/tgui/modules/camera.dm b/code/modules/tgui/modules/camera.dm index 7954b189f5..1614a6c551 100644 --- a/code/modules/tgui/modules/camera.dm +++ b/code/modules/tgui/modules/camera.dm @@ -68,7 +68,7 @@ /datum/tgui_module/camera/Destroy() if(active_camera) - GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen)) + UnregisterSignal(active_camera, COMSIG_OBSERVER_MOVED) active_camera = null last_camera_turf = null qdel(cam_screen) @@ -142,9 +142,10 @@ var/list/cameras = get_available_cameras(usr) var/obj/machinery/camera/C = cameras["[ckey(c_tag)]"] if(active_camera) - GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen)) + UnregisterSignal(active_camera, COMSIG_OBSERVER_MOVED) active_camera = C - GLOB.moved_event.register(active_camera, src, PROC_REF(update_active_camera_screen)) + active_camera.AddComponent(/datum/component/recursive_move) + RegisterSignal(active_camera, COMSIG_OBSERVER_MOVED, PROC_REF(update_active_camera_screen)) playsound(tgui_host(), get_sfx("terminal_type"), 25, FALSE) update_active_camera_screen() return TRUE @@ -169,9 +170,10 @@ if(target) if(active_camera) - GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen)) + UnregisterSignal(active_camera, COMSIG_OBSERVER_MOVED) active_camera = target - GLOB.moved_event.register(active_camera, src, PROC_REF(update_active_camera_screen)) + active_camera.AddComponent(/datum/component/recursive_move) + RegisterSignal(active_camera, COMSIG_OBSERVER_MOVED, PROC_REF(update_active_camera_screen)) playsound(tgui_host(), get_sfx("terminal_type"), 25, FALSE) update_active_camera_screen() . = TRUE @@ -276,7 +278,7 @@ // Turn off the console if(length(concurrent_users) == 0 && is_living) if(active_camera) - GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen)) + UnregisterSignal(active_camera, COMSIG_OBSERVER_MOVED) active_camera = null playsound(tgui_host(), 'sound/machines/terminal_off.ogg', 25, FALSE) diff --git a/code/modules/tgui/modules/overmap.dm b/code/modules/tgui/modules/overmap.dm index 28e935e3d0..a1d0375312 100644 --- a/code/modules/tgui/modules/overmap.dm +++ b/code/modules/tgui/modules/overmap.dm @@ -55,13 +55,14 @@ user.set_machine(src) user.reset_view(linked) user.set_viewsize(world.view + extra_view) - GLOB.moved_event.register(user, src, /datum/tgui_module/ship/proc/unlook) + user.AddComponent(/datum/component/recursive_move) + RegisterSignal(user, COMSIG_OBSERVER_MOVED, /datum/tgui_module/ship/proc/unlook) LAZYDISTINCTADD(viewers, WEAKREF(user)) /datum/tgui_module/ship/proc/unlook(var/mob/user) user.reset_view() user.set_viewsize() // reset to default - GLOB.moved_event.unregister(user, src, /datum/tgui_module/ship/proc/unlook) + UnregisterSignal(user, COMSIG_OBSERVER_MOVED) LAZYREMOVE(viewers, WEAKREF(user)) /datum/tgui_module/ship/proc/viewing_overmap(mob/user) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 91b0b8fb2b..2dbe340951 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -110,10 +110,7 @@ )) else window.send_message("ping") - window.send_asset(get_asset_datum(/datum/asset/simple/fontawesome)) - window.send_asset(get_asset_datum(/datum/asset/simple/tgfont)) - for(var/datum/asset/asset in src_object.ui_assets(user)) - window.send_asset(asset) + send_assets() window.send_message("update", get_payload( with_data = TRUE, with_static_data = TRUE)) @@ -123,6 +120,17 @@ return TRUE + +/datum/tgui/proc/send_assets() + var/flush_queue = window.send_asset(get_asset_datum( + /datum/asset/simple/namespaced/fontawesome)) + flush_queue |= window.send_asset(get_asset_datum( + /datum/asset/simple/namespaced/tgfont)) + for(var/datum/asset/asset in src_object.ui_assets(user)) + flush_queue |= window.send_asset(asset) + if (flush_queue) + user.client.browse_queue_flush() + /** * public * diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index 4fecdd077f..2f3ff060d3 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -48,8 +48,8 @@ assets = list( get_asset_datum(/datum/asset/simple/tgui_panel), )) - window.send_asset(get_asset_datum(/datum/asset/simple/fontawesome)) - window.send_asset(get_asset_datum(/datum/asset/simple/tgfont)) + window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/fontawesome)) + window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/tgfont)) window.send_asset(get_asset_datum(/datum/asset/spritesheet/chat)) // Other setup request_telemetry() diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm index 7768830a2e..a20f5fa1eb 100644 --- a/code/modules/vchat/vchat_client.dm +++ b/code/modules/vchat/vchat_client.dm @@ -291,7 +291,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic return FALSE GLOBAL_LIST_EMPTY(bicon_cache) // Cache of the tag results, not the icons -/proc/bicon(var/obj, var/use_class = 1, var/custom_classes = "") +/proc/icon2html(var/obj, var/use_class = 1, var/custom_classes = "") var/class = use_class ? "class='icon misc [custom_classes]'" : null if(!obj) return diff --git a/code/modules/virus2/biohazard destroyer.dm b/code/modules/virus2/biohazard destroyer.dm index 71705147ca..2be7c17d1e 100644 --- a/code/modules/virus2/biohazard destroyer.dm +++ b/code/modules/virus2/biohazard destroyer.dm @@ -17,4 +17,4 @@ I.loc = src.loc for(var/mob/O in hearers(src, null)) - O.show_message(span_blue("\icon[src][bicon(src)] The [src.name] beeps."), 2) + O.show_message(span_blue("[icon2html(src, O.client)] The [src.name] beeps."), 2) diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index a5744d3c5b..208e2d3a01 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -31,7 +31,7 @@ report("Antibodies detected: [antigens2string(C.antibodies)]", user) /obj/item/device/antibody_scanner/proc/report(var/text, mob/user as mob) - to_chat(user, "[span_blue("\icon[src][bicon(src)] \The [src] beeps,")] \"[span_blue("[text]")]\"") + to_chat(user, "[span_blue("[icon2html(src, user.client)] \The [src] beeps,")] \"[span_blue("[text]")]\"") ///////////////VIRUS DISH/////////////// diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm index e18d93fe36..876ddce783 100644 --- a/code/modules/vore/eating/simple_animal_vr.dm +++ b/code/modules/vore/eating/simple_animal_vr.dm @@ -79,7 +79,7 @@ update_icon() set_AI_busy(FALSE) else if(!ai_holder.target) // no using this to clear a retaliate mob's target - ai_holder.target = user //just because you're not tasty doesn't mean you get off the hook. A swat for a swat. + ai_holder.give_target(user) //just because you're not tasty doesn't mean you get off the hook. A swat for a swat. //AttackTarget() //VOREStation AI Temporary Removal //LoseTarget() // only make one attempt at an attack rather than going into full rage mode else diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 16631c9446..baf34bc916 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -2097,14 +2097,14 @@ Departamental Swimsuits, for general use translocator_unequip(translocator, user) T.forceMove(src) translocator = T - user.show_message("\icon[src][bicon(src)]*click!*") + user.show_message("[icon2html(src, user.client)]*click!*") playsound(src, 'sound/machines/click.ogg', 30, 1) /obj/item/clothing/head/fluff/nikki/proc/translocator_unequip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user) if (translocator) if (user) user.put_in_hands(T) - user.show_message("\icon[src][bicon(src)]*click!*") + user.show_message("[icon2html(src, user.client)]*click!*") else translocator.forceMove(get_turf(src)) translocator = null diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 39985e01f4..bda7d2d669 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1531,7 +1531,7 @@ if(stored_item && opened && !searching) searching = TRUE if(do_after(user, 10)) - to_chat(user, "You find \icon[stored_item] [stored_item] in [src]!") + to_chat(user, "You find [icon2html(stored_item, user.client)] [stored_item] in [src]!") stored_item.forceMove(get_turf(src)) stored_item = null searching = FALSE diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm index 982d5185f9..4bbaaff043 100644 --- a/code/modules/vore/resizing/sizegun_vr.dm +++ b/code/modules/vore/resizing/sizegun_vr.dm @@ -25,8 +25,8 @@ /obj/item/weapon/gun/energy/sizegun/New() ..() - verbs += PROC_REF(select_size) - verbs += PROC_REF(spin_dial) + verbs += /obj/item/weapon/gun/energy/sizegun/proc/select_size + verbs += /obj/item/weapon/gun/energy/sizegun/proc/spin_dial /obj/item/weapon/gun/energy/sizegun/attack_self(mob/user) . = ..() diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm index 7a2d73474a..52c871a7b9 100644 --- a/code/modules/xenoarcheaology/artifacts/artifact.dm +++ b/code/modules/xenoarcheaology/artifacts/artifact.dm @@ -12,6 +12,16 @@ var/being_used = 0 + +/obj/machinery/artifact/Destroy() + if(artifact_master) + var/datum/component/artifact_master/arti_mstr = artifact_master + arti_mstr.RemoveComponent() + artifact_master = null + if(!QDELETED(arti_mstr)) + qdel(arti_mstr) + . = ..() + /obj/machinery/artifact/New() ..() diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm index 0fdd3ef3f3..61f4975a02 100644 --- a/code/modules/xenoarcheaology/artifacts/autocloner.dm +++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm @@ -45,17 +45,17 @@ if(!previous_power_state) previous_power_state = 1 icon_state = "cellold1" - src.visible_message("\icon[src][bicon(src)] [src] suddenly comes to life!") + src.visible_message("[icon2html(src,viewers(src))] [src] suddenly comes to life!") //slowly grow a mob if(prob(5)) - src.visible_message("\icon[src][bicon(src)] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") + src.visible_message("[icon2html(src,viewers(src))] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") //if we've finished growing... if(time_spent_spawning >= time_per_spawn) time_spent_spawning = 0 update_use_power(USE_POWER_IDLE) - src.visible_message("\icon[src][bicon(src)] [src] pings!") + src.visible_message("[icon2html(src,viewers(src))] [src] pings!") icon_state = "cellold1" desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." if(spawn_type) @@ -76,7 +76,7 @@ if(previous_power_state) previous_power_state = 0 icon_state = "cellold0" - src.visible_message("\icon[src][bicon(src)] [src] suddenly shuts down.") + src.visible_message("[icon2html(src,viewers(src))] [src] suddenly shuts down.") //cloned mob slowly breaks down time_spent_spawning = max(time_spent_spawning + last_process - world.time, 0) diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm index 06c411fab9..39972aaa5e 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator.dm @@ -98,7 +98,7 @@ "foreground" = colors[color], ))) - fail_message = "\icon[src][bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \ + fail_message = "[bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \ [pick("horn","beep","bing","bleep","blat","honk","hrumph","ding")] sounds and a \ [pick("yellow","purple","green","blue","red","orange","white")] \ [pick("light","dial","meter","window","protrusion","knob","antenna","swirly thing")] \ @@ -110,7 +110,7 @@ if(spawning_types.len && powered()) spawn_progress_time += world.time - last_process_time if(spawn_progress_time > max_spawn_time) - src.visible_message("\icon[src][bicon(src)] [src] pings!") + src.visible_message("[icon2html(src,viewers(src))] [src] pings!") var/obj/source_material = pop(stored_materials) var/spawn_type = pop(spawning_types) @@ -133,7 +133,7 @@ icon_state = "borgcharger0(old)" else if(prob(5)) - src.visible_message("\icon[src][bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") + src.visible_message("[icon2html(src,viewers(src))] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") last_process_time = world.time @@ -161,9 +161,9 @@ if(key in construction) if(LAZYLEN(stored_materials) > LAZYLEN(spawning_types)) if(LAZYLEN(spawning_types)) - visible_message("\icon[src][bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") + visible_message("[icon2html(src,viewers(src))] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") else - visible_message("\icon[src][bicon(src)] [src]'s front compartment slides shut.") + visible_message("[icon2html(src,viewers(src))] [src]'s front compartment slides shut.") spawning_types.Add(construction[key]) spawn_progress_time = 0 update_use_power(USE_POWER_ACTIVE) diff --git a/code/modules/xenoarcheaology/artifacts/replicator_vr.dm b/code/modules/xenoarcheaology/artifacts/replicator_vr.dm index f92b94ade7..9a31b13a75 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator_vr.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator_vr.dm @@ -71,7 +71,7 @@ if(spawning_types.len && powered()) spawn_progress_time += world.time - last_process_time if(spawn_progress_time > max_spawn_time) - src.visible_message("\icon[src][bicon(src)] [src] pings!") + src.visible_message("[icon2html(src,viewers(src))] [src] pings!") var/obj/source_material = pop(stored_materials) var/spawn_type = pop(spawning_types) @@ -200,7 +200,7 @@ icon_state = "borgcharger0(old)" else if(prob(5)) - src.visible_message("\icon[src][bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") + src.visible_message("[icon2html(src,viewers(src))] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") last_process_time = world.time @@ -313,9 +313,9 @@ if(key in created_mobs) if(LAZYLEN(stored_materials) > LAZYLEN(spawning_types)) if(LAZYLEN(spawning_types)) - visible_message("\icon[src][bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") + visible_message("[icon2html(src,viewers(src))] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") else - visible_message("\icon[src][bicon(src)] [src]'s front compartment slides shut.") + visible_message("[icon2html(src,viewers(src))] [src]'s front compartment slides shut.") spawning_types.Add(created_mobs[key]) spawn_progress_time = 0 update_use_power(USE_POWER_ACTIVE) @@ -424,7 +424,7 @@ if(spawning_types.len && powered()) spawn_progress_time += world.time - last_process_time if(spawn_progress_time > max_spawn_time) - src.visible_message("\icon[src][bicon(src)] [src] pings!") + src.visible_message("[icon2html(src,viewers(src))] [src] pings!") var/obj/source_material = pop(stored_materials) var/spawn_type = pop(spawning_types) @@ -469,7 +469,7 @@ icon_state = "borgcharger0(old)" else if(prob(5)) - src.visible_message("\icon[src][bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") + src.visible_message("[icon2html(src,viewers(src))] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") last_process_time = world.time @@ -586,9 +586,9 @@ if(key in created_items) if(LAZYLEN(stored_materials) > LAZYLEN(spawning_types)) if(LAZYLEN(spawning_types)) - visible_message("\icon[src][bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") + visible_message("[icon2html(src,viewers(src))] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") else - visible_message("\icon[src][bicon(src)] [src]'s front compartment slides shut.") + visible_message("[icon2html(src,viewers(src))] [src]'s front compartment slides shut.") spawning_types.Add(created_items[key]) spawn_progress_time = 0 update_use_power(USE_POWER_ACTIVE) diff --git a/code/modules/xenoarcheaology/effect.dm b/code/modules/xenoarcheaology/effect.dm index 966e55d05d..bf6932b2d3 100644 --- a/code/modules/xenoarcheaology/effect.dm +++ b/code/modules/xenoarcheaology/effect.dm @@ -92,7 +92,7 @@ var/atom/toplevelholder = target while(!istype(toplevelholder.loc, /turf)) toplevelholder = toplevelholder.loc - toplevelholder.visible_message("[span_red("\icon[toplevelholder][bicon(toplevelholder)] [toplevelholder] [display_msg]")]") + toplevelholder.visible_message("[span_red("[icon2html(toplevelholder, viewers(toplevelholder))] [toplevelholder] [display_msg]")]") /datum/artifact_effect/proc/DoEffectTouch(var/mob/user) /datum/artifact_effect/proc/DoEffectAura(var/atom/holder) diff --git a/code/modules/xenoarcheaology/effect_master.dm b/code/modules/xenoarcheaology/effect_master.dm index ddb77f661a..97696b637d 100644 --- a/code/modules/xenoarcheaology/effect_master.dm +++ b/code/modules/xenoarcheaology/effect_master.dm @@ -118,6 +118,7 @@ holder = null for(var/datum/artifact_effect/AE in my_effects) AE.master = null + my_effects -= AE qdel(AE) STOP_PROCESSING(SSobj,src) diff --git a/code/modules/xenoarcheaology/effects/vampire.dm b/code/modules/xenoarcheaology/effects/vampire.dm index 757f02889a..746a17961d 100644 --- a/code/modules/xenoarcheaology/effects/vampire.dm +++ b/code/modules/xenoarcheaology/effects/vampire.dm @@ -83,7 +83,7 @@ if(charges >= 0.1) if(prob(5)) - holder.visible_message("\icon[holder] \The [holder] gleams a bloody red!") + holder.visible_message("[icon2html(holder,viewers(holder))] \The [holder] gleams a bloody red!") charges -= 0.1 /datum/artifact_effect/vampire/DoEffectPulse() diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm index 354c160a8a..11c5c0fe04 100644 --- a/code/modules/xenoarcheaology/finds/find_spawning.dm +++ b/code/modules/xenoarcheaology/finds/find_spawning.dm @@ -708,3 +708,13 @@ if(become_anomalous) become_anomalous() + + +/obj/item/weapon/archaeological_find/Destroy() + if(src.is_anomalous()) + var/datum/component/artifact_master/arti_mstr = GetComponent(/datum/component/artifact_master) + arti_mstr.RemoveComponent() + if(!QDELETED(arti_mstr)) + qdel(arti_mstr) + + . = ..() diff --git a/code/modules/xenoarcheaology/finds/fossils.dm b/code/modules/xenoarcheaology/finds/fossils.dm index 0ad06af468..3c3a182a32 100644 --- a/code/modules/xenoarcheaology/finds/fossils.dm +++ b/code/modules/xenoarcheaology/finds/fossils.dm @@ -77,7 +77,7 @@ ..() else if(istype(W,/obj/item/weapon/pen)) plaque_contents = sanitize(tgui_input_text(usr, "What would you like to write on the plaque:","Skeleton plaque","")) - user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of \icon[src][bicon(src)] [src].") + user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of [icon2html(src,viewers(src))] [src].") if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." else diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm index cf6c21546d..a71f742ca1 100644 --- a/code/modules/xenoarcheaology/finds/special.dm +++ b/code/modules/xenoarcheaology/finds/special.dm @@ -99,7 +99,7 @@ if(charges >= 0.1) if(prob(5)) - src.visible_message(span_red("\icon[src][bicon(src)] [src]'s eyes glow ruby red for a moment!")) + src.visible_message(span_red("[icon2html(src,viewers(src))] [src]'s eyes glow ruby red for a moment!")) charges -= 0.1 //check on our shadow wights diff --git a/code/modules/xenoarcheaology/finds/talking.dm b/code/modules/xenoarcheaology/finds/talking.dm index 2d6b23508a..138ffca5d4 100644 --- a/code/modules/xenoarcheaology/finds/talking.dm +++ b/code/modules/xenoarcheaology/finds/talking.dm @@ -54,7 +54,7 @@ var/list/options = list("[holder_atom] seems to be listening intently to [source]...",\ "[holder_atom] seems to be focusing on [source]...",\ "[holder_atom] seems to turn it's attention to [source]...") - holder_atom.loc.visible_message(span_blue("\icon[holder_atom][bicon(holder_atom)] [pick(options)]")) + holder_atom.loc.visible_message(span_blue("[icon2html(holder_atom,viewers(holder_atom.loc))] [pick(options)]")) if(prob(20)) spawn(2) @@ -111,5 +111,5 @@ var/list/listening = viewers(holder_atom) for(var/mob/M in listening) - to_chat(M, "\icon[holder_atom][bicon(holder_atom)] [holder_atom] reverberates, \"[span_blue(msg)]\"") + to_chat(M, "[icon2html(holder_atom,M.client)] [holder_atom] reverberates, \"[span_blue(msg)]\"") last_talk_time = world.time diff --git a/code/modules/xenoarcheaology/tools/ano_device_battery.dm b/code/modules/xenoarcheaology/tools/ano_device_battery.dm index 7fb51a0a4a..ac9fc9b4db 100644 --- a/code/modules/xenoarcheaology/tools/ano_device_battery.dm +++ b/code/modules/xenoarcheaology/tools/ano_device_battery.dm @@ -103,7 +103,7 @@ if("startup") if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0)) activated = TRUE - visible_message(span_blue("\icon[src][bicon(src)] [src] whirrs."), span_blue("\icon[src][bicon(src)]You hear something whirr.")) + visible_message(span_blue("[icon2html(src,viewers(src))] [src] whirrs."), span_blue("[icon2html(src,viewers(src))]You hear something whirr.")) if(!inserted_battery.battery_effect.activated) inserted_battery.battery_effect.ToggleActivate(1) time_end = world.time + duration @@ -146,9 +146,9 @@ if(interval > 0) //apply the touch effect to the holder if(holder) - to_chat(holder, "the \icon[src][bicon(src)] [src] held by [holder] shudders in your grasp.") + to_chat(holder, "the [icon2html(src,holder.client)] [src] held by [holder] shudders in your grasp.") else - src.loc.visible_message("the \icon[src][bicon(src)] [src] shudders.") + src.loc.visible_message("the [icon2html(src,viewers(src))] [src] shudders.") //consume power inserted_battery.use_power(energy_consumed_on_touch) @@ -175,13 +175,13 @@ //work out if we need to shutdown if(inserted_battery.stored_charge <= 0) - src.loc.visible_message(span_blue("\icon[src][bicon(src)] [src] buzzes."), span_blue("\icon[src][bicon(src)] You hear something buzz.")) + src.loc.visible_message(span_blue("[icon2html(src,viewers(src))] [src] buzzes."), span_blue("[icon2html(src,viewers(src))] You hear something buzz.")) shutdown_emission() else if(world.time > time_end) - src.loc.visible_message(span_blue("\icon[src][bicon(src)] [src] chimes."), span_blue("\icon[src][bicon(src)] You hear something chime.")) + src.loc.visible_message(span_blue("[icon2html(src,viewers(src))] [src] chimes."), span_blue("[icon2html(src,viewers(src))] You hear something chime.")) shutdown_emission() else - src.visible_message(span_blue("\icon[src][bicon(src)] [src] buzzes."), span_blue("\icon[src][bicon(src)] You hear something buzz.")) + src.visible_message(span_blue("[icon2html(src,viewers(src))] [src] buzzes."), span_blue("[icon2html(src,viewers(src))] You hear something buzz.")) shutdown_emission() last_process = world.time diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm index 6e0e1ceb19..41d4ad1bc2 100644 --- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm +++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm @@ -125,7 +125,7 @@ P.name = "[src] report #[++report_num]" P.info = "[src] analysis report #[report_num]
" P.info += "
" - P.info += "\icon[scanned_object][bicon(scanned_object)] [results]" + P.info += "[bicon(scanned_object)] [results]" P.stamped = list(/obj/item/weapon/stamp) P.add_overlay("paper_stamped") diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm index 53733810c6..bd79af08eb 100644 --- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm +++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm @@ -268,16 +268,16 @@ //emergency stop if seal integrity reaches 0 if(scanner_seal_integrity <= 0 || (scanner_temperature >= 1273 && !rad_shield)) stop_scanning() - src.visible_message(span_blue("\icon[src][bicon(src)] buzzes unhappily. It has failed mid-scan!"), 2) + src.visible_message(span_blue("[icon2html(src,viewers(src))] buzzes unhappily. It has failed mid-scan!"), 2) if(prob(5)) - src.visible_message(span_blue("\icon[src][bicon(src)] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")]."), 2) + src.visible_message(span_blue("[icon2html(src,viewers(src))] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")]."), 2) else //gradually cool down over time if(scanner_temperature > 0) scanner_temperature = max(scanner_temperature - 5 - 10 * rand(), 0) if(prob(0.75)) - src.visible_message(span_blue("\icon[src][bicon(src)] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")]."), 2) + src.visible_message(span_blue("[icon2html(src,viewers(src))] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")]."), 2) playsound(src, 'sound/effects/ding.ogg', 25) last_process_worldtime = world.time @@ -296,7 +296,7 @@ used_coolant = 0 /obj/machinery/radiocarbon_spectrometer/proc/complete_scan() - src.visible_message(span_blue("\icon[src][bicon(src)] makes an insistent chime."), 2) + src.visible_message(span_blue("[icon2html(src,viewers(src))] makes an insistent chime."), 2) if(scanned_item) //create report diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm index 51f23f8b0a..b420435bb3 100644 --- a/code/modules/xenoarcheaology/tools/suspension_generator.dm +++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm @@ -150,10 +150,10 @@ for(var/mob/living/M in T) M.Weaken(5) - M.visible_message(span_blue("[bicon(M)] [M] begins to float in the air!"),"You feel tingly and light, but it is difficult to move.") + M.visible_message(span_blue("[icon2html(M,viewers(M))] [M] begins to float in the air!"),"You feel tingly and light, but it is difficult to move.") suspension_field = new(T) - visible_message(span_blue("[bicon(src)] [src] activates with a low hum.")) + visible_message(span_blue("[icon2html(src,viewers(src))] [src] activates with a low hum.")) icon_state = "suspension_on" playsound(loc, 'sound/machines/quiet_beep.ogg', 40) update_icon() @@ -165,7 +165,7 @@ if(collected) suspension_field.icon_state = "energynet" add_overlay("shield2") - visible_message(span_blue("[bicon(suspension_field)] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].")) + visible_message(span_blue("[icon2html(suspension_field,viewers(src))] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].")) else if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall)) suspension_field.icon_state = "shieldsparkles" @@ -180,7 +180,7 @@ to_chat(M, "You no longer feel like floating.") M.Weaken(3) - visible_message(span_blue("[bicon(src)] [src] deactivates with a gentle shudder.")) + visible_message(span_blue("[icon2html(src,viewers(src))] [src] deactivates with a gentle shudder.")) qdel(suspension_field) suspension_field = null icon_state = "suspension_wrenched" diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm index 75e42a0b1b..ee145433a7 100644 --- a/code/modules/xenoarcheaology/tools/tools.dm +++ b/code/modules/xenoarcheaology/tools/tools.dm @@ -131,7 +131,7 @@ positive_locations.Add(D) - to_chat(user, "\icon[src][bicon(src)] [src] pings.") + to_chat(user, "[icon2html(src, user.client)] [src] pings.") else if(istype(A, /obj/structure/boulder)) var/obj/structure/boulder/B = A @@ -149,7 +149,7 @@ positive_locations.Add(D) - to_chat(user, "\icon[src][bicon(src)] [src] pings [pick("madly","wildly","excitedly","crazily")]!") + to_chat(user, "[icon2html(src, user.client)] [src] pings [pick("madly","wildly","excitedly","crazily")]!") /obj/item/device/depth_scanner/attack_self(var/mob/living/user) tgui_interact(user) @@ -269,9 +269,9 @@ scan_ticks = 0 var/turf/T = get_turf(src) if(target_radio) - T.visible_message("\icon[src][bicon(src)] [src] [pick("chirps","chirrups","cheeps")] happily.") + T.visible_message("[icon2html(src,viewers(src))] [src] [pick("chirps","chirrups","cheeps")] happily.") else - T.visible_message("\icon[src][bicon(src)] [src] [pick("chirps","chirrups","cheeps")] sadly.") + T.visible_message("[icon2html(src,viewers(src))] [src] [pick("chirps","chirrups","cheeps")] sadly.") else icon_state = "pinoff" @@ -352,4 +352,3 @@ set name = "Scan for Anomalies" set desc = "Scan for artifacts and anomalies within your vicinity." anomaly_scanner.interact(user) - diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index c5ec91d239..3ad6f852c7 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -55,7 +55,7 @@ var/obj/item/slime_extract/T = holder.my_atom T.uses-- if(T.uses <= 0) - T.visible_message("\icon[T][bicon(T)]\The [T] goes inert.") + T.visible_message("[icon2html(T,viewers(T))]\The [T] goes inert.") T.name = "inert [initial(T.name)]" @@ -988,6 +988,3 @@ /decl/chemical_reaction/instant/slime/rainbow_unity/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/unity(get_turf(holder.my_atom)) ..() - - - diff --git a/code/modules/xenobio/items/extracts_vr.dm b/code/modules/xenobio/items/extracts_vr.dm index bd232c153a..1866e879f8 100644 --- a/code/modules/xenobio/items/extracts_vr.dm +++ b/code/modules/xenobio/items/extracts_vr.dm @@ -60,7 +60,7 @@ var/obj/item/slime_extract/T = holder.my_atom T.uses-- if(T.uses <= 0) - T.visible_message("\icon[T][bicon(T)]\The [T] goes inert.") + T.visible_message("[icon2html(T,viewers(T))]\The [T] goes inert.") T.name = "inert [initial(T.name)]" @@ -1658,4 +1658,4 @@ /decl/chemical_reaction/instant/slime/rainbow_unity/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/unity(get_turf(holder.my_atom)) - ..() \ No newline at end of file + ..() diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm index 8f55143be2..51526cb0cc 100644 --- a/code/modules/xenobio2/machinery/core_extractor.dm +++ b/code/modules/xenobio2/machinery/core_extractor.dm @@ -93,7 +93,7 @@ /obj/machinery/slime/extractor/proc/extract_cores() if(!src.occupant) - src.visible_message("\icon[src][bicon(src)] [src] pings unhappily.") + src.visible_message("[icon2html(src,viewers(src))] [src] pings unhappily.") else if(inuse) return diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm index b8e5cfc616..2132b7e0bd 100644 --- a/code/modules/xenobio2/machinery/gene_manipulators.dm +++ b/code/modules/xenobio2/machinery/gene_manipulators.dm @@ -102,15 +102,15 @@ in_use = 0 if(failed_task) failed_task = 0 - visible_message("\icon[src][bicon(src)] [src] pings unhappily, flashing a red warning light.") + visible_message("[icon2html(src,viewers(src))] [src] pings unhappily, flashing a red warning light.") else - visible_message("\icon[src][bicon(src)] [src] pings happily.") + visible_message("[icon2html(src,viewers(src))] [src] pings happily.") if(eject_disk) eject_disk = 0 if(loaded_disk) loaded_disk.forceMove(get_turf(src)) - visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("[icon2html(src,viewers(src))] [src] beeps and spits out [loaded_disk].") loaded_disk = null /obj/machinery/xenobio/extractor @@ -183,7 +183,7 @@ /obj/machinery/xenobio/proc/eject_disk() if(!loaded_disk) return loaded_disk.forceMove(loc) - visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].") + visible_message("[icon2html(src,viewers(src))] [src] beeps and spits out [loaded_disk].") loaded_disk = null /obj/machinery/xenobio/extractor/Topic(href, href_list) @@ -195,7 +195,7 @@ if(!product) return product.forceMove(get_turf(src)) - visible_message("\icon[src][bicon(src)] [src] beeps and spits out [product].") + visible_message("[icon2html(src,viewers(src))] [src] beeps and spits out [product].") product = null if(href_list["eject_disk"]) diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm index c7b7b3c567..f402ad3193 100644 --- a/code/modules/xenobio2/machinery/slime_replicator.dm +++ b/code/modules/xenobio2/machinery/slime_replicator.dm @@ -57,7 +57,7 @@ /obj/machinery/slime/replicator/proc/replicate_slime() if(!src.core) - src.visible_message("\icon[src][bicon(src)] [src] pings unhappily.") + src.visible_message("[icon2html(src,viewers(src))] [src] pings unhappily.") else if(inuse) return @@ -140,4 +140,3 @@ /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/micro_laser = 1 ) - diff --git a/config/example/config.txt b/config/example/config.txt index 3baae3f215..82778e3fb5 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -602,3 +602,42 @@ JUKEBOX_TRACK_FILES config/jukebox.json #SUGGESTED_BYOND_VERSION 514 # Suggested BYOND client build (minor component, e.g. 1560) #SUGGESTED_BYOND_BUILD 1561 + + +#### Asset settings #### +## Asset Transport +## The normal way of getting assets to clients is to use the internal byond system. This can be slow and delay the opening of interface windows. It also doesn't allow the internal IE windows byond uses to cache anything. +## You can instead have the server save them to a website via a folder within the game server that the web server can read. This could be a simple webserver or something backed by a CDN. +## Valid values: simple, webroot. Simple is the default. +#ASSET_TRANSPORT webroot + + +### Simple asset transport configurable values. + +## Uncomment this to have the server passively send all browser assets to each client in the background. (instead of waiting for them to be needed) +## This should be uncommented in production and commented in development +#ASSET_SIMPLE_PRELOAD + + +### Webroot asset transport configurable values. + +## Local folder to save assets to. +## Assets will be saved in the format of asset.MD5HASH.EXT or in namespaces/hash/ as ASSET_FILE_NAME or asset.MD5HASH.EXT +#ASSET_CDN_WEBROOT data/asset-store/ + +## URL the folder from above can be accessed from. +## for best results the webserver powering this should return a long cache validity time, as all assets sent via this transport use hash based urls +## Encryption (https) is supported here, but linux clients will have issues if you require higher then tls 1.0. Windows clients down to windows 7 can handle tls 1.2 no issue. +## if you want to test this locally, you simpily run the `localhost-asset-webroot-server.py` python3 script to host assets stored in `data/asset-store/` via http://localhost:58715/ +#ASSET_CDN_URL http://localhost:58715/ + +## Assets can opt-in to caching their results into `cache/`. +## The cache is assumed to be cleared by TGS recompiling, which deletes `cache/`. +## This should be disabled on development, +## but enabled on production (the default). +#CACHE_ASSETS + +## If this is uncommented, we will save all associated spritesheet PNGs and CSS files to a folder in the round-specific logs folder. +## Useful for developers to debug potential spritesheet issues to determine where the issue is cropping up (either in DM-side sprite generation or in the TGUI-side display of said spritesheet). +## Will only seek to waste disk space if ran on production. +#SAVE_SPRITESHEETS diff --git a/html/font-awesome/css/all.min.css b/html/font-awesome/css/all.min.css index a5e67e693d..7a283f087c 100644 --- a/html/font-awesome/css/all.min.css +++ b/html/font-awesome/css/all.min.css @@ -1,5 +1,6 @@ /*! - * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. */ -.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(fa-regular-400.eot);src:url(fa-regular-400.eot?#iefix) format("embedded-opentype"),url(fa-regular-400.woff) format("woff")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(fa-solid-900.eot);src:url(fa-solid-900.eot?#iefix) format("embedded-opentype"),url(fa-solid-900.woff) format("woff")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file +.fa{font-family:"Font Awesome 6 Free";font-weight:900}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc( 2em*-1);position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border-radius:.1em;border:.08em solid #eee;padding:.2em .25em .15em}.fa-pull-left{float:left;margin-right:.3em}.fa-pull-right{float:right;margin-left:.3em}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:0;animation-delay:0;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:0;animation-delay:0;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:cubic-bezier(.28,.84,.42,1);animation-timing-function:cubic-bezier(.28,.84,.42,1)}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:cubic-bezier(.4,0,.6,1);animation-timing-function:cubic-bezier(.4,0,.6,1)}.fa-beat-fade,.fa-fade{-webkit-animation-delay:0;animation-delay:0;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-duration:1s;animation-duration:1s}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:cubic-bezier(.4,0,.6,1);animation-timing-function:cubic-bezier(.4,0,.6,1)}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:0;animation-delay:0;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.fa-shake,.fa-spin{-webkit-animation-delay:0;animation-delay:0;-webkit-animation-direction:normal;animation-direction:normal}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:steps(8);animation-timing-function:steps(8)}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(1.25);transform:scale(1.25)}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(1.25);transform:scale(1.25)}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(1.1,.9) translateY(0);transform:scale(1.1,.9) translateY(0)}30%{-webkit-transform:scale(.9,1.1) translateY(-.5em);transform:scale(.9,1.1) translateY(-.5em)}50%{-webkit-transform:scale(1.05,.95) translateY(0);transform:scale(1.05,.95) translateY(0)}57%{-webkit-transform:scale(1) translateY(-.125em);transform:scale(1) translateY(-.125em)}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(1.1,.9) translateY(0);transform:scale(1.1,.9) translateY(0)}30%{-webkit-transform:scale(.9,1.1) translateY(-.5em);transform:scale(.9,1.1) translateY(-.5em)}50%{-webkit-transform:scale(1.05,.95) translateY(0);transform:scale(1.05,.95) translateY(0)}57%{-webkit-transform:scale(1) translateY(-.125em);transform:scale(1) translateY(-.125em)}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:.4}}@keyframes fa-fade{50%{opacity:.4}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:.4;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(1.125);transform:scale(1.125)}}@keyframes fa-beat-fade{0%,to{opacity:.4;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(1.125);transform:scale(1.125)}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(0,1,0,-180deg);transform:rotate3d(0,1,0,-180deg)}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(0,1,0,-180deg);transform:rotate3d(0,1,0,-180deg)}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(none);transform:rotate(none)}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:auto}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e5a0"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e494"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-notdef:before{content:"\e1fe"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e5a9"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e5aa"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-stapler:before{content:"\e5af"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before{content:"\e5b4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-meta:before{content:"\e49b"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-space-awesome:before{content:"\e5ac"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} diff --git a/html/font-awesome/css/v4-shims.min.css b/html/font-awesome/css/v4-shims.min.css index ee29a2c92d..2f6252b52a 100644 --- a/html/font-awesome/css/v4-shims.min.css +++ b/html/font-awesome/css/v4-shims.min.css @@ -1,5 +1,6 @@ /*! - * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. */ -.fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"} \ No newline at end of file +.fa.fa-glass:before{content:"\f000"}.fa.fa-envelope-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-star-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-home:before{content:"\f015"}.fa.fa-file-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-list-alt:before{content:"\f022"}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-edit{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-edit:before{content:"\f044"}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart-o:before,.fa.fa-bar-chart:before{content:"\e0e3"}.fa.fa-twitter-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-twitter-square:before{content:"\f081"}.fa.fa-facebook-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-square:before{content:"\f082"}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-github-square:before{content:"\f092"}.fa.fa-lemon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-globe:before{content:"\f57d"}.fa.fa-tasks:before{content:"\f828"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-cut:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-save{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-save:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-magic:before{content:"\e2ca"}.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pinterest-square:before{content:"\f0d3"}.fa.fa-google-plus-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-square:before{content:"\f0d4"}.fa.fa-google-plus{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f625"}.fa.fa-comment-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard:before{content:"\f0ea"}.fa.fa-lightbulb-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f0ed"}.fa.fa-cloud-upload:before{content:"\f0ee"}.fa.fa-bell-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f5c0"}.fa.fa-star-half-empty{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f5c0"}.fa.fa-star-half-full{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f5c0"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before,.fa.fa-unlink:before{content:"\f127"}.fa.fa-calendar-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-unlock-alt:before{content:"\f09c"}.fa.fa-minus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\24"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\e1bc"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f884"}.fa.fa-sort-amount-desc:before{content:"\f160"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-youtube-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-square:before{content:"\f431"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-xing-square:before{content:"\f169"}.fa.fa-youtube-play{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-tumblr-square:before{content:"\f174"}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo-square:before{content:"\f194"}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\e2bb"}.fa.fa-plus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-google,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-yahoo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-reddit-square:before{content:"\f1a2"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-behance-square:before{content:"\f1b5"}.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-steam-square:before{content:"\f1b7"}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-cab:before{content:"\f1ba"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-life-bouy:before,.fa.fa-life-buoy:before,.fa.fa-life-saver:before,.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-git-square:before{content:"\f1d2"}.fa.fa-git,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-futbol-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-lastfm-square:before{content:"\f203"}.fa.fa-angellist,.fa.fa-ioxhost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before,.fa.fa-transgender:before{content:"\f224"}.fa.fa-transgender-alt:before{content:"\f225"}.fa.fa-facebook-official{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-clone{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-creative-commons,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-odnoklassniki-square:before{content:"\f264"}.fa.fa-chrome,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-internet-explorer,.fa.fa-opera,.fa.fa-safari,.fa.fa-wikipedia-w{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-viadeo,.fa.fa-viadeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-viadeo-square:before{content:"\f2aa"}.fa.fa-snapchat,.fa.fa-snapchat-ghost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-ghost:before{content:"\f2ab"}.fa.fa-snapchat-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-square:before{content:"\f2ad"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-themeisle,.fa.fa-yoast{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-meetup,.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 6 Brands";font-weight:400} \ No newline at end of file diff --git a/html/font-awesome/webfonts/fa-regular-400.ttf b/html/font-awesome/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c5ac00957778d6d0b317615275b6511277b246e8 GIT binary patch literal 60236 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 C9oP{7 literal 0 HcmV?d00001 diff --git a/html/font-awesome/webfonts/fa-solid-900.ttf b/html/font-awesome/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..43ba1cc7d94f6cb27d7e7e596c5bfefa242205a7 GIT binary patch literal 389948 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
    `}m6pgdhRBIgqU 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 )gyt!Pq{S>33jE z7`4`vD$gC$AXprS32Hh$j__5H<>eFUiQ`IA5T4ZD!#Rqflm zfM}BTdT)#4R9WsD11=VMS*9nWMUuX!k87|5yvW;oc?WP^fR)M4F#4sQHmwI|!?NWh z8c1b0dO(pAn$P3(oOS*)^{g|ADfWfEXq1FmVNsT}FRT;5(PKlp+?98DCpT}$^5iPT z;smS=Zl9LTe}`{&^e;f5-2J#VUX&zdQGn1r8$>}dE6U{{$cMLF3wq4LE zF%BY9<9>`y8m@L|3R1_|$STEn03}@J?vQx&$w>HN__vNd9F9EssQ3z%7gn(uj1q^97N@_Zp4B_d72kpxkDCiVL=v%6nq<~n8dxeyybD>PS@H*~-{TEo8Xm<3^_k{d~pH%VJ5ibZ$ z2qeq%A*&kWyOo**QtekvOn3&J130o1o#A<*p(0V7Z*-iYmK%K>XMg7Y^PG*H9sXW( z-R^ByR`y51RQqMDP~|&_Tc~OqRfFg3IK$%pCRno;Kht8{oV!Dsc6DDiDWJy-qtu05 ztH2!+yR_zz0q?e`r76N0xK0yV$FnPKa{LSds2nr!yeM1BJ^AdO9(i;J_qK-h75U@TR}o=4e<{)g zX4byfTlDR+w>_RwFs9qr#yqw#kJs_5)E)(%?R}qc{3^9jUy=14>Q_nkcOTHV4ooS0 z%n*NlU3l6A&J{tX05Lsr7RXZIu|{%0!U};3!mpz`E$(>zHaEMLdg0q$AWEQMTLBYS zZ3yf2?#gU0C{O?EMl9hVltc`lwD&)(Iof3|V3_px29&VIn+HzNjYgPVjmz~f>Kw?r zHJiaN_qkgPvdQ-yIna0X{nk)>raaDW-x*YlkKp@*(Gki(NQx2P_jroP+XlRy;Y^z3 z5SxyYS153f1`}mIUMfR78E1EOQ-o~*6ER>5JlA`>8whZW^azpL7&s1N`Rl$U{Mh{{ zQN}(LpRH3giW5FI3YCqX9dTS*Yqn=puEEzwwOO?teH*U_atz*%Z1te#k^SzZVE^#Jo2^I>Ol4)t_y^ShkWariyD ziT*S&VUT{=0x&&Ydcq(ETd)mCII9phVkY&gx}01lr|y_slyOM1Zqq2p#5adF?-#C4-?z7;ZXC#e5D`$AZue4;9xNi{Th?DDcO@pa$c+8;oZ{;|T3FJ|6PNqu%K3 z?2#k0v$%=-lTN=i4tu$S@k7&Ehdv$k`r}nCM6bsE-sm5=`@erM++#t@So*R#94>&D z_s#V|cn~1aVvs`t;i~SM)6uSTqm!?aES$MgT+P--SIL`(B1Cr zuf$HaplP8Z95NUZ!C~Z&!H@{QdC;+J^Wa9@8-|5bg8*?~E|N2t$$1f(f_FuTvhvU4 z{7@vENJQX@D%H{t_{9T4+u2d$oa-N=1j@qXSqj_Lv`}0h8%DXd`@sV(4*Lp<2y{dV zoX!b5TIX9lKj8U*=f^!i@44#vJg^Eyg0^J|M?p9t>Jq^6XxWw{&J-5i zlhMtARIugHPi`wH6|Tai1%KM#!7XGH-*q`vRN-&%+xT&P+ana0$7!o=O%riiIsEQR z-L?P0ivUc#BGWGd|1Dx)e;ZZ>s1w0#3#Ja017Zbo2`u7`O#li0fD})MC@~{s3Y*EWN-7LzPxk&j$@D-1-=^8nU%z5)kZ!so2Wb~xbk8h2W;?XVR%8&c=I2z+@KTg;6{qGj#y>6I#~(G2#K zU97(@q;-&gq#X)pz$#JZPWRBG>{cN+B9GE@g~c-Rc6)dA6@c~z=CQLNE1#ZwuK!s# zBGj_?9&la{=hRo}t5|ulS#ffkkgaWUF3tLZM%jE_zV3(9K233fzZUx``zUB#J=5_~ zAs+~M2RDyG*J-Ot?}bvHE$VljyWup9TmY9GkZWaCvkue5+jG}PpV!~gHKUI$?yN#E^*TS#J}0pqu;ct1N*&d{C-O# zGF{qE?*E71Z$a+KBAflcK%21uY`yAvXj0^~ZaPE0APcdqAOuW{uytJdpy$Q0iV2i~ zJ0uB%#OZ@@LFQ|aw{CJ?NmYtNA3mT$ozjg)b5rFu`(x_?MUNQGQP(;m*_BBoh1_A4 z?6bV<@A6mDE{~93I0cS)iyip!ou{&)=!N- zh5N@!#X`>TrVbuByZ0@_Z~#v%-nUdr`@Et5T08x*a4HP@k+qrrfoGa>#i5_kdWNHObs}%NdODqltgzmmOlql+__`UbW4@+0@a|zSEgb8n4shvUpkln@-v3I@`4-^xL zKXr^k>>W%&l$cNlVgP`!@J}7x=lSdR+4~RC=a8*t{$K60=ddn|pLq86CHriO9_J@u zv0VmccAY*M?v(bv+9)?GW*$?9dQo%#vlHo^RO-*EAOBz~_1+)&%8eiVft~NO2RpsP z^gmCfKFI5PZ}{N5X{s{V2fpBeepTC@l42t2<5r-(n*g_R?2#sCh=D(#B}2ATK$3z@ zK*8ya5s-*KY)GOi(`kZ|xm5^C7NwaOwP<0RJ_riPhV&$AqHrQ-pfeYMA|r@rOYBJ0 z8}OSEAkO!rt41zv1xz#QtPfYI_m3`hVPC24ff^GQ>`Py=MtD_1J7CtAy#QeKWe4qm z&)i`vqQkbQ5oLyO?8rXTB6}3RcQBwrrZ)9ng)tW5Lhn~_u+Nn(1hQZv*{@JgY!%#c zIfhMIs2pz~NCMHnT3WiH%09=sF%D++>=I1law4qjIxwo)9=B(p!Y zi10rX6HA*P^#^g1q>kfJprEh@;xGOi^#b}eg$L0G=d!eG!JqU_AedT?y7HKT&nIzu zDwSG0a`*W7-AC2{oZ(RN^Kf_3^X@=zn?8E(#qc5WQ?#nh&14Bp&xX8Wn1qV;t7`n)pHOXJ> z?>K8lCHgOj{Y+2w(eEfIc%Xy)z`xlkgfACMD|5IBYFD=0aJbsZozWK+n$P)X1e$fq z>VOj{b0%U4m@Q1jC$Ut%rao(heO^nZ8y*fKS5i6(tGkz<4 zIb_~Dkk80IB7W;?w653Q#fiUYv&7CoHi!P)%eb}^cYW$@;n zS;Oa7C&$NqUelkNuh-Ytmwd)67qc6IfEjxuOo5|cg~1-AIA9SY37GK>_d_jPwWZ`B ze+32Sr4OK4`IpXR>mtt{?inC|q07%7?rO&-wTJA~z4ro|4s*)%FEu6aW}ohXd~>j8 zvyBa`CXw5ZZlfb_-xq87I*yDU*~bK;t=DPdpW!uIxrf!$_;@Ing>U}rwUOEax-rz6 z0a0|y=6jt+zVE;{uiwls2ZQ@r+3#o^L66&xO0>$~nvF@qi(>A_vXMwS z+yXYzC>6gdp>MCTKp?=f$E5anJP>eB&+JcUP1kg}$)nEZItKpG_c$3=H3%e0s=N^X}@A7 zVmKCZT%+suT%~=v6CsaR3H`&4kx%Cp<^_kKv7u0%VRV1D(F`P3t@T@TL8& zdFjrHoMRX3iZ)^M&`7)z_^8CMi_Ke!?Xm5`95iFgyP$ro*90r+Inblr%#?8ug(<^S zVx!T<5Pznzr~Z8%1iCOFpPpLIDqrs8(o#TW?>Dku|FPqD=9D*gw%IJrdUJ=^a6PAS ztNn}66q)6zX`c^{O#RDCC-d+EXJqd@emnpYU-?S2&CRn=(c(XcPv)Mx>~L{57-`TN ztR)IEfPCdR9x%xDf?QvP`=2Y}@D;fFIaE7#=_*N}OE@TKUb0LR$|0{bi25NPP62}2 zN|)f;YhFM_kQ~Q&AGYH#3)(9w5}@LkO1mtj<>C~rd2lYZLku;bUxBi;j>esW<1-|a zm5tx}T+FK2>$Qp4hW5`6s@t0)wv8xlV}PC>R}EKLNP}(b<0JvgrQO1lFlf*vjke@-uqge`hGM!$(BM*~T8Rga_H#<%%7+yJzgtKlH zfXV1~ZAEc#Eqgv2iNyYM0>(eVlfl3n&c6X6fx3iRw>>D~_AxLO=d)mYBe7pNfm5(X z+(7n6Egl>s9?)&fz!!pNG!CS|oD=BwAv&B;;Ydd#x~hhmcW9V;=M5Ulcz}3xOZ(r@ zIc|8ThKG0P^7y@CxAlug3%#hbX;eo&Ap>j`j08wl`Zl#U3(s=%~~vAJO|XB%y~ z0^bOZ7sE*7_$Q$2Ru^=@$ZT#Jnk?_s%F2T{{uKU%Y5oKn)gNdp9892%fzdQo`w$Lj z#&3>A=gK!M&d=d6k3aG~rJ}kyj>DNB)yx|ebK3A29=|4gq5DiYLmc$ zI2a9|qWfqfH25%^7(aUs$Z>!N=14{TG5y=$J&c-B=Z^V8q4-Cm{$sviD1qx9YQ{~U zxbGVuMerQoF@N-<2#Cciy08b9<_>`+v`{z??5`wZ57{6W9<@Rt>rpy8yq55rq0!Lt zJC`l%a#%~9=+Dp%%ZGg*8b@y401q)0J>>gkf8rWF>)6dOM}NQnmm=^A>t^iz{$ci# z(tmsJvbn;}{`E=#xo}zghNR~m)IYibfBh)kKcc1n;GSB@f9ZUl}X0>_r@4%Hl92B)Zf zp-I4JJd&_XuQfMYiN``Pg@6#=k3;Ps1-*XLGW|YpK4c1Kto^QuuH_)l4Itczzkj=Rp^H4PQ7MV*?Ci^Fm4= z1lK3~;kJ5)I}Bh)52HBv8ptYa@ER(Y0b(O#^N=z2^N# zbw_q~>?^`mPlxjJ#pA(T-dbE+ zH1m1u_@YkCto!@{dJXd(&nChXkHt-^9Z5{?K1*+H&wk254z`KsrzlEz_F4XZO84x? zS(H_Ls&(W@YjP65_PzyP1@wC!@q?T*yjp+kA{PA{`LY;qajZK;B)09Ar_<4NVh644 z?>dwP4gqvJsNN$o7pdP1Zf_pv^-f@;*ys2`$RTaFk;V>bpLL^=h2>g*Xdc>w(iC}tKG}a7Y=>3xALk$XP4!oTE6>7PR~z%c zDd?^Yibrg}Km=x!Sb{ELhJG0-gX|08$)E5PDEy1elhiKi!7D;nDDBzWf4L zBk+g=lSO!Z2{Y{y;5Ky6wZ_eG(3I<7wW0a)ka-HKFFdU7z}h0T!w6CM&onQYK!q_* z`@0i~;w>PBu|h+0>WBuZ{(mZmxTX=7I23wd`69hdp%%P!-ToilM52q;AAs9CM5+z} zR|T-fmx@KsuMcvUedCjMjvS$L^qY~yZXrESqL-kB*-Q1^jL*}EzY}^j*hAP&3En}2 zi|BA&=MhoymKTXFx zw;+P;sMs>;A*eWKJiG^!M&$CFZXje4SB!HqoM7a-a63y_u`ivk=|}rA;4Yx}3RF+w|G8Bt2xQvEE41XvHM?}O2IzN8*1`_Fa4uAKHWfu&>+C_t)Gx&fjKjCW6 zxV>fMxVf!Ep!H{mM+{Q);86PAPzo;m0F=T5)c%2MIa|iak!tN7*8bZaFbzdw12EM~ z*}Al6+^#cFdtM=|uO6bX4W1xMjts!l##Ot3wHePz>{X8f(~5wKt4@Z7N_=nuf{erp z2jbAWwvhl5v)3tCC`q+)miU(v(+Y$ZZYbM>>NYDJbg>s{X-H7;mWJ?qzCe)HDHrH0 zJsvMWo?(R}Rw6nJ$BB$TO%aobnf8y43&h}y-Gjllu~HlMIhNSxB-I*#tECEK3lq6) z7(T)AFNnI~sA6GkY+zJY3%dbri0t$*4)E7M!kEn;0#h3CQ%unKF2=0il|iHBQONO?4^aMTv&^E6rHh>b}YJd@s^I62Dr5g^- z79ItJ@gH;Xm*8$g5icMdU=8rGqy+?#FChA5AQGKUAavjC^2Q0-#b=;80|}po$CF(_ z_y}nVc!4Fx*Z6*FVlt9~VxAto3u9x^c&=NBjf;(eKMeDvf}dQACz-_v>cR zLPQ#Nm#~1egx9b8L;E6aV`PU|s@26$6sA?%8%VE(TxIv$u0ElM>Iryvh4v4Qo6x-z z8_TokQerxaJvJCDPOl9Xf(}$v(hJA{s=>IEt*b6quy|QHtY*9PjNh!@8;ss zu`w#~qA-U`MJFbvSaT*CMW1Z>XbUu6nbZr8kIi5?+uE*yIMk7jKyWH*=!+VA+j7tj z#b}tFw^0uIgkI(9_VH+|z?GsZQ4U`5vxXp{B4YcIe65~TU@D+6Kke1*x97FqCMeIX%e_*#Rj;uGE zrHXATZp&4^DdXj|-aF-P{BwgZA+EdO9$$QeFxZ2iPo6P^g-iN?HVsq(MMw_kENmh@ zF>y`l#5HlZKjaW;8)MJFDR?#`TmWpGYawO%ea6D9iKq$@uh-m2jEzl4rpLw-8zzH` zM)x?gJRTdn7vUdFR&@Lc7{RsmRJNV# z-u~W*{vOaLdWUVlZl8zQ$_LIm+FpC6oIY+vbJ_9f@oX--<@9mN?%jxfUF+ypf34>9 z?SUNV;b`swr*AcT=kE+yviF95%Z{3KuD{<;POIPArgBSR!knvJ{i z4C1y!ek@!8;;(O3%mXS)4eB>dqz~$G*FWd3kM(lR zP#$;{^hlL>$Ce-iRQbor)RsVGqWMJGDE^9SdJ1Y05cfeyN&-vp*Quta*4B=}RLNId zT|K(J-hdaYp1weqg3CL{jHSk z&wajV81@&pOM$=QX#G{71a*bvGmPTAUYS{#dq_S#j=Q%0{4iNJWbHCA`mhcF?ht1x zZ5{4tAk81C#OgoKutr)S&#*?<+;ce&oyico1-8Y=KpQ`d^2zNvR3YMVM$EY$s>vQ4 zWalI@H}($Eurdu(|M)(6k25#gV_f|XEc=Dt`L_zgY(ATyno`utHG?_U!zp2|8o-AWo)cs z9S2^Z&C`kHrD#1eHCYkyjk6W;I?fV-*Jmi1LA55U^Ty-ZAD%ECOC#nIzq+L05pQW~ zI=B{r8#~%L(fM5&i~ivDhGF5}ZOiNL#tuWdwO)B*%A{{0g?E;gBe@69s5f;d^nyqt zN6YZz>Mf7!L3rG``civ^`9XvQmc<0;&-yxAst+MDMKZ`!lxrwBJ7u#!Ff~c6$LtNb zs0T zOFaqQ3fNa1#Avrb_O{!_mYPYYS7Nc1bb3Z%8N%up2B%k1tVVR&-tk?6b}&&uF&nm> zHD5ujE6+%6F(^$aE=iM}5{EeOtO@(QH66o|-9;R(&M1`^22;XSd?t$3LhzO`O4wM7Iqq37foQ9p?xq z8r}w?$vOXOjhZe+;|(lP*!bY>-$bLkIbUF0<@>N1HgRe$w@YBr(173fR9p2{73j8> z@>}`-cFyvrYEV{vJ`iY!3kAcHkQ}eVBY~2shGxF`hS|u_Wv6Z{K-@R zZtW4GFS(UeW7rlVX6g&steU_}?4WRMn)qm(mS}fuHjVhlRP!OrdMJ=g26BaID;p2~ z7-Ebie=HbJ1Sc{#+OIwx2sA!YL?tSlE&d41WJUIj#zQ_0_&)_JD{c9StpF$h@Q$_M zjImZuL7*Fup(YN5{$xf$=dI<=SP5A_gu3V<(n`egF6lUw{3S|&Spms6U{w)v_EN^l zlwsiiC@8gb+zKbshT-=mQodv`kbrVY1hw>c5q={b{U257{%*RG5twsDEbxe2y`|vi z{v&=Um|E~$3g#jhgqzZqnpA0@N~a9}+>{XxC-504p0Eci<}wVg*MQs>a$xw@M=oE= zQ0JDH-{6Sq-60LMEB$LEUaqi(2)Z5!CTag*k}nb3B?Xv12Id4W0pf!#CKG z4|%hvjM{N%R6(_ZVVx9Jq(?m6sknk2mh-UV+{D$@k*Th{pvQp1`$8-az9klGIwYoc znx{Vkdr#+UwPC$iN2a>+ay;Gq@eP2!m(4G7d)N3BYup{0xV%esma`go-NDoYw6YSO z5bSI$1hRR+^xW#BRa(Wt(eUj6saY$S^;ZjfM zXtO`mkL_Yzb;WM=qUS#Gw~w>vz^x?I012CzZv=bZpJMYkuZ3n6B>BDk+se2?axiG3*CneT_U7GrZ|^E*E#MGZS;=*-|c7nk~;w_;GkF znY>iUT}mb)U{ZedK-z1>;<;Sfxn3@WV3JlqrKmcBt9o5&VlrqZ6D8;Ry<>$u)CnP+ zrq$PfcN5rQdaQ{rRBplztM@}{3lc(`t|3|idYwNch{MZ8RU4|v(8a!H_0RPXuUm~vNv+E?a z<(v-BXRs+7Xok3cz+q*abZJ%)wkF#&?Rz$@i9|l~7UqM$)Xrqu@X%o3N8!M7?)x6k z=N^DJl-V{CXW!;CZri!@wukP#^Dl6B#~rt&@4WLlT=4Llci!q(PtRG_Tzuj3e0pS!ns&rDUR>6w}7e?QkQzW$eSgU27bulV{| z1K_IZo8OhaU>uWdnyB_a%*{#8Hwv%2zUa)_XF zE}lk=;gjJ6Yzg0IA;!`BVA7Zfp9-5+I(`n0%|Ya|UF-qq!qg6&g(c48kWu7EE$c^d zQRk7Ma6&tUhH2RX+m?bq#^abRF^WgSv?)C1D{tyEmZl^!0RZaPa?fFAIFIcat?m2o z-)5J?z{+oC+6|Ds=f1PTlP!-<^VS z=8y(6;emwFHE#h8_7LzESYfgPjtp=keZcUAD2H4#Xe~{wWaeQ z#rB(90n>fS0?%dS9<@m7SVfF?$7MhR+N0a$8w9x-96o8oC%HqN!QXjDzt=RA{ML${ z&J}T@0s5!~pPDd>!Cblxa7dBBv_;Amol`1TP!q_smQ)_^T(RGylDI-92sAq#d#*c} z>l`Tkli0&tL0U>25pAmj6F?wm(CS3}!1vhHFp>;m4;>&c%?b>CcCR`;Q6lZ3vCdXL zs+Nu5bkLZd_F7XRV_8M>A)_!UX_EybG~Vf`R%b|3@=j4GblHeL4^uts&2I`R>-i{x zMLqHe^nH&!VyPGQwfzJm(Hz!xZRJRNVC^-)-l>}0g`@*mSl&aLU#r!@x`oDr{)q{H za6AM?uD&nD=T98ggZJ<3Ao{nmR#q&9IN*Dql!ZB!j{c`XeGa@Ui<-@_+?@UGDve*efH+zrC;a|7nP z{^+VdX!&2|_nkg$3fhB$sN@f6nXqG;nHx>B1F87)oPi6wIH@|>JQr=wjgw&ed8 zA+wo&@~zXbT)v%4ng4{p&~TIkU3$v%DtdK1WKBS3PBPBsy@l_{!i*dA8z~BTrXH~= zK8!@ofF%z6CvS4uLstvsL~|c)IhpYtEly0Pyk;~wwO*eNM#E-m za-yhqIIlza$YL)B$(1~>7 ztL-_F!5og6!7gg;2i6kpQ}az?YA!TQkI$&XChH~``dL<> z7Kzj-Gn$=!8h1?LJ!D9++WKJ=1HY|-07{{3EH*pKJH)ZY9V@CSltUi^#1Fzd9QWJ^ z4fksh^_ZSqh7JIzH(~23eBTBWfn8*vTc?uDIWHaujTkWV6=ucKLN>snNzp#;H!64~ zxv>|cLcHbr+Xg5CQGzycaAQS%MXQ>kXI^v94H2!>iXJtLqp&97Q{;wwUUMeuPXD>W z^kiYHcDhyD`jDF4ibl6))fZ3KwhEKeNZwWt&=15`*)Ymm4`dL#2$701SwxGCW%KT8 zUe0H4lFIRs*R%eqDXG7QitSJQ?XW2i%V(l7ghk><2`~70@rxMi&oHKXT1yasiZo>= zD;Km2R+6PFmxX9% zcfhj6uV614_ND9fvn;`qXY2K}?IzDRcINCQ`@GZa?D4G&m(HFU^WiJfUJVcv{{lfHLr|Mj#Be_kZbs_2HC}P`y+lVW^+#KM=QkM&lJBBi)8k zXukigB`cc=y$Bu$W zx$o5=L=j=HVU-4hZ*0zxKQ(f1PSSj-oXH^k!)wnluGa;e7=jZu&iStBMqhtIsW{4p(!%uENGh>wYqOl^eUGDFdj=c#l`HOj zSj^!D?=D|X-STmibykXNC#(=`5l@v&`8~b z5pB{xA07F9Q}^|obkE1oU`;&t+(X`FE~c`SlglZ^S}=}72H&3luQ(ZBtqZ=|`P^4z z26ZBSi}(k}gK$--D{LS)PuZsqun*=dwye3mxB-W+5rDLk3BMz&A@Mx z>=WEe^x8klt-`^9*lva%8g-7kntCmjw68?~Ht5|Q{k!|QI)NOvUY^(L#Q$9L`f%vS z@cGtgvorL(Z~EN{<7=jWPo;2puJM&_cb0lw?0b&ppu~1+bpcwBoh_3^)7egq$T;bw&dV1MXKb*9Sn=Ea4ldGn=`a{g_EzRAdE4YUhsfafi+%bjx zt}JY6mVae>O7`QSeFmZ*QHR~kH<}d_k^{_~CQIzeayI9*P(ol)7Z6(*%2jmL1fYI; zragVz?YEsjz6A$rde1no4-m_S`g3=W6~@O4V|Pz@&rKBTH{Mt;PMq^j{MY;LJAV96 z_iQoTZqA?I+A7bg{wLHOrg?{2+F0MIrW=iPb!UBJ3AO{|LupgOcv}nbk<>!Ot$RVW zJ?VLm=Odn<@;r~Vgz+9|q?}lAG8G~k(Jx`khPfH!Y!2>_O76&h-mEm-53VvW$amg| z(=O+Mwpx2y;Hqt*A{r2mE~UsIhc_ylkVEVH3fL;!)pf`ixTy{quc?w*so*E_1-X@< z`-XYH#Dows7!mD>TJpBP!D9G{^rS!~Y(!L1Zt)Z8zuT!Gtb9(Y3afv9)4liHbMH-& z;8HmCs(9elulB3>t5V^mVC1f0uHoHd!&-X7TUS<2bc(Gu*RtG^yj5RV zmNOTkB0hyu`p*R6k@a$F>0=$}MWkE(E@Fa*qoFXp19pJdvE4uj)S;bs+fFjVp(qXk zsNGhpCK55kQRPyu)h-wFh1^)FbaX}U2p}|s5O>tPD@RMEv0NcvWSDsmOGt<^mmG|+ zk3A!;CDd>+r^zCUtL34Q9|$u<(g`^LyF+K*%-blTy}=eYEBo5ATLQbK7DG)s4b!w0 zb0c$`*Dh{wDbi%>b+1F*&J#tQqUjN>JDdS;zk!u`i}+gA@zc18$!ODMx!5$?zRJCz zr$s~rqru^Aet7Fj1#ZGzK}lZ%v8#54E+TR(qDe&GdJ92=uC+PV`+mCnp5-y2;xBrb z8Ey;}t=nUL%8?LLkhjAVgzP+A(c6NI_Te{|hhNtF$k$=>L4E3)=MLbe0cv%2K^>X_ z2mzy#lkG#uBn^ON!50Fg1AU53*g3?M+IDYbDwX})i6Bz9Y{qrB^`RwzuGQU$B^ z`i9!v-nsqKrQ3J5sl0@5=o`=7a?6c3HhCWmJ>YDD&b6CPl?k1!uBlYh0$4|b<#c-X zR1yE3652JmF)=YYaWoj>I}d~dwybbej04X|ODVrV0DzUuRo4B0{e@{dY2(m`mzix( z1!||iyH^-20^S#fivQsqR(^*QD?dfv?fC&b?0G)$xXU8^aoHt^5V^}1TpL!{9^Q6_ zx2{yzZSSQrNZuB6wH%tJgS~Se9$0YhH4VW8(E;dlni*qBQPXAC>a)Dq9;}tQk;j^& z$yc+UCI*p^w4a+htJnP?GObegx_ncQ|84)zvrzjWPHoqTPJ6x?xBUaV!qlqsL#NYE zey{&uLxRhowf#RC1gbRzo_c8aI4!r)YD)EmkD~lfjywnkY>GHV7|e>d8 zw6Ryeg9VHxw@u}PbJO(Srejg?xbMlTUrs8O#LFS~5bL*~@5dn=b!Y#VUHtht&s%Gm z%}Dyln`8X-IyM&J&v}oL;}|!2k0GWNMHvHZay9Se(B0hnak$#f(+A)D#?giO`Gun! z^N6sW%)@mz?9cb|8pB|i~Kq;u7!QUUEO zLN3?BoX26O1bb$Y91=rP#iQeY!>&sYt}wf}B}N5{QQuYbe*qZ==GO>)a%}mDHVt&I z=;`-EP6KXfdgjQJzqvN`Y0^}YWHSDDbLOKTpk1&A0~m)xsC1+_<9&k{B3eyb00PmT zJn;Avo}c#oIv_z5yxdtADm9XH_~W6)@*(M9-h=>^fW!d=E5@!&(t_ncZnF6R9Q=*G zlRX?+@g;tdrG{5gw$qvoPFI01L8~0n2-Sv3s{*R#hQMD~xpodFJ)<#POAwj<6+Vfw z9Wxvb!1j04okTdBoIwDbOeUFt_22NCWW027X%SEI-HV=sUsZRYHE=7802DZEmP|w> z{?7iC%iDs{G+xuc*sjLUVUG%h0`R24zKy&)$3DO%0X25S2Ci$s5fPY(;T}|hgAE}Z zaQ*CJ{d9qgfI*wuYMH_hvD2=&&av5HIe0L4Y-Yf$D@pj{3-vilWt(wh56{ZmKzE%!BSS3*)`RGH|e-O)MCWH)_=j+I(|=5 z{Y)rw^7b1x5#U=PNMh_{IP}b4s$Yp4`g}`VeeK2XIde9a_{*P(gqM{n7B@F7Ck)OLaiE%?WQjIF6tP4XUhvvUX>z?x54O`sDJ#S?zW(fQC0P)M4kTGB@anKhBa2Ne|6|I})^173ph)?8JXbW*H9Gv*E*$Ei1!-dY=_oz%}W+p?cq0CIcUks)*ks@Mp z{zk#@O=oD)otd6UrvqmaIC}OQ7aH#>ovgnJtYPBU{q8y0o~!;yq*lb~0(+u-8#qn} zS-Vwf;WPMHzvp~Kt|v2*VEROQ3fr#TfJA%@+fyv~&_kV9z7o1BuH_=u@@a6k_jumu zc{jZ!Y57}Lh&bXQK}G|ax_#QxRvKc%lz7}?b*R1MdbQJX$k(~kL;PzWtH6QHg9c34 zV1|L^WXmCMECLnmIK_ugp0Zg-U@81hwybAg`78vOI(714vRUG0>gr{k==jdDv#=nt z=-*bC=w5!X0|W7qGi%{p7ys;>MdylF|37nY0w(KO*NN8q)$-N8Z(UtgT}xM0?_Jef z^*Mc(%Gr~Uo8tNI<9c9IPpQzK~v}ce*gD-tE-n20&<^w(>e9+-}f&6_rEWEIWLQcj#x2yX1&56 zKD9@akCQm3f7L}J)rqXVgZ0mxs4H5ECAbZVt^`P+cEjumF9PEg*-~NhG>fg1p#Uev1;RnWJM&I(k!_E_( zklta`nVai8t#;J)3WNzLaS#SZj%5I6Bs3zaY{lbc&zWtN3Ii*| zx3fw-u2fPTCtmpvL+_He^8Nik-}CJLx8vBzg&dbT7kwWG5*F%A3{;cwd!=*QAtQyF zu!bcyoyUlQ%nT2Z%gSEBh&+{NzVTinE=I=OuU>0>cJ_~hNX>h?@(EzlRQOdnfG*$G z3ws_rbOeAz1vXq5gA8;uS}LNhe^6ZwX#DTO;V*}gIrPhB`^S5ZaMp|^ zxiEk=T;-J zAm7jL*vVKVZ>f=Rcm(sI*Q>}}r(tKh2|9jPqYGEc>i>L zJpaC@DwRhctyG>;4ZP0E*>;ZMRq*1D>#@=?apw>R^)AjD0o;2Oq=MwQIHD zX?lZ`M({RzfuDAKksX4vrP7578waEj5ANgJO4(|40`hH~vAnz?HG5mxux#d~+%A)2 zTT0~fvn51w8h*S~nuR~RX(#;HoxGo#av2;!Ttl7kYcNv>MiNBEp|jMvfPvS^`{>sJ zv_L2q%)lc(cfbT1SBMKJNw{+XKT3-rRYdFURlT@UHfc)*Nkhvv(6W` z@!|&xsQ>u@zSicYtB5^>XC$?6{(#qus6@Xno3R3Mm{!sNaXT6yO$?hFRr`HDcGJGZjZLfhh3pGN5SHnf$Hb74z@7LZc{RF0Zd zqU$kMNl;2Efduzs%5bAuOng9XSPPvSZ|uOW3638SVPOmsg^b=kIWeIw9}w2!yr0jV znx7BXt!M?N4D)2vs)y(2PaP01UDnmB!sk5!EdjH0a~T6o3WXwIQ7izcb;Uw~7P~Rt zEp1E!!;96eKDCkXc|)Zmb1OHl&MIqu^}@N8Ij^_ATJ{GrZWaIaaitu3E9y|l74f8zMcY6)vwPLRl@Z0u^nHj@0XuoQjM*ALpy$vYU#`&!2v|2+{>{+z(Knm9 zcp)$Z!~9^14uaE;o}QiX^(8i9s(*ztn|T4Zj$E-Vdg!|Z0}k~O>1e=qVeRS}mgNEknz52& zj(2Bxj9zbCL$Z$G1IyL({A2Kq`=hAMm^s~CSZE@eH~^nEUm^o%?dbie7#s=*vxBp6 zje$XQXvXxe3{l~9Hi+UJY7h@6*vt15to})SbuwPwz)tvDn^i2 zMe`l*r)XGRXr4Ch>R&!&4BcE8mccW~NBA$mG-751fRT~p@DlqFX+7^!`mWH^Wum6F z*4V6%0>nALI%Aw|ZwDcdaP?QvOmLm#SR37!HtI`aM| z=t%|i!3nVoX$QJ=-f$tK5A|g5oxxk?r=r>k*Kz(6+OVaEV z5~pOtp;~@`z27$sE9gt?>VFa5M*5P{h<6&g0bpK1+gu}vIU(AHPcpiOWBdtT2H$W1 z6n656L9p{9VXw!3JPel*{SHl!r624^On`=ya>cM(*HY5-^7G=kd&>=iz|+K-O%&W5LPk6%vEeXg_!|Z zldKq)&D7Kw%231}LiK7}58oDnvwKyM=^}Z*?nOhqSPHyYRMiMIw*`a!2Td=SKMgST zJ2x{Bx8*Qvhr)YDO)zNp=1}P2{m>{h)znGN!~bSKHE_J%&=DZ^=jAg6Ngm4K?8U|( zB*OklVo=Rb4l^;}*<5kJ$p&PcI4b$4RDfl`A_B|IgLyj8-bJGtFkAJCd8)kU z=cxprAKt&Tx6SSSeX7bM?cqmczfF8XxFZiSB~hy4gO`x{w7QsuQGy&-5;!jslqklr zD)#A1sdd=F)bDT+V2i`POKstb3fTzz)bXzsPWX1~f7twgu3y2cBmzB!-I2Vb-j+E6MKjrgMVTEr3WSJ;djz!$2k;;1NJnU%fxpN+BGM&kmMtS#^ykn|H14B z-^tiGc7ATI=-!z#m-V6kHACney?`Ne;KU5sCg#EH<0YJy!TWo|2f{BS|7=gKLrXhO zjX|Rdoi$Qz0gkK0^F#JXqMj<@V!12ATvfQ5Dyq$GA+$wcS#1(JorXh(>dWy(5*QtA z-e>UdB?H1R8;FH3Zcc1LqTb@&_#s^Xi`%x&)Kh35<+=ZN+lJ8m?{M5I+uN|ef3I71 z$ec1CK?d~kh0p2s`ug_wyk)?v&U}tBw5u(Qsy2O*2kKkI-N;0tX5OMmqlXi~SNLdil-JZ3~MPNNJ1_`y3SFl;$wj7{2B z`prj71&pJ&*}*i*#H%geH@No*@>-xOkSF~8_uDx8h!l$F`=5s6_cr~7y^=zZoTw2t z*~y`3I3ecd8u=@&kMju)9g43Ly%?`aRfM%hV@)qNYGNyTw?aLw-hJNd6{Iw`rl#Qh z&V=uLXkBB6bw`MC1oYa^*{OE%aOWP@!>j&AUYqpC0AG}| zH9t2FUBtcMo=smNWa++QGId`u%et>vshYzV>4i4ggXe*P4|zkywC#)gn>IMni}}CE z2IA+xnw!kIxj^!Ib8he^b>P$^`|o+=5x!A=`X4qAPEP8R@oZv*=Te1ca_}UEM)O$U z23SY3f~APLcDypE_lNT%d+n`es2D~tL_%Hai-R>SmESC+UXtPtv}rxg{0>|Scqn(^ zTH%}IJ9;~$E~+Qr+7`Jzr+rX~2sz9YaQR&k5tnl!$!P1XP(HcjA}I98wQO>4hwvmn zgCp6IQ=4R8db~rIoPHZeKB-7?%;7M_d<8>sH0~A#R6>K0 z##$o*HFxIBoWshPh@Rnds`s)pXTYs0{L@Vfoti&$X8sg2VCh%jckj9W`_G&ywL+m* ziEBXcgVXL~5-~m$?ejugZZBf7z*j7nSQL_letZXA_}eGq+p#CS_L(z2xVgOWj%-4& z6e{Jfy8L_;iXZlea+8?{=D+xEdXp2Ph_(5`r{T}P<7vPw6emKV38VuUo`d7!86}qP zssWi71VR#TAq|I=sAoZfqD@k-VX!#>O6zJ=Isic8*7#%`fSm&{RzU}(BmGSPlmHe6 zoxX)43qp{EgCoJZx=dIH$YWT+a**7jdyW%9X7~V!4icrSuH`9MF~-D)4l9lE6_FIz zTC^Y~LZY(5+iz{cxpH%}RarWli{@v!AjMe(#YIqIB%1bR;C-L4xyyDDHg>=#oMpQ- z))lWDwr00(2;*1KMmV5pPT|@|2pgmNsCnDk8^fV6T+EN@5n{8SXRmifj0#8JNS_}> zPp+w)UaXhd0Y@ym!hJ_3lk*$;9_a@G9sb0$2=7vlB`U)(v?L{L{hH1y!NK)PXf#vV zqN|d72b za>C+(Mnj%RI9Z5rgz@+pK7j}Cf)ffK%O#;oEsnK)aOE9tGoo%9XfqnQES@34da;(8 z*kE-J5LHMIceGG~r0)1daaafGdrj6Kf(YK1l*wzD6n|Ivq$#ob0x^@hUP7)L@#W#Mjg=#s+8j&XpqcdAVuhcK zJ{B)75H)>_Bw-lNm2PTf*{aySRL)=X1S4u30iE%@-Gl>zy=3Rp#7zq@2l}mfBnAMJ zdk#u!xBFN$kqm~yZ(BIK7%7a779uxT>LjvF!EpVKpo%E#<8Bnv3@R)4OYjp;e<6oa z52H}s=P^0Te<_F10u)02GW;j3<9H|x_nq+DQ9TqX*|JD`<@Ipf@iSP9Yp!z=HCVGr zz=f#;ac19zMkgGqu8aNX8b%@zVEuCKc0t7!58XxRffO4WjS?bKNRSdwhQg~6MC*i< z|E1|-sj@DWPXRSs#w`|p_nb9xz}GuF0)<(IX?##aV*fKY!gnJX3B7Fu30ncI>sLX5pXIuEEQ=OKGl0AZ zP8s46lVR7i&jP@ftIkFhF$X4ub6)8Zv`o#o>C7D#DyZHOK(=_l`?i(8*DG27I;377 zw3Fow9E?KaZA(_(T+y;($a3g=sAwf)_1f%>C+Ftkk!U&j#8v&omn|qqe-l6-42FF6 zQ;AXF9rB~jhJuRo1#W^Fz)7kWfuEc^elyVVsCzP3|Y)IX1p^Pj|cD6 z`zq6a^S0Ayea7j6y3d#R*`H1L{8^JhYU@qm@SC>uy~>sKLvSRgW9rlCBO~`v?kym$ zAGz|hUlg3o$l4O4^A9tJKco+WjTP!itakx)@vTHqMvFORoaSFUzV1Fdg)-%K^O)AR z-%S?Ns@HE8u>kD>B^(N?8{Y5#n+$xUZo5EL_7&*op);7t-T29#(}`W#jd{tTtq`k& z3@!Dg0??^lp#@Ae#8h_3&7AG<1%Fgm4TH)S!F8xU{M?REO{_wzV)o*F@=TPz5x*rv ziT2`-{38#;%HrTlWniP$Dq{1#BJC3*E0RXMA;M zfyEuLt-|0D|dxCzet!JE8`nJ?xV0HTZ9(>t4=wvt46MT2?($SyP0X+f5Y{ z!wZQu7%=$%(V10)vT6_CDa<79f|`P~SyT|Q{`$v2`P?7VV9Yh$D5bApd=T6i_$k}l2IBDA z{T~yC5ofm$n2LzUcbh98xsJ5s8D74Q6>uF&;%$dQZ7`NXI;ALrKBEwuh__s~jZ2cU z!r+NNw|eSlz+J_txAnFXxdf7-%Y>qwsJDx1fJAoa8!D@BSAdA&l^y*+{|z5_6t3FX zEq2vo-TtHMM;5$rSnvN*%s#5#WgqRoW6^_SbxX{~^udqvbBg(C@C`*!(LvKrS#-P| z8fwle?!nYtdWR1z`?^v6sLdicaP?UK8JxM#1Do0HxJiwT@+=};_tMB&SI@x9p)_(R zW3xehdh9V*IslB)>a~evMMI3HGY)Rl2iGQ#PdRi;S38dEJ;FqYtS>sX0_fxOQg|(I z0D!RYuHDFWD|?Bk7(dr;RsYwVTX5ene_a8EUZ(CxAX-)%i?QH?Tya7m9CDar`WL+r zGd4*E7bMinT$Rn%1_R6)JuYNdn<`}mf_(MbqR-lUYzsFu@Q9P3e5nN z9Q&Xpdxxy^1l%CZ*4% z5fQ;q07R`17%@SqpP`5Rzn8Th2z((U`5?alxZ+~|_bG${{LBU))(=*%f4@3Q{THo#p@+_hF(>N7uptV#YKKrUQQ$nJlU zk%AE?JS~!*A9LHj2;u_l?D8MoRG!ZlbGh(5jajyx3f2R6Y4nkrJr_XM$&dwa@?S*J zcK0vXZhut0d+;XKg^fP@eZ@5FfMm}AgcP^mmt^D$n^tJMwJ5q>yOxf43n*81|oXQx6bFxFm5bzS@wK{ zNhyh?x!ivN6&%$a{efy;Z5vGeb)PqC2X708GD-V_KN`hP@^!)(u9`JmsTflKiK(f7 z2%sX?ZJ_R3{7Nk2^g;bMXFI?q% z?$KgIJ#b#p4d)bV0y`(=&Y=s05t}v>tO<0R&w<{_vS~6vwJ&uU2I7(vXa#Os~Z!eA(i=&HI6aJbvhNN7>>ALJB({-s} zIF^c`I!g@o0KBEy+0udg|1XBUAq> zc1J3ROk_hT%5IMm#n8cm1;KH(bB(+Hrl& z^-s#9vI=GC4umd_fn$M{hhT#-u?Yl%;klM@3_8nG1J=wC0Ni|yOOEH#@CyN4`#u3! z-S;?@Hv7)B%(p;(_C0P|$Y8f?JatGjUcghW0qG+6680-*$83A#8~JbDoH5(Ml^t`& zY_EM~%iJ>9_6B=S3l7{ec-w(nU%-`}{jYxk&+PJR1{-Xd9kYcyiXN9s=8V}6uEfn5 zvmIPH@XUeNn@6s-9lYxD{yPR&4t(Tabj4-zXg>uxrh&MXhg|POjvSZxM;YoO$`4!H zEJZh~6*X{}IN&b@lmtM=|3qY5Z7W1iq+7&y`~&Bb<$3;LMe6MRnj15;4+cw^10)hm zqc>tpjTnWQ+hSQ+WLOc!+x0q6h$%MP)o1mua;EeA7q@q2x;tA-M)HY-7y7g?lIvLha(U+D-6uMo z#5?gt@{4Q$8^V3G>o?c{HY8cAJIM!6EG|H-5Wf7gVqZS%`fkH#EOpZ%C%^4$F<3*d zy`l|pWi-nZh8@TV*CR>KQGeta6dzzp=HZ^L|PwpN2T2M(cnM#(2UJ_j8` zF7gTj==R;-vW=4f@A2ihO7z+iIG{8%wDNEjwLFpK=~SX z%lQt^`{DcxT-MW)&M+_;jDBfsakM(R7r;0F_rcs$8 zH(e~+iNO-0Oyc+F^PSGjY!c(Fb-6C^+G~iz!zfFHfcB-gyo)>)X8Rhe%YL}d^-Oxrn zb19Kf?(FYZDS9MSk_EaE*?6s;T5Yj1IaZ0D@L1kcaGin+L#J+K7yfgS*y(MyTiGAx zZs@&O5%%|?b~5%~n@dbgEEeO%V*QO07O3SL!9!(Gk&}$~+?CA*7&$nS2dIVeJ}YBx zB8i1X9of!W3xYFHRv3&N*`Y?W>qWjjF!}ng^Wo~$^y2Y$d%O;D#p4O3)1}w!<}KW~ z@DfCCD&)o{3m%wAP(yZP;ure=E*w`6=ZpQ1c-(5j>oG4-uS6|14s)$quNRTHV5~BB z+ipU`yN{fMi5aW_c=~LzJk~lkIcZsq{?jUe;3z@mdyHh(gFw*1rt&d)m#A<&771D^bUkomDF0@+=d)w+g!-vsT3H!>uXMo~B7mdaT41FD3o5V_nm&ECv59SV8eK5sLFI_ZH}uKz!^2#iFU{#@+$;_)}m zh4Q(h9tipAM*rd9{QUi=H;D|!o{Y*vX_T*# zbLxP!ux}W4HaQB{{5d@B)cW%eNzZ`z!5xmvE)6b#*Exz25wQROFT^0H0a~vDFgp9j z1(wwzu(-BzZ%-OFV7*(rkE3#66&^|`?k0-kJNnz!N+r#t73sg08-Zkd*+rsovmh8jR7JoY!Zm)Cl$)kFi!6I>GKgj)84yR8EgXge#~S>IN?FG@A5$7VnG ztTcXyIOe%+wQ)_rlndKtrJ8MTQ;<_^8{>kvX&N5g6WNh0c{B~XB20^z3ekuP_YbRqxe5OweP(!43A|#2pN!S^8 z%9}2;IdG1~hxiezybkNb{CuUV#+0!Hs<92hI%DQ8IKl#*z2i%4+Lyvr$@!M9hG#x* z><=GrEFGViRBCeK_)_CZ++3Z=Z)<)1c7CD?|A_y;_2pyi%g4T_eW7Ilc;&mE7ew2C zmlN|QcIHjrWoNDlXaC>z2WAHqTl`-1C+lKXI#=U6TO`XuCP*Vl00bAsU+^+9i{EUY z{0>&hrde@j>jKwH+U^2vr(RlT9%Sy$PoP%^G+zfbW(UvM2TL#=cn@HBU#8B3S~h6@ zV{nyh+SCU?rIrvqj!xAGT`~qwF+a|NZ_ z!oE?|`i_rHO;@uLejW;f;ZDRXiVS)6vjFOQAcbJ`P8gnbHU2cl_2<0 z1`o)ZaggFg#UZ48kMX08g~JTg4=fK^A9sT+0;Vg#+EO~eC7Uq?_o*w0Ohanf2$MLV z@2`QIU?^OgismZ#ip~?GcG$??jP~1*{4wzPn5k4Yf7$Q$_@YxKY4mIGIP*M25Nn&w zRDW52ir+(DJnRd2fo<52&w$&6hC|y!9PWy%X1Cgu*1MY31V@P`^|P7_(-_maW@8Ls zpy1Q&E$_eqWEFjcRQM8WZ;UJpk{ExbyQ6bW!<+G#*BXb?)X996&5m2%V-1)D%O%A4 z6p$(tSlafW=z1(1hUWzYl2o!FwTk2MTn;s&nIPqoA%)hWub{>)O5haft#MWGEz(y& zUU#m$GFlxOX*TCg)`9tEb7Z7Cy3#$T8`S?TXr~HzIFGzR$P$#tYYK1;sqia<3dxWU zR*hrL*{O7_*fwUsb}^Qog7dnD9gPPvl8IZmodickyP|RYs@}m$9{3AZcg>E&^2Q+h zsk5^B&>DzLGT?M{Owpdz!FGs_0f1a_rNEEuja!gV7Z+BF38$762Cm^XHN=w_5ub*x zF}nbg*|Yt^uTfu!?BZM&@IM!5s1gi@`YL&bX%LV=YSCM&%Yf+~*_0h4F=>ITf05l% zF2lH8mA&v{)3!ML({^ytvJv4IbF^9<1L zpgnAnuzB#6VH@w?YUjH7wsx+gds=&*j&p}k)a8RW>K9vf{>WnrQQh8W(9 zLK;mv2OP+3=nZGW_-+R3j#qe`dv>!nUI&y%dq48t>_x ztDmOdO3V}IYhqsPyOZ^LGLiLrV{8Fi!WX#H`VG-&tgPQqj+r;4-FyYx04s{kmn8TO zHy+b3(RfVL;xgxt6V%ePqAT^vByc1Fz3Q{b*p6FlU3NHUuDmPXtr56Li#>BB>%bMm3ojfYhxO^X06}=cS-z`~v^e53137=}Q zJ5pjxXW%ymf=ASt%Z@=Upr3)(lTYGLXY|BH`AcUKe}b&I;cOKV6rgTuEDII2XG}rQ ziYSs~0tfJ*QOUS+dwuw`%6}?N4ksd#XU=1dRhCfN+2&npI+aSrN9;dhkHhgl@)csK zbm~1YQ7Pr|`YwIY3lBp#4nBCv=YdBALN|Sn_dlcWek)RQLbVrus$h13HH(SuZ5Ov=5Oe0xPY7=Xncw^>hS78d;G#FZ43Q^Pu!uq*Qze`ka~=`u78zy z5H4}VHBoEb_{P25C=(7VJM{Wt>Tyw{sa=G%caQu8=iyn*Lrts&m;wSO`SvU)0)OP- zaR@9N0RNHB7s)p{P!f1(p;iWawM=s)L8JBgmNO`GaSo2rBU-)2ORLBViszOiaa1 z)h1++hl6hOSWCnjl=Iy zVwhdu)W3Zku}85BxXibnkJ-N9qZX4+i}*@kMx${Zf(!i1?}EtcxQK#FQX05aVjPz(v9l z*Gq)$<{80XqAupL0cffJ1HK&q)-dqt?DSECpK5SdjFDuz=jN6iq$CLE_7iQ01zUbQ z{1ZtawNNlHJ1$vL1xdl)5rV%$bQB(i8bRr2t(CSPKqImk$j9WO#lKLE0DD>Hgy(j*HTRMi+ zZ*y(cgbP!dsOZUyV)4YCYD13WiP8RZdhYb^R;XA+(#m4M3S18CRUF)s8Rs)e@o0}F zMIg(J2-gnx_HxpKU(k5Qn@W$$tMQT1bjth2!HnYrKMv19pww74U|E41hp%w$aU6H7 z9&jS0#MZTkDXo@W0t`zH7WMsszM$U`fiueyxJNy*+G zDdo%lfZxAv+vWRgd&?hqE9dH2KKm>U{d^t!PdSG5ai2o`0jfPUP+^&jJN-964szJ| z#P=1}(yp#@07Ag7s(<^nntLv$+H==BNcBq z=cUc$LPhR}`hlFP%#*GD5$(d8@g8>xayeRs4}8+;K`>gfc3*GCVN8z$vF)y30^o1g z+gg?EC}|GfdVS3H1|I^+@jn!@)f}uY{1&baK86Ocy&5<6@a_>rAWch@pC}a&%|a`G zMrN3P+|WvSmveO_WEzHsVR-9yT*Pi$_{`@0Vbq`SeopiQuFXxg6b_fpmm)F5>i+X% z=O6P0js?K-!sWoR?V@$>yDySBhS|a^)MjsU^KFn9B6tWzn*Qx39^u`-;F_N(opXph zQBMIE!I#5{pQm^zOfeI!aIgj0Kx{$VaVW3?7YIm)aMdRqVV-5$wM>{%Pg$9FX99M# zeBpdKY6mipXHW(O3|6pw{(L!}f?o}LSrYNbZr6j<-}Y>?A-!i-eUCG9-k*z6Z^c z+;EztTad{vt_1V>N+q8Ut_%=g#q3?uz@UFGZV~6pj}s%sGPgj#yV-rzI-k^_rGK{! ztIfH%dewCjc(Dgwnd_7=&)DHT3rZqK9q9ju4X{*5l^YFj*f#cKP>69~uYlO$W#S zp$*&J8;*${-v4HBT~FCMc*%`maKlD9-~(+0hXunh{?|MhSFUMk*J+qjvxH(c8c1D< zYxq0E`-gmUd$^kF@c!Z5**}KJF4h_7tTnf2+G-PWz)MO5ogPkM6nrgA!8L-$zXuIG zIEKKo5WDd|`4ZDQJ(4+a;T$+8hZ>uU0Yo#OC&20Ofq~lNh4*Ps8yk$P6Z=+4RTJ9P zo9bSoid`(B1LBD~NT`kfs>rY4cSWS>?-+mK-Ah8Bb7CM_IdabQF<%)u(d=M~orENgMG2MJjo7!oSOly!*SZXd!wVDwaFm%@|m zQ&?omfo)K3Phc1KIrMy}jSXfQ(6&vEp(v!DrdA2`Z6r%O=iSz6*93=L25<;JovcjK7mxgV7C+){Bcxim(%b_kbZx{r3n8JFHDlhu?*-;_dGWPxE*xVvhf{F=3ePmXw=79SYoyXI97SO4Y}m zqc){8b0@ci72%geU%3X2*R7}r1z$_kI?e}mk7zeRNQ6oD15`nDL^9s&2GECKmSvD@ zaTo`D!GuHkhZpqh67BHfmAeAzl$PVrppjHMaM$WYHWD$-i$t<}kGzG^CNw6xsFKmQ zKn|*)%o7iB0nwshi*vbZ9nsQ}Xm;$tH+~-_w}w8N3O4h3r5;BaSR4NZbE^MQ^Xf0i zv0QQBl>B53dcom!zDOp<5%TIS88f}=ncUVmACc|Yj!Oa%6{i4pA--*xmN=}p+xR1A zA}0sox)R^(q~+Mz*)j991ER47uF7_WXpK|#TsMarrVSJ*OUbIJ=G5E2`S!Q}=)-UN zlm5dG|H+%)gV=NLH~Q8$)YgYTy!F5Ezy94`??3$$9v0b8_iL{#G7P4i+k}=$jt;G1 z6=OaEz?e7=$-*D79W*&>=;M4MzaAx&ecuzFUlzOQS@eQHdZHnQN1Xr);Tz1CVrmb9 z5gFiFLb3C)n1U@g5~bWhQ9$}7pkwDUS4B-@oy>lK5QcQN&jF%$3h zPnMHN3ESp=*%>5GXzPJ$n|0U5Sdex+Eqw7Pb4BJ1|6tm~7T^!74j#?>&EuaKooFG| zsI{_kn-t@PpLlCD7>x$=rU7QVSY7R|t<9Q}y|Zg;-PLM1{0&k$a}T#@kEsRFblr~i zFW=Oxx8nz@H)yD4yod~PT?`Xi$yuXW14lB*qT~}TvKVXyMd0!_5$Z)U<`;*5iKmSY z?;}_r&DIg4p-@v(rzbFaR&)z4LqD*UMm+iu>l#hooHGkIjZ zVR@Ua#qkXC=T^=xE{5vC00rj=VxnrncKggEa*s((9H~!1{m(SuM2Lwn97F5*fc7hu zs3%bIdcY_Qb{trB*2c~b7B|Lv*bdL}?mOIu14UaPsJ)>%NV^bgdM$oJ&kAr{Z@>PB zXyl@bT^B)B#U934;}wx}cu8#$?ewps!$VA2qK_Ev{}}Q>ecP{g(eK2!{d7+{PONs# zub))C{x3i$JPJzfJEkxh@M zc8nLK**?qnoM8b~mS$~x;+J@vc0Ayoc1F->q$d#3+m<)!3qAUpNkRy-m0=-%wjKrk ziW5gbuMVCFOt}P8VX=A9Ve|-0ker8r+~ms3sVrtoeQ_n>p9|+7%&F1B{Ml&e!FL?H{)XG~cFu$M z#AX^5754^Gv3@5UPsG{2UD;mypdSu9ppTH-I3pZ;ws@cS{deb{d^m8+gqf-2cCSA@ zz#C)w3~1;_Dc9?CE==2sKeiBvh*Pn@Z*LwQwNluFlW>fWqm^ z%&Ycch~e>zvDn1Kjq{UJdAub2@I>owlwApa*blZ5;V5iFY5RxT3E_s`*eZ#a#CwuJL;EWvc z{6!*Kp1x?HaQ6(?4Cy}g?abc)@A@3noFWDunDo2GMsjQ{aHb6S$ILHn2s2{LP!lvqpo zSTL0Mw1h{oL*x^LZNbo3%_Fyty1ifGo6}xm!i{AG)B0 z|H~Ba%QrLp69V_mWf-9{k7upQzSE)^%^{nr;AFP3h}>3;qwUDYiFnEVkY_OMGKIUe zWUV^@^oQnOp?p7RT6VW(Du?F#qhq%WnjcTW_LKX#Y1+GyA#}IFYGmkuw@@hy4X=Zn ztxdF(HF99rL`yN8I*cA|kKe$cRb#@X8rl{)-r4SoT`G3Jk(-c_S znY1vZpqPsbi@N$K1=TbZALtx|pl$KNTE_EQH>L$!UL=avL;sv*LTO!qtR?G=&=->Z33`|LBJG!n58VaE#fveg>aMGXK%wUR~Vtd zG@d|N+i<|+-co@&_JiR7(gvl|BO{5Z^{KGif;)|+v~Dt=hiV0NpFw~;!CW?abnSK@ z+;RNyl)`7+mbuFhtqh_tJptZx^bTBd2QS4&;Oqq+Fz898(=miD!dK|u1iZ;~I*tRc z&l4+*(CSQM3JepD|FR88V&o2awDYX~lfs}e>>I{Urq88n0J6Qn4Mq%=`7rj~R<1?V zikaa6jzQ@`IP4O*7IK`pX3NdVz;hqEV;W9gN2lkGKY8wzp|EXDM|`K-w~wpwr3?9- zvQ9jC{3lL4S)G|iscavrJv+DG@#Jy2o=B80`A&6kzslU+Ipsr&-s4Z6uv9L8Vd;n9 z8a92$^wFQ3woqX6mFJ#3{(<99qHeTYRQm4zlP6|)wKF|a?Z4Z3z_BH9y)&Ln>d8WK z)v!X6u~(0ZUUxK@(Mtdtkve+0FTYggz&+R2rSB0Y9IfUs)z$l;eb>;rUeWS}{-v68 z@bK2~0p?kJpJd%F!?XK7R10`qV_@R6G}3%Q1ILn1_3qMg8|!f3=_yhlrWCi)QxsNy zFLV)IB#U2yHo2tW=1UI`xclnk^q9p(gkzf`BOZY{j`?~4NdSlHVJB}u!E`GUk8dL9 zqyoJU)~x6eEE#z4Qj*boM*!zFq^160_ejVt_(qg(#j8eq1z%_cnUWzZz9%OZp_blEPQ`en5d7bRM1lfG?(C+)?9V+H_zvRB#Zp#FtYd&A0p#QB! zgBgp>sZ@Rj@v&@I*b{`QM8&c}&%rYoZ=oX;DqK-kVAB=M98D7BoHTi6WF{r1ZnlQh z$K;?zsHXbXVOnh!-w{p(?Zr1Kb^T*3R@g3}*M$d=Va!6NsMl6nIf~FdfPj@7Eff%j z?&7^{C7<4Erc?guX@4r+YleYuBo_Q;i&gK(jS7-E?A40d!kf9V1v1ry;T3 zL})>SyN9ur46D`u;DcP3fAB_LmVbC=QU0+kLLG%_a4TJvw|l+q!+5^lf&Xx){I`QA zggY7VDVkH<)R%{U2dA8Q*p_+dVIJ6gj4LdXL`^9)k~(Fef0V4m8BON-i<`1ACCdo_ zeO2F8S8wP)gJ3y;&brj4=xoI?;Pmf^BWDFOM#LR|kN6fmew4ai&0H^uoiQ1xV(v@^ z{H65*< z8rC048ua8cTLZ95P2vGxIO+|!gIQHLl7>fVk6NY=qHuAP#fhpEaQROa`(H^@-zps? z9DNF>y}no($yXLi(Gpax`RMkoD_sP%dpyN}9ehtF@B#gB(xL%jx3@#a*r@#hG$RsZx0c+3BJ?ds?aGUCp~!sG|Ti+snP@bgJe- zi!?t)-b7L`Xne;5GA?>fgjDhXY^1Pfgrucq<=PDu0Z_!_`S%@DGY3vM#A|3#7_vEfKv$l3GfC!a2#>3-{bkxm%wW18o%4nW74N|j+o4e?a-K= zh8)hM7zZd=EtC6ogBH+{fhOhLUI!C$?vE@iE4xuyRs&pHobE%~6!y#js1Wmg3LFEj8Eyn%TivFhay z7_H^Yz+w%UL+i=A|^Je zML!(a!C-$n9=+kOQ^@%@JN|XqH13Qk?@5mzxkGwBFJOQN_{G5nH^4~vb&G!ud7RIQ z&OHZR^+)Y3LE$ZbyErJm7|Z2$yLv_?B3V305f-Gx#T1d*IA1$eQ4)wv@C zgZGgATh}w`0PglW74f-j^N*U@9Pw(zXOkqj;U*0Vk@3$$c9k>mPUo4E=>Yt{;82yM ziK9bV-yevy+jxi+C9d9Ybyr^8q56Dsvh!jf+uw8Jg6;EX_}=6zRMH&d*^}nT&fuNG zgYXCX5awVT%9}#~AYkOks*2f9fP-q)y32jx!s}jl;ey+2uikj(%#1mhIdkSFRWZ7F zvweRoHuidR@cOY>%*c6^PZO?HX71Q4jDpnCwhKO+f0XLz35fj;u!d8S1JlAJwGBu9 zrVEsawfqI8R{x`xWfWts%3$DWG=F8btmd^ zyfzrzDSQ0^Z}zT*h`abqI1q@vd{}g?=5p%Y@YWrT6bhBB&$2cIPbTN$!}}vh*Qc%K*5o>PGU|vSsQ+if^r3oxd*-HlGHhm@QhZM>%-s5Or1bvs6RhG zKHkXvDzIkutY!J^xyku#7W(rrkk-HQdg9q;qcNV$Pb5m^QYm)V3RHd8?2@t;7jHcu z$>m2f?aqbHS}C|NgZxbKSLebfUbHkjS8vsBT3#Mecea|WKw;hj9#lT)NO?S1 zKX3+YhyLo|l8n3K+Ytu#DoF0wW!EW;`>u_-o{$0^Ey5q^gZ%J7Aac){1}s&?wxVEC zJL^Wbx{eBy%5|Bvo&VOaz0<$4K6na!fErqhKrpaT+x}JK)UfMZaNx{WajSWbYnHq& zAPc;a4_pL%ic@gH%+$NNWky5QHFeag@@i%=T6*Nl;%6QyMHjDJ84|&^)sGg`=7SGz zs=|Z2wy>QY=l$DY>R2P-sOv6yKX_?}vBF0{c%e`d+aHF;QLP?0Pgq@~Zxf*Q@QYiN zO~6qCX4*zwFLqGO?16Lo-fLgEB$|B!glP3Q%?mf5y?DsUYu(KA7y>=UqI0PLFA{#l z@rfKWIZpnH9U8)@laIQADOkqX(?A87p-CQ4Lp1>gEW>~5inL66c+oUZ8-Cfj{?69c zwu-G-ktI0zv(3vYwiH$1w85d8``h|fbEqoZLw5Q8H)CqWJmfsTg6Gi}t z2X05>3GNzS6TIDGrEQ`sD>$o-U%wLy-P%FftmUOU?}W^w7CN_vrV9mTj5`_*A7ui$ zLSb5c+V8*lj@yslzr<|POZOkYP01x&syKVHnBf(BbjK!+0YUE@bu&qtueVhuQ=MZNA~NngV~oWgQsFQ!m1brq zXEw|zZ_M78NN2(UmAUt*!w(Gnrq2*IOb-qNj6?jU(dQ+*)*%-!;l>#C@5F=prFYxR zQfjX1zagmt}N)`O7sfPYNG&j`qdy@ADC3_&j=@)-hlR*8uOKyfp ziOUw==p@#SUnq&D;%@=}M?r%t2;JYOWUxs-gqFx9sLKepB6tAEc?rJ|u{Gcm=%I|q zuMYGCW62vJ>6smG73hXK3o3ZkACT98y7h7cCJvaqo8lxll5gOGlITTsU|q{6S}N8uBsXzL3RMc%LdqbJ1v;ctFLI{4HtREOf6f zDnMM7p|!!yE<#cfyzGTy2+&w{#Vf#IZncV^NHuPa`WqI=^OgL zD#H~oQR_&dv)ldm@r&-u6G~X2n|97ASyZ@~~`2UOq`rn#^eg=v2L#Q8P#mh&J zo=7DSd8bD6GqC8*jSOGSPE5?rPfyR!O-y7}GLy??ekhKV7png>tNUOKw5^S>7l#Z+ z4_wAE0$)IsvRkyh!hfoRBSGHKfI6y?H3bsHalxQK)d-IX??IbJb2Rrv)N{-iJzhOt zJrQv)t30z6|IX;#%j`rvbG=??*T1YTnN}bwSf7u;^wj_C@G|^)JF)DG{Yu20d1d;Q zX(-Erus;4Vs{uvw|>9`v*>TX$K-`oF}x{f2h<@t@w0 zq@kuo(Ib3M&#&NHH*gEQkQIESoc<0m7F0$qli6xHTm`VhUamqR+NpBcd`zDiCfhIR(xa;|AwA3`~%mcTjI8NTS`U-$!PjUgd3B1K~JiN$54=l6Ab8O*mXVjq8 zmxVJ7)L-fMcZqti7YKAO4f@Zn5Uz+rcB~$F4axy?Y9fQvXv}X)?HWvrP97j#&9fo?T4adXP_E`7=;lcvtB%Ig zJmP@ss4~IQyr3l8FQ(Pe6f5}e0XWt<<-7B~V<6yJGf!qKc~9}crrZIo_3o?q#$MYz zsX6N{bEsp`wm606Row1qiyWK4#9LYx+rc;x%1&bxGP<(@WkRknMZ<8l7v{Xe+6sFl zql0A*I={32?4TJH?yW0(RoQJ@tujOSU>8o12s;*b>DfUba{Jl!-POarx9)#TzhQk4 zY&-}*HgspxwFw`ZDy0SRI#?8%3lS?amNXW$ES5ztY;c)H{#YXEKexqYtQGy%y58?! z-r9m>)02fOKf}9X`P;KzQ}C~yg(k|$Up7GK_##C0AyL58!eM|B+XKLoik&e&%rN4BxC{6G7OuMNvA56Sm-wD zUV%7(F#0aN)xSH~>_Af8<3FVYtp+O(fTV_x6W4~uUmk|Bb!C05pghGqwYNLu5&}_E zbJS$~xa!)%g^R=PSbROEQuD>aE8XOJG4ifM5&;1KVIaN2s+7Uvo*uT{y}=riks^+D z3?WTe`@mDee$K(DdZEEs%n4&DnAnVz*8dy)%(Jp2WJZ;X^SZ;I?Y(=K*h`MvrrD|J zE~jovk1P@~L5FsEbMdC#1Po@O!Ra5D&5>-kc?M9&Zyfx$X>{Xet7qp;h15+cLGWKs zt>5%#`(G+ohEE!O_$FX54$C9!(B6QN*1iXt5!I^|ad3+nZ3!3s79|H$zE12Uw#}|Ur@iY*LQbsf#AWTVkME3 zyIf641??mE z6jHzbq2uZYdrUbNYj%-^EdC*{ok;L;Y+k$u&A#{Oq~5erg?o4N{b3KnYzOW&qq(pOrz+!YWqXeGbewle}&uQC#Gj`a?$qI zJ)Y^ABdZ;s?~9;3+CJr8yky~y;sG^sbZlSd0hw>wvzoMiC}p@qW3mZ5_uY-q_1bQQQ4v);*e;iu~0 zAsfnTTm8e94&$}^e_QgnM=Nua@btCyx$QUnuig7pZc9f8fYzz$Q^u_egg$~-Y~vau;Zfeoy2`)>#+>EfayMf<#*Vn-x6}`H>llDy0F^osk^Un zev4?nzisd~oFj0&bNTYlHO>#=^UsKtqC=nM98-;S8!I_4P(vmmv^YVm0aA>dzH*!c z0%87;YO9*5lH667T}Uwp#bsE9lPIl2Y6|?<-vqjq190&qN&U-t_=Ior--J4zj>r5D zd%X|)WASwVbL^f9&@fHgcK;uEjNDnPD1&$zDB~imz?zqkIZZ= zF%cPa)W~Gp7~F&GzG#{`4a9xCL9IlQtPLfeq^we?=83#_73SK>$$EWcb-+Vxn!W9n zaiouJjIWrjy5AGI84fj00nT{n7Q7GsqwqN;|Fqvv?b+dH`3@s15@uM_WR7&TOSsr$ z2}%v~!3m=80Uw-LL^p)b69$Sz7UKeyjHq|PV3C<3qqTp#m+``LnJb30t(zSos{INN zbp}|(c?_BHklp9-T|GyLb(J`_4CC0aD!C?i`?`R_ zOBo4f6GBJ@HtD;LW9tp|VthQ+Il9{E|9r~ozM18w==Oa6q4N)?VkU^~3pcI~Hx}Vi zfJlMc2OSY-uCV) z+~x~mc0&y&Uu~rU>WC+6K2&5H#*<^NA9Vc`TMo&jh7w2s>;Yp9U9jWNvMWxxr4=6G=kbwh=jnmy*{@W(G~~_O(dbLM>PG+vP5a=-cb+t%@ z!N>9kH2@mOaM(0uBTQxKE+BK3BL~Y#S%#Z6Czy*!Ri;B$Fkn{_%QtV-vRQS@iQ{9w zK+uaKjxZdhQLaKel{Gu?k0wTjlIF(d^J++o(sC&cC&Ld@oKUlYu@RZv%$df z$>sKZGZ`Is+qOTOAMyHEne<|-w{8$Q*EC2P_}P=L$H;jxj~OPM^am}ZV<(!e*&Yoq zIJDaDF4p@$N25=7zB2XESTJDOqc`#R2j3En#}QIvMOGh3OUaq$2#9SAc3{|)?hd+< z6csl({2uKUS@D?%Iu{TnM(40`tOhm;|(jpj?` zY$%v5mqrSRYI>b&u*TP0evl2jIUEeQF~G4WCad#Zo>4EU72h2L!2Cui^rk|smQP#m zY&e{CTj_kQR(R7L5!`<_n~k)NF?irMRqVc)NcX--vcaUso^;-R61m&P#{jb3N8wB3t zhHtSq5+!Fj;q&D38DA2qf4xOJoDF!>AuxSes}*qPvI$?#i)_H94e2^z#P&N~w^%+% z_x%Y(FX5F`N8l~USPb4T7#wfJVyORztilM~P##}88$h0AUJC`r$73;6{zJmykjL=) zC$V-$C*Ab8nAd282GlOJqzK#XM@KXqjKko>(}rrW{Y{ zj4gq1+G!f_4%UyTVwnaw9rA{AoNOE)SGTCtVl)B!y&tv;N-h^FLV`{gQV)ze#YL5R zMzh0e^nvuqX+e~g3tAFtLm&($qKm0t8%-^S1F$y+=Jl29t8=&T*3<)~=AUSedTUE> z|D;)ZAVtJ?%Utz({n_~dER})qVrq2D>HE{5wND|>!i#`HwA$XsZgA-$4oGyX?1P{> zQT1aFWCqFY82wK9PIMYv*vB2EoGfwm)sKL-mZ}KP8>yyJ7nw5rqK$H_uYM1?dW2+% zboD`f?&Q%<)ES0fqyMJd4&Razl9?l=X!QqUnQC=n&PL7nALpBnk;{)lH$+j#J+9A< z1(H9kdwvf>kn*K@pDr=aImSeDj@vHqeUd$nE+tM4LUuw77i+?QLWJfe{R@1CxJ;5; zL0Q)*ZOG9PBS>A{Qm&LrVTA2D!a>wBw83km zmSG@R_(0Ngo96res#rkysVO!H(Ak3X>NQFZqBvpT9>fL28K;OOl~S}YmZNM(^&)A6 z8#eZT2Clmv2N{5Aw~i=IOeGg8XvDO#p|%oW*TCFu)y4GIl+rk+FOCnTC>9el~B za8ku9p}<>1?a9efVRm-X_WFK07#=VQ>*3%}Tk*-+*+OY@vhDZ(h-VWx%X{;}yi)TE zH#1A4SLoiO=o4%6Y@jO7dm;Us+Bq%uh0R0?EnQ8=oMCQ%Qm7c3B8oXd+#-vxa_hok zo0E!@qCp`NV7wjSLhivU;RD@SIcdSzt~mk%&AjrqV5~PzOq&>hXk?(%RF7h%Mj{zm z+Bko2%8x9&wI~=Y75gaS=0edL67TwxcII@@I|}wD!s68K$aKQ?r562xj|TjU&{8F) z5nTeGXR@;eU+_%E_uLm}P}>AGmP5W#Ytp(nJ!KXBX`e5Gf+y^uC}#j$8O zo@v&CAPy>af3Vif#KY0CibgXkelZqg9tnySNsm%FKEPXFBiCI?R z-WQEj9(X;!%odzY&AtBhbE&fk@b;nDrs0ceGfX0i@zsDkn@b5K5OKo56r3D;0emW$ z1I(1hr(lzrXO6NV?xkQ@AKJ%!5jy!ao->RM4*{Jx)zFeMED<@by+AQ79DqUylZhP|OA#n}rK=ejGNPM_fMwoNKD$Fx8%xH=$G4 z3?VU)rk--f%&oZ(6WlecSL+iY@2K_>RGLN9S=}cB)~<-f!Qo%0HT)2fz@kafyKbhg z|JRX3Aoyn*9M&hr#lAQ>l>iH2z{bkqKWkm1aVK22|A)3$A!w6V%zemVTQsE zKQrEF$Bgkdq~`nnb8qI&T3Tw*ix`#q?)T<7|M|~<{{1Jcl?Ct~l)r>VRYRnTGy9gE zJRVWAgfedtU|af0@kF;?TB2AYnL!SjSowX#r58 zSSw_8N1ljgGSOfpkw}o4T`2?aV3fD8e(E?E!4Bsn9Hd$YHL`DL$}K@v$ac5KB~pp$*w)|5-lhA~ z+qUY23EJu7WODSEdfWCiu=iqkcDiD49Pts2q|UD_Oihh;?Kx)e**DX&@f5(}lIKZ~ zGO!C?AA5oU9oL>gPbk86ik^P%oImUpb>ps3&hRz*!CYd={+aFg&mhNpnhyAY9@ z$#4J^*PnssfGqQ1gL+h`MCLQz=xEf)%t!I~6t8>~NA77v9BIFW(b4%=@iISmr>YZX zy)Cj)_IJ3yz;_}yAy2Y5dQ-&yiuFCx0P;gxf3^hu*^O9p&!gXB|A)07tBRGD*O@pH z$vZS$G;FjNOAa)dPG3$cDwL#8$}RQ(L}TwWYKzTp7ZZm`GoX^mYGb+aNjaQ?;Zlqy z;NsQBn+#9;p*F+n`gm$*64%!@owwkvfwx*JeI^vU2RHnF+x$YOJ2|E!2Yyhs*oa?p zcaQx;|HF8pd*BJ-M_Q(Jqe0+|t3${wVX0CHZ<7;ST*G22LtPsnWX*HQ@Kt3rE9hdR z_g>@9yOEPiW@6&Ca{aj*oT9(;x%>H0lMQzQhe5Df}*2#-on3UOErp z0%&WMF@f3_hUBSClP+mkD!qn?;MvJ-K~Jfov4laPy)c?khk zp~Oc&X+C4dA4eY3wP(OVMxR+j_R`03gUWn9w?)H`rsRg?>NvrmD#xhV!h(XxqyIH*iA$s;j6fw=f;b`OdV@Zt-`1QNK9B7#h} z3k}|tFuS9TyDVj_=em|>g`;Fo8u&1jeMdxL z(QaSAWUI;Tz52OC;?4o9>gmi55dE0_GWW z>flWtbG-{B9foU7nPK5y#w;S?>9-q+e2ysyL%T-D3!|(kV`HEd96{tI`P+$jkBG>vhd)Y$d5e1L2p5GY^k8 zM`9>^21TXM0+t6X2HbSCUSP~?rF;cgCC`zLi6*+<8I%X zP}Jaiznlq$CeBVEjdo~PALzAva)W?KGpyQl!^eBKH#Tm;?)+^rTi`>##nE=Nr~dFfv}VNyK&%x#qkt1i3k8 z1g4P|2HM)tvOt}KbuJoxHl2PJnPd*V`qito8fm;xIaRBz!gcKkTnEkL$mU8?)CV$Tg7NBG*Nv}9z95ga+{R}qRN zW`PDp+}u96*PSkfYqhymi!w}%jKs@}#?+K?;eN146n)-#?%eU_u6<~8Ak`I8#mPR=i|1h#`Fq!CFxN1c<-Wea%ewLrJtToKy8 z4=xQaK+8+SRO7X;H)F3)fYqB^ikYR6QP@9K;%yt|$Y{BD*+v+9|B7tBk2i1ec+_O2 z;{M;}Jf1m!{H2|>6f9Gv((LSsxc_s%J8^P+Jp4!fE?Qk(wbubuV_RA}#eNNV)`+VK zURg4UK=TXcz-P{Z8Vnd1C&PNbOyz*t``+1B%P{i2zncd8KkwvND*&YD zD;{JU@c+4tmQcRN%A1`ms{_8w^>~;O0^=)AkgdXe!nFLm*K98A+89BmiaeDNEIdgB zQX7rw0nAc?W93a7n)Y5j`La~;7EG+<%a}m(-eBM}w$}32*_4IVDtf#;`RHzVzUH13 zQ0A6W@?~IJnGQ44M{bK0A9C_v-~vgo%kY6l6?S zD)rCOxdX|hO3j2ZzLZB!DX*_uLS~P7BhiF0_~}B@ZG?ipoVbCwv%X-+aHsMxNXO$L zuxz{=@@9Egd9qks4R^Aj?<&tp=UM~WFt8Ji0&h+tqstpaiUcOh|G;7`JHT|0k;Na` zHpC?%n{69&QvcbkL}$6JpEB`8u8{z%hq=JFhz@)hiB83SimzfGBW_WUh7$Vi$w(;# zMnM=rL3Su}lhd(sIaWD)_JaDqc~nlozmJbV7UGJ)N2cC@+iM@JhTq1ZOGZ{cmYc7W z%D$Bs{8_K}eMkou`z8|IMKZrXR$R^HP;0^(nws*#zTbFhsr1Vq{Gb{ymDcK$3B;;; z$cnxOUv-_Rhib3BT*c7>2|8AjdJAt#5tsgVy@t0*z}RKRNk9ms-+^90dWF zay2^K!g?~a^CFI;;jIz-L{Z1GL0ad(m(-~Bk0*L9n>%|ol5Zy96`^7eC*R85yOTdF z0`KM1;d5$3rwYM@5(5g=Z^Ih7%`SPpEq-mIOKEwqLEPy!U#MD)BsFptYoaG8&_~wo z9is~!bXj6HC(r}N`D$M!3_ef=aXo@MUP+sbyi@Ru#v_t?AGi7NN@AjU;m|3BMwtHY zVtb@wpaizZZ5q{TM}6$np~cZrzcSq(R30)aBkjem-$VvQ=o3c*>E1^JaB3@iys;<> zZzJwmZTh|LSkzsq7?=gh>+ih-qp4t6hZtIRd%OYlU>Y`cjr(2L?$YogJ`4YX$H4=l z2Qma00b)5#9?;p5(#Un)YJDBO5*Hct8Td>yC$XAc#u78QWGh=iU$my0y_buaA9_}O zA{~i`QE467BB34%29giJ-NKv61Tx4WiFC+um_WT@_4i&BWFMUSe3=03c1=hQA%Ub*JE}=tGH25^lbXkTesDT_P#3Y97%=?!%A`t{xKTO%&Wv= zZ$~#AUYWR}j$#p^|G8zSxA!6zYLwt2Io!8N=*GIFisXwM8O#{zn_hY|vL4g%9u!im z097Z0(+MgB+lXJq^J4L6tGlY?kE@T-s1GtFSlAJ3BX?qr2 z$hzxM*V|nmLQgnIY+)TLI<#B!)ori%lA*aE3vijhU#4Bh4o|Z`;s~rKKs(31^onWO z+jt(i)Vam?&~cl+;Zw_qVv|9~3;gi%F=h7O?mvx2j?drZ^&Pu295%+`sI7||^*#}c zFEl4h6Uy+H6bc`;?p=dJ51vqs#-VuPZ)R$Rl$yzo7+Jp>C!4c&Zwt?lt5o6Gop&CC zVG=1zRTb*KbRiWhc6RPOR!G@j=QHYjDO2#d4LHrJOv&afZ&gSjktuskgkZ;zcd?8V zCZ$q3?RTr984bo7Bbg99himDNl#tY|`R|=rqSjSc4FdR4hcr+d>L=5-g zUx#yHtYQCvJnL9{Ur2s&H+-Q8xkaF%{)0#WCWY4sab8=oT_0=`-Z(f=|7jKXw_0c5 z4-`2vIcXY^r|k)4@AZtZNaglH#^vW+M(j+h<&Q@V-{j*wKs#j4KnJ%6h)R9x4z?8|v@@KDITuMHe37YBGsr$Km z>=57Jn<`nMY=bbc^+BOH)`zudE>rMgf0Ron=fnrOOPjTYmCIWD4wNh3sn`q{x1 zc+_CPc!dfYx-J-9*u>PLuh{!^(TAK^i4c^7Akd(|{=4DV&NK56nt^;2l7c9s5B6T+?X`HkmVf`eUS}d{Wb%%v&)V+^E#1MovL!Wim@(&G z*K0BQvf@d6AC^{omD{5(UDw;;M&Eh92WON}hE$++Iwm{opX#c7noreAQqX>ip1&C3p1kXMYH| z_h8BXK^>c=&0A zx~Nx&VLvG{-uCq!`ZkL5A~eZjma^|~zvFzA7i>F17wd3d`@T?mlW1(y83fE^*8?*- zIq8PclJD!v0P7UbwCr}#iTf_~Q(1^SSS_=?*AJw(p>en5IO-MX^&&PeX$3-#8Ox4^ z9?`V@=J1xONfpbia)n# z7J47n$KOPe40rEa0AR&1%IJi|nSDVq|HCB4&|DI(H>S9UL}L2D6*346Y6|jKSboV? znd-0J^#FqjeU%SCFwt6=nJryI7ZB7z3WP(?z~^oDj_Xcc+k#tO{VOy2!S)#L2d<&x zheF!IK;SnQ5afFMwH|j1`jj=!?SY(qjq3)qrU91+C{64?&5(0T1Oh9-8_+xQ0ca4c z!nV>rTcPjP+!Ksh@#;N42}S!zwOVz1vzd{ROxAZ!R~>|~C!mD4*Ge8P<4kqHpo9+R~0sDRe%Id}~$yyx=F2bs;#l?z$cJ{i{FO|Z4QthQ$8Lh^mg@PFh z2aAX=g@@eRtgKUr?59*|WbHn0i~M+<>zr5{F=fP=iGD7SYpKPiNUCD_iZ$aytsZyF1|2@Ch5b)FRiKrrSI(}1%S)-VA3QVnE<8*IF z@1YggB&Kn*X$!^MWbj3p{snI$p6gcQh{V1rRr&_M!EaR);gI?nC#6uEg0RpqK+T}_ z89N4bgQvj>KZH@Xh7Uaheod>X<>btP1`G! z#a0R|=1lEDL@5D&0{~^lI6fDw)h1#Qx7PP-(~b)W|Jx+C$i zdM!9-s9Lo>zEG`t++%J}wYo6guGW;%`zd73&5U!pm**M{k6J;B&dfOGo8f6R=E}eJ z+vBNZ$mfgVS3Ev5koYJHyOhhw8uZab!1Q_CkysQ_w#n4^Z~OhHTlgewDs#=|T!krY zYpv6M|2=7X`SMr7Dl+BaR0d*BMO1j)#uu&;9|tYd{*17Paw?1yV$d~0$m8C-mmJrr zI80t_KkSR&n=~RzU39LuQ>ARa`J`tIKTBb!Rfd2e13$Vz}ttcy}sz6wTsln zj$>s8LGfWs^byB|9br2$%cQyJ=K=#G*^cGhT_k6Ie<8>HY!P-!=$1OO`9h(z zCI&G$2HtL(Yo$UVA5U%D^Yn_Ifjp5Du_qNdttW>=!IUo3-jTl{Skuav8 z4rKpBSCs@BY0`FYH#XE!=hcf9V2 z)=ehoUGj`iu(Ej_BOb@|@Z9k}(QHfTShHG8Co(1PC@vc{hNMq}Zj{SYi$CM=_ojY$ zN7g&~e;$Ev&P!yS&yqF9A0}4<9RkWiwM#uPfRo_$c4`mzj8a{=n@ME&W<#%dODjzY z23Tpdj~qRE^yD=sPr`jD7ESR?;jF7q{}KLwEGpWlX^K+Y=`vRa6J&JN=efRjyJQr) z>M@i)OCoOk&bUEzK`>l2{(6WpfnNYvL?Qdai;@3_k&LHwG4eLkOn9Qkm#+w^n+cb0 zcMoK~qA7VF80l3?z2(&cq5slbatc?n%neT$Tb|3FUk!M3ESlFdGCfA>LcM^A){ zW7~BXcmZ7#Du9l10Rk5YenP@pa7XMUys>ok8CCX&!)111M>cxP!$;u7Y`jSMQ}zd9 zA9nqNE#ee1IlL$dQ;0(fa{3PB^pBHY8K)i{LE)AaiShDHD}JxzIMiebR#}Sy<12Eg zE@I95larx%AOPnabNYm4rXD`=ls@>AlYUr+_ue{>+YdxwbjRJ}dfD92y9fC2uFIm& z)G|>UzILP*KdRe~dc!)BSp0l}7#x3GLXlxk2FT z^@Y=!JhJWVH3dmlH~k%Qwq#aq4i{H9$s`Z%ZVulS{e#vmg`j_+^&OQrZ63WNOUQ1j zVhW|@GON=-i~9+t=xS%XrGKck-6tyjBhoUMe$T=NqK8K|;c z%botYb$Z_Bdk}z$7yGw)5RbdnBSTl<>Hi~gfo-RravQUL8=k9+@cB8*9x&;x{m)wX zbrLl)*7nlhh5=|FinubkiWq{)$#`7<3+smMxpIyqY+E*Z%frDn^{g*guZP3>U(jd9 zdaanb`x^We%%8Ri{EmIlr&j2vUwAzBGmJ`zoUg1^dp~@};NM|o;ee!P!u{Q{C!%CA z$84892Q@2~GR-{-IK;S{pqpk-u!7Vt zb-Pt)a#|UTDMIvx5|j)enSEJ%e02v3sM@ zr4~wt23ynn?Ut-(dcQXxjo!;2j7-91UV1$3k_j0_0U<(Z`-Z!CZDtgC3=GpZJMH>L!M-Ywh!^>er&(cxx`H^natBucAT8gz<;{{ff?{imyjV#GiaZOCkM zxwlTwmCEI;N@TLLhnrLF);T87Tv|H)^R4z&^YBzAi^}iWa=CPRX^FhgIaPZ*UM})W zTK0H5KDEiBGr_=SJnZ%all9tIE1y^SpvN7KzdhiGt`!BDjeNdUuh&o!i}o~4)0TBs z2x_^&Eoc>ky^{&Q3@4vq_K|F5Ybkw5L5$jklE6&}?|i`q8O&$E$-(@RSw&5llZz`B z=d7*}Dt!>y2ll?zCAPJQPFBrje!Hti=jK2gA_Wn8XmwK0Jl#FWmzMhzbbc&P*vvJpSqq&E#~peazyT^j%xC#K zf*2P#eO5`o_zOKIKdJJ;_9& z;4^%2KXOIpFNnsg3ndQ|lR~F?7)azi?xC7`=hhRg-aj`K(D2a(nSpO@KqJY^-!bw& z6eq>v(?8&RFkCUO1b* z>ax$AEEFcKe^bbF8;@lU`{U|WasS~=EIy5dS{xkB1*71%AK@I`1blM81!Vw|X4?P! zF5ATMvh7d6hH)(hV4)LDfdfY7*Azl<2tzG%z<0KZqDcE(gVGjvXvXS4>jL*> z+a*LtOJQQ@0(@yL3Cq50XO+>s+m_zx?Y8C*^_I;X)bsYZ0mV^6 zwmdMeFiTRxzvskS#dKk?RB65*c!T$^d`{egP|)Nz`1}Fqcn04=L#+D;oLj#&Xp7lo z<9}xk|2@XdJ#%yOvvb$3u4-k|>gu)5m&c+9##{B&)u?DHZRqf$Xk3%)jAx8B!JpfJs4U3P zkc-`uBCqI6`+Im0QaAz$CQsI{`O>#{Fv*(wm-zr{fng#GuecNm%tKK?uE^R3esyaL z%a-E;X4W?53DgPmfj)EC!b#+ncnXi|?JFaJPOEjoVdgX4(L9SfLH$??-r3TZx6<0GRnU5dHC^g2T3utqoy);yesLloUnGqy=if(WNYrmzrJ1`U2`E&CzYj^6Mg^ ziX$3m<7!8XH0+B#;Zp-P1GdB_tYepbeiNaprr-DSz--uPqOR0z;EY`0o$gE!SN@ID zx_8O$f)1bqKe;E7!UfxpMpgeaJ{Fu&_xsZ6S}mRS-O|ofrm9nwOq*xC`e3F#Rrw#f zR3eq1I(HhtlMLJ%&8oPBKUzsSXi)E2pzHp6WvZRAbdAiJ`U=#if4A#N%m)!sfb103 zxb3jxIO10SX&MK};ZMwua>Pl(E1U*A;#U7@*RPy>6B7nx6G9O0@o9dO4^uP1RI7Bn zr@sSkBglnPte#`48uFoBLokLat-xF#4E;gVjX*4)KN>=52avBg<_t91&}|2UI2n4L zC6nfW{6>LBtlGcyN7^;Ylk$AbNz zc7AH;r+tVFvw!-9Ja09XUHcVk3Z2dRC**`fQj&;@o(pu&o$Cb7!O3Sjfbi!Ce89jq zbJGRyoJI78McZoq6>~|baAKTUQ3T*RDvkt;cS&<&xK9uZ$u~bI!WGmGWG)*eyoq$`!AB&wa0_RGz!m`Jp%RweDK0b*a@- z{3kNLr*7DiwNW3LUpORB4SjB@+0@=}&8Dzk{Wi$Kp@sPo=QpIO4}q0x@jr}x6?AY1 zb9sSMlb5}pXm&Wz^nwF#0!{-o%@V_9hH1G@pxvZC77&LOSlu#~MtoZl*{G>6UY2d3 znasqwD1QrulcDJn9YrBE{*BM%H}d1@-gBw(uBuM2bY^ET{X(JevTOs*MEIjd6s(_Y zK1yGmmFcSbUgXoCj^rjLau$EJiFPN!$zpY3)`*C#sk@MWa-m^ZOvpC zNpWC?8$ zaGjZ!^@Xd8wthk3};GkfgE}u zILK2RfJs2_acG=4v9X0yiLAt4r06(q;8<@J-x!>2la%x>;+l2c&P-h8SETBoEs0wz z@#cm8+s-fH7`*x@c=ama0gDan!<>!mz}rA}U(`tpAnUK+Ji55(3m_Cck(~1$ zX}2J@nkIzTcI$|D4z3wq++18dY9d6@3nm4$+49jZ5X(D#D-K~m+n%Z1+hyGSyd(QP=;oq*04}U=4+uDI>rY}AGxBAj^L~Ci6u6t2t z-BtKn$y#5-$c-v6a3@^~v zgTEBCuNPXV8?hY8W=f1Y1hX=kNsiU0B-i8A4Ra*|d5z>Yx=Hqluxiw>8 zJQH^yv9a1V*4FO0)T4KGMqPrxS5__5#Ay)mhW;8;8{d8Gc<4DJlfx4^45SCX5&ws} zte!@#(w6HQ){BBSvWR#jv_fkk*ztcY3O4sfm2~!+EcaYd-wFFFOO@u?$;QdCR5j@f zS*K%NoThxe&-V*N0m4;%qPJVlJD)$>#Aon!qMpR7lRPb({ZrUIQT-Hz0?`pjEiXI0 zMR4fg&Y<5H!DX`s+#Tq*2uUQzFLKY9YITKwMpODa-1S<*i>^CJ+Yp`Ga^BfC>a`_> zf8InbW%qpmisqxv?(XS3;Gyr^^TY*uS7wb!Dz(|`ge~G&nXD-UF|J=GNMhhAA)>G> z2b()PTx)C+tO=}g?RT{+3z%~0XRJ4n3)m&s?JzRyy4s*DgobWnKBQeWSk(`~dU2a; z!}S_wO5Haa5^MrmikX7Wtave5r~!s&jO|A%H*6KsJ}3G`{Sgp*enp=!>!uu`z)-j6 zve_($7ZnNspnja*#Gi99i;TiHc4=_EyYJz~;HrxEm|GW{OIxHEveBlD-F|1^wtvfv z-(|1sXZsBpG{tc=c;h8;!-(H2n-AG91JvYaw=I3bEHVkvdsn0zOTf`2Qgfro?y<-E z<35NJM`F1BS#;MyS_IVxu?^~97#kxCHa<=!&Uw7;JaHZ$s7BbbIoJN)yZ5usFYP_n ze4fCH()lZZkBGg76{ulmsUzVZmwe4fKqLeal|=9q2t^PThM+SjIMUvmZ8`-}UgxzI zT8soUD`U&c>e}iUZC(MSnPt+dws;Wa;G_M@q|4k(A$QQ&kxLH~x6h`eEO zau%Yze=Y2vQXARi%bKyf-x$ngCxckp_}RruStTC`naPPaR`i-GT2MK39B{O_l)0iEsXCDU#4_pFMK&p!VH<KSzy>zRmPbY%W)Q?Pzj)r5CQ}gq+n&Cc$ zg-@*<QlWKFCG(O;Ptl+&|=wzKQz>M;ErLP;@;>|5Zjj8I#de*mK4ojl@f-q;h#h zKI}q1WF_7Xe12~S6qq)F|D(V7vyeq}OvpGs5cPmNIUl=Aq6;UPPG3*E!b_PPpyB9z zb^YYY<^#`%=htYhHoA~8{juU& zy~cbOht(FGe=B3#V->jNIu3ua7-JfnTrwG)EmjtlCmn`@HtoJ(Ptyq0a6cX^R!XzM zR5F)KrI3rCISe#i8OI8X*g73ohgl&;96<^_WjJXBDbydo;pL&|d+wOM=Hxx67*f|W zQR3;T$n5O(_-`(XeGd-b@0ojr|T6ELr|ErMFfQ@a%&ng(JaLVZtPPfZ`rBZ}9>iVx$iB z-{=C_HBZ6aeja!-k5I4C-(T9}Ay1Nz<_9R91&_Z)JrnK68Kv5N9LkQx1}Txh1C6HoaZ zGArQ&KO8LhIddt|XE;UXTN0Iaj5Zk{uXtjBr6xxRa40rPw`#}k^F=gDH96@fk)jRB ziq{i~b%}fI0yI65Rw=h?H>XVyk{@r%M0>DlqRcfO#S2WtM%$3)=_}v^pp6Hz&@Dp> z=&+H40i-CM!pMpS2nl~OC}+!dvz2hn{x$x}u0i>=tbz8ZHTkj0*S^;J@!0#2$^kvt z1!|NYR%@G^y+4zlG+Rw6=*^be?Icg-cFl>^V1Q#d0@(+=WFerlTSEu{6cothAZX_$ zSC4)XmKt+D)g-tyAWXCQDS=j%@FgboJ}cDdp#er*ZW3S`%xqV4(;f@KkS&e{6ltbo zKKS8fV{=xloz+YMW-Cxh48v8o@ZgC7djTMCF-t4f)RCDZ^I&_sy9??EP6b$u26Mym zMaMkY-rRi7)#X3|V_p#E_bv@)!Iw5Tm1F}xXD>Z?{E9f=6p0ad51_!aw(q`$$xcCm zq>FQ21Wi3V06bi=sv_b9kF^?9N&*3_P*%Kzs|U@S?Ew({14{8WGw${n&;^A2fu!FP z5BXV-v|+kaskkrW(YKJM#edTXNcQ=NWQC?+bxY-cbd29s7J zm&}b_J_5EiS1^gR7xw(zMePo>ZqJh8S#ez`5J1snn4Cf*BiIB2mBT4$_=o`OT&0ZB z8m?cek_=wPRND`ueg{QtMn*(aI5HxdzmX#?et{f06lxR68f>lmtF&7xvP{IA9@ky1&kH z9XWWk!O=jG4?+Q|!TA9K4FoU`S~a^|L1Zl%khs`@@a-Z9|J`reD@mV#qJakL1b#t% z2V*r#>YUQ5DwuUali3>aL2hcN8|bjGu++pJN>>&w@M5|DwUun8l6^9hd3I!CV&w61 z`QCF{|8(oUNCkLe+UtGN=UZ9S*V^~0A6m&|p5!afRw|G4mHRAJ*11ocCcL7a^m%@d=v9MVE~XoNY)MbgIX9ME!x! zG?fbpphi%l91JvU&tL{vo*a22k@XZxRb;4*mhvo+6EdJ!jrq*5LQc-v*QR1k6|^oP za0aox@kg){xXny5ad@(6C?67PnWm}SE6cZh&qV24pW%_ZdWL^$d~L1!$V<++GYVQ< zwRY^zmAU!RXeu81vXOb@A=uf$%8egdyCG|wLm2(k^`}ui2(;N7yz$12F4mJfa~92m zu;};Ra3eA-8>vXVed17u58|Td*s-~>WbB03hbDQ9iHSpNhq7KY=jhQJmzLdc$r#Wb z2jiGaS!B&pqmwUNL7@KiXCKUDsk6@CdiaRS=Vub3D7;NY?sLU~!{@a820{xePHh~#>2Xz zLph76_9R9BJbq3#aT{?^Mq3kA1C;+{`-C671~4pT45| z>s>Xi-kU^udLxxee(fTe8V)lV_={ijb-Q|A_4RWP3#~i|`%s!nVvh8xDxxVlPYB*V z5IM`0j>AOJRw4uOBr@k=+hImNkyN;02QVX{=sI8+dd~#m-WZIc6t~9=nn*oefg?|R zEEKMKykUPc&W==L;8~;bU?Jl3rIf!0TLrF$%uqSKvU>gW*ntD{`J@?`@}X>JBH%UM z__{mhizb)|IB1wCM_d;9CPvFlq@GNpzJ~H)Tl4$;ZZBkL!+Y)Yw2A?CT85--Rs@gs z;PXL`&=UEK(2;X#DK z+MI(H7NNg-5LHi~aJ~PE(DRD4Ev|u7ZV5KQ8(v@p#KImrP=OWf&8S_=RhNi~|FwKX zVI9!xOqgwaOTK`0x{dO&yhCkKhwHW+UlBEzMbp9}#4K9GU1JB^x?0r=5- zB8jj!UY)q>$Pq|6>ZfB!vl>jK0$6y*BVJZ}jz(jiI11w=Jl@`)S7WfGR%0l@bgLV= zvi$~b`frc>B2iN|2M$EjGy<_8bcsoX#fQ@HTvG`wr5S)7LR4rfY#cdqS2~5{-2w0q zDux2}8H_lp`67wE;R&eu>y6botJNrc7-a(#hpa_CiN^6dG>!|X!i8yLAOQD`p&H0rGxeU3@rfNCtWl;NgHFB3>KNJ9b11lY~XpdCllUK&2+0U&h# zK*FIu*zqS3<+kAOxFeBdo_-4#xQWZ{*O(KEm+9Z-NO-@d( zO-^peHr~IwY&4HkRQJYj#7JEWfLO!nsHm);A zgFx6cO3o}#PNqCyvW}iz|NdZcqe{AczTh14Q^4vx7xekuN%fzu1b`Q%|H8L}c;>+3 zNP;dL3zLo2ovhcvU=>N6L4F z6kqTnVNC}VXv2T>Lc|5-_C4u_6Ug&Cb#(xLmEkMvoVaC($R7R-QqLO(tN5Y}p8PH@ zyCLwrfCnx8ozS^5sM||j?{$3!9GJ*%%P81n~%Y{lR2+yD0;G&``V8{yjY`)Fixae z^TWq99*=`w#B%vKa{PH+P7kl`3(dX-FeZ_P-NcK2@ zK7+de%OS)X!w!B=_z9>@h({I=hf7)_!Gl*h(+(lU2UMr5lH&H6(UVaxsIVFR1y48( zjsYati)+}U@=P@Dxw`rE-}t4t2de@qA%;B(ck~+mPTu-nB zzZ;d0yuN#o0}wmZD|25Rc>c574N<`}GXn_Wum%4(5AuTc4+pnF=LfQW8GO=x@Ed=> z>tmGXq~JNVe)vPhfp#4z2HH(5lWRa4O~v&YwN1noITMorG}S;Rvv21XK|&sCdqR`;On$;jf;nqLLxTCMRhr1tAQd&rA?kUsYa#vt$jH2*LF z{51K7SHKXC<2BTX;r+^IM`(sLgSrXfqIw2ih-eNIuc}}Y@{B5mQFCP^jqI8Rs?-=a zy!5t{$3wv>)2ya;UwaCkjh&^X3VhQ&NI5z-zR;S#)4S$jei`!>Fz7QvjnVN{Gjt8HY@yT8F$_(==ICA{qS479p zxro0-h?(_6Q2w`s^IC=r@1ltQY_I73@k-kmuN^&l(+x+D)=U;1a_gxUjK{CL?txdH zz7FdoQCmTx_J)1t&HD}X@49^+ROraXpp_hAzmN>oX1|_#Ue?R)>;0+$cT`A<$s`yz ztN}=7>^Bil^(D{(_^06rI$hI@N1-f@L z`Mh2;ip(uYI23lw>p5ibx|LqqP|?6u2>)|bwVqxu&&D{YZg6NJ=CFH}h^BkRSGVwx z+KQbOaag;40CW1aOafii^< zLJ;pI>a{ygo-F0c3#Do25KNaA%DK|XlXqx->+*q;Tkj&jHOEh)w3RXna};idXyP35 z65Y)TfmaDTI$I4^{RyZyu~y}LnKpBCaOTRokNF!@F9HnT?_dRlHTd-bD?rAe#(n{G zKL8XzGRz%lmS99Ug#mjYEJN=%_l2tX5Qq%ohb{3m@_ItQf@m{h<3v*fLDLr@BM0Ir z5IDv4-nLW0*{hQiW|p{1%;x*LUJbA8Le948*X(`&00}M5d>>RDQ?VIT0vj7En88Re zn#n|ikvG~_IeQ6r%U$#vNy>ATA@%a!J)fXcpBaxsPOeRDAhW%xG|1QDNT@VJ! zI_7&3E6zz~R0gfSIv!sbDJNiuTr7nKTqRfk0S!BU$cEjY4^Q`l*W=-pSkLeKouF|$ z=e6*qt}5ul2J%_Vp#OKm>-k-e;)7`}HFBdcy(C;UB@-mB-@BcQHR{PuT(e+d?Ji zL(nfdH{yL_rDx!!xZd}#t1bGm9=;APyO35MlGpJW@!kb`mG?0Xd zgs00dVe-*K#@h8SJMBgp^zv1pLKJy*?(cp-ARP#ExnJ*P>P@<_(1a?H_n;kv^FSMS2m>-e1DK^!&*c%{O}xrUrd$fvoA zMErKLK4>c7)ZBNj8D|z5)d4#J-&xdc=(Inm(kcO4d}K9jemR!AK2P_QMcBR6J(aKD z{_)=Yi8G^S@H(_{^K3r)Wq)Kfl8l6V|CmILJ3NPn3x84h#oNEu`_PFqBYq?64VqT| zHrhdws8e|y{%3c&ehBOHyM^yr(vky)ghtwI4z`S4m*6)lxtuU!@i>L}2qG7MW zS4c_@2Z6z35a_XNIahP_iw25L_-0Bhvk>=Bm%NYczVNA?N0aFpdkA&m2@E2FW%>af z8_##x+p^!c_o$zY+S$j(a+9(j&+5J7{N~#t9ONDQ4H{fNOBccOFJOa=Zg|&zm3uoc zCdXpRwF>TY9XghWU2k%I0Atb5so}`A&_Ily7SEOv_CXC`$3S4(V4gHEWY!U`V%`nz z3}w(8x-;|+hLwUKEm)vIph|GVY z1_ZF0N>dcjzOPW^(hlB`xq+xRZR{pgDS`vRIXR@*GG;3HB=|0y3YAv|m$7E*Vc-ky zIugcUT#i7U3Tn;+87lQV4PZ{ogoV2}0eudR67kZ%{qQ}TPu~4leoQ?WkZYAHT+4V9 zwPCi)m9qPdsmfiCrz_8W_VG+5L8cSs-)BaMfFreXIaQiF&f{xpiUu zb+QngIsO##s1ANU`{2Q{%8QEv$6kOA>IX6szUatu>V>JDUZ{a_Alr|-egf8jPeIqI zBZDzg;=<3&i2NgCU>kDN=7fn_-SVf2hD{Lm5{-19XxM~hFVO&5Ie=(nntR>p_UI6F zOo9X+iVF_UN0s`cP(EK7iN?&F+rO}~*Mt{Mq<)1|;YA}VZ`O;bO;-MVw*)#36#&AS*2dPO~j@PZsGX3W4!0`-sk2lEs;JTnu6 z6K<&Y_t5>iV>2^{zfV7rizvLc95SIf4lUP^XY*jE$i4mEaQ)0x_Zx+6u7>)7KE8+) z)3q0DFP8QEKpoI70RQ(FmuT(5#Z%(5EC>hrgQ%u8<+kI4j^Eyeiy&dp?f$@4-o4QM z{%yRwz^0DvQqW$}y!$_Aern^eL%n$L(!39%?V6uYXf5o3F1}C%8lIttsb95;mXpsv zfjp1rbR~lEY({4>G&%EN&4weNFtYkoBriC^*bgfZyXgi@XI=NTSPu}6rB{Wj2#c2Rb?s~Tz&4-Uz<=vi z>lvx=A-R2A25ivc@{4EuU|;=kX4Um5kPDDWf5g$4zW_nBXUSLklaSEje0ZbP+QFj~ zYAaA zvROsdW1p|*5;^=|dw;r7A0IC-=?u?Hl?xK8C49XvcD~RqrPHPMzkxQ8r_uc@BBJ4l=tKrOJNAhgNW%Oymp5T7)HhiG6spRz&LU2m0OjdV7E0?>!*#Os=+F z69}lYc9(|%K@Da9Tje2005VQM04`4g2pSq(yC4R_cc1kqO3+Fm-W1u5>BS;G-OlVq zCR{!2>&V<^s+~{1^9|8>;!b9ZyMsYpkyv?rtXwYt`%4}yfW>e7AZ-d(ki!+c((z z`zHJfrqzW7*j)n?UbkT`=i$-e&M%voUmto?!26Q!{G)Ib2&rQ~=EofKe|$Praejec z`q=mioNU|$BxUuOE8}pNR{jOkT=0W?^r~b2w}hrY4%c-m9jGg|{gNdj2vJ_>8UAOd zhPh~+XWyDU2l&k%>|oKmX!Dtxc5r@UdfOKdq^#?BNI#10E@^X^$D=+GHT*CjZTX+W zGrX>1*hDn~I@+|t1~FR8&_@l15+jP&k-}4l6*}%8xRPvB`?M(=ABYE=>l+*7;2ZlD zl2T)A_|}0PhGL4Jim5OAgSz8Ee|*|j-A%{eLIOG+-+j{>ONsFeA=-7C(Ory{NYzrS zCm_xDyPoSS_XY_@e>)UfM~p%5@}%;tSE$%om(7=S3wqmn4=c@o2?p2UbpNcn#_L({ z{j(jtbkR9X);tC>d=9x%Igcd<2NQXzW7eR)qEnxY4Tl4~CT0=6t8k>g8#dgDRPrl7 z_ex(+)M_zRtF5MdD!voch;GJ6Qc6?zWTdXAvBT*}67Z#3F zAs7WY8MKA@=dZD2-fH}PSzv3#^A(-@9SU-+o?`y!->15braXtGPK*;uuaI2LL?^oi z2%uN>3jh@h<}r^L)PNdrUF-%mio5n`b|nR?lnK2gJ~yotm_GBJcCOi(;LDk2R`SgvHli7rebeqbS;WoO4hKj!=cTqP>ZIEHso4Nh z)OPzRYcKZ`%|2@9p8ahmjD1+RgiRYx8gxCVUG>!1*qv^6n(1jDtXauwIp)T5Ul1RF z5VDE@{{Rg17S5s_NMs085e`6z7^FQcqNwDIWkkI(H%1p)Rs8B5pMF!yEIqRU`;D!C zR`<69rQ2>-zl?g7*=&6*|68|zwfFnCl>+ViX{FN7c|04xS@5TB*KPPB>ZLsEiXi8N z_FDwrGfuckI}7|LnrH`5&f#8VPINe3bLxCDn@!Hg<7-cJ+VjDY-oGTHKOdwg6Ws_A zp{Beajri^gRe$cC>QnLfJfH47vGzwlKN`Nv7x}2yX6m>P1%E!8RQ}Q6{5v=wL@vhK z_Bphxgb2!8(Kc|O(k!tKDYkB~xB^8O`!2UyjTTr7I+?;TzB8(rj9i~Bqu6yn1iF(` z|By@`dflN^v6#yDy3f7txnT4mB*t)$c!FQ~(4Eof%`E(sR$WH$ch%e<+DB>Y)}0@k zQy<~m_((FD?|qq{@Qipu0eN4w;{)9eCTet8DOU9s1y^4q%`hvJp zDcU(rYk?13{(g7p_E<1(`U>s)p_}pM!ollTdM|f2+G?lz9L8yuRk6n5(}~7mqF{D_ zLQ(L+G(}ztT0)q!45P+`&1iJfQ3G;CeRg9b8qFmV_g~vcr2>I^ZT7un{xYLkHT~Et zon0|$=J<3kqYZOZVL9IW6~)AIJKCV)FHHDt%ma)7bCo))zBHW zF}JidM+$hj0a0Zr=o49?aQ(fz-G^SeTYi0wlPpl=noFhrkR8u0P8= zf2drx=t?ox?UZHTYm0c2_=exE0x$y|Z4ouPjv<4~B8CygpaA?tJfDl{fDDl5Xe9j!Cx$zZi97Ud z-+`@f3#${W9j&3}GEz*8W8u}n85|G+gfEeTITi5mD0zjDKj2u6A%P7>0%9TGC6MgR z0cfnp?cApQJoqAaGj?3Pzmk5fLi@w=!xxL`xw-f!3k_FibVh7EH{-p7bw@vS16m6Q*%mV-T~ z-W)6?&_^pbaQ_5?Ah2=)i8RniAM8~gwaH+RmRw)}VH?4cX=c_$J@cB#%sz7)^ByB* zL&@`FNqF5RU#bUh6TZCO@XM1^(ah9nCc}!#qqmzR6@olf5Nvm}7;k6Q`zGPIVPuW< z-fxA2YL&YFMdB}iv6a9k zvhC?w^L5O6Rw7-6wx0^x7#5@wmWeOx9PRgw6;_C7y3Jgp3G;oUv(zxLaYMz| zSn4e08cR)Vj1#_M?_|Mu0-lPo=N4pQ#=aTjjA|j%DcG*=q0|GxyFU>8$>5ux3OMRrT<7IK z(l6lMbKf$$pkMRwfJ6^0t$|J11+4_lNZjGJj}S^OXZS;}K%2DIL}MSZ(O8Rd?VV~R zldY+l*~VB5G|1;orzTIVt{^;C6<1fglZeHJYSHX{J5{KRhT*8;HyedQc(hzhAvu}X zn@o-`wA=F&NmOvcbFo@&a%%i=n3)eFhsP%;Yc+iK(MqK!hb0O_XFCU}uC4L7)P9&{p@QLe0ZSoS!|HQErfjkz9H% zU-bw4*QOAJ5Q~)qp;^S7B@&slb0eeaQKouSKXct=EE5|qCypdaixp($k53@)G}2=D zG&%p>|wY+E7^3hxntuL!x1yIntm`2P>OJ^^Z}og`7tmJX3_ zp#|a`A@Z)+M_1qnwQIrX(EW6X$wfdcctIzVyR_#SbI&v4#ya#JsIzx{hfMG$C}($@ zv{si}0ov^l=eBm2qS(?@S#PV(lc76Z=bfRGp~u9v2kcxR@SMvg#uDdAyuU;N-ue3$ zx303_X%F*7wj+0g3M910Dm8X!13##{KXF;_S>Z|T}Jn@cA zSY?gEL&%koy3h@#(t+-Ulr@GX(>R|`4+^;4FaWQLnbadrA^st775_m1~)WNZ48c7cinz(odfcmi>GmN zn{mD6RV7!~*VhpX0^sr=zON64*Kq1#Az+~C2d&|qy-o&uEY+sGPCm#&or7cgFKYa? zdEos5W2la?l`#iuE)O_Q?39(P5o zS~<=O&V^2b;u8okwGPWGZRqVREnTD5abZ4gqFeSn*zEGZDp@i9+q{A9srLkffBfVR z>(2MS4ivKvH9f)%LJ6=gs!VqKDWLMocS8{GA$|Ryc)c6ek8F$X)s?_{xPe*yF4spe zdK@DD&!qu>GND_Y<{~cPBAP8i3v~{%;`^XTL4ImRM9Uw0uKV7CoHKj|*^z%@`k_q3 z&+oHeLCgz&&4~irblnIQqJCuIi68@0Eb3K1rMxMm_)j(w@Ek;VSAL>cJUZD-r}Crj zbV+R*`E(GDU@>HwjwdQ(7(8@ejvF8}!AKZWJI0bC}44(4a zhk>Za0|h6Hbtuh*%YLR;g{uS_4Ru50f8B$6+CQGWOAxZ@e*!gWWsp!V-A-p#Ow^{~ z073A^;;Gj@4P9FhM{W4sxB4Ik+2L4xzk`_L@A4DYo`brA^q||tXcVEo{Ut{5x;Qmo zC~o(!aq=34!YqlnVVDtAOMP)h4k~~A=XvgaNN|4SFaK*jN%U3r}%i6jz1%D=Tk6WP>jVySpoUE=lw7aOZzZ_|=@BZ4=ht*R`laM8~; z&~~SMb_CkihptH5vC`{sK9E3A2}>xmCo#A-h-@!{BghBf;A{HRQ!}2KsWc)|6%u(t zgHbLsp+wO0eTV%&l1#!@?lEIAqy+Q&lS$+#4^yBDBUkyKU6p@`!n(hsK8|_13{D9I zPXv3i;)5f=1#<>}0;&aijq^`X0x3&BPOED365vnM`H0 zbVmp|y%Cn_b|=!QOeK@?herNxdinUV3c~kOKUy@5;*WxxN>`2@U!I;?8_8z;MFa^7pW&G-CcDI8h|g=ZHQ>IfnA_)8B8{Tm%U|D-W8Ck<1yIXg@{PdZWN6pXQ{MP*FP4|q$sn~ygw>#T=;+gE1 z_yS8}WSGxe^ir@hZ9#8$4IXn6AFeJAY|j)lPja6o|rqb z6LH5pqoXU6@Yzu2B~+&kC6?2fu}s>Cellv{NW~wIOwX)6!>UQotj$bE9>*i3(0JpM zSeeU}@sE6DyiyLh%sx-2<9TMt1K-K5I>djSbP&4kT2f2BPD3$*Jl* z+X0fqhDek6UAW%tI=7yBRlmK%uPjO*hOhBaYYsdMTpMQvcW78G7ZHmO#ei}MZRQ0T zekpWONeux_cwe<%7#%GXMn?)qOT~1$G1e-@VYmy$ODNX`wTA(&GhQW-WdpVYYCtli z?pEvA(()1tWf*=0DJ(ff z&mjUQAtC0TU8Z%U))p|C_|imk5e4VC4oF!&2NC$1St_o@3uL4V@wH+JE0(uX@p>Y$ zLLLi{eFrN~z7VtT_12&Cqf`Kt; zz|-j`)R+&vJIlh_N9T8=a6FXC@c9eD0MQ{B9s}*Apjb7!>V8UwSTw2V7uPlxngJaa zJQTVnmI2WUkUh6p0AL>FEsQJtH}E1vCL`B0;_>20J{JsDE|pP6CO=Y)$Bm|mB<2U) z_^r&G2WirLAls#qVXz>!&zH%RJ#!g2`FXMj-OYMT)9diDiX$QyTAz-V6Lc+Ll4$L8 zRnH`d927mk002MGLA04_pByi{j6(CoiPplgN7cK?J8ew~)nGA{m*||jvv9N%wV~Eh={ub>QI$vjBME5AYq*(mfyjG9ov+)?RSW`0ek@tOPR#s-#(N&dI)phiptyZgB>XuXu=oV5*NJ0n+wTuBFz$%Oe+zX0uzpcs^fD*k)N>-p~ZgX5Sn|_9k=YBzSOt{)WiiEi0Way(TyQ3<5;Mo)pd3uc=2F zzK+N5X@ySatgw01AD&x281aw)fIq|METmo1b~EU8nRfF!qhEpn z3b@9Lh(XH#SX|rypdvJu7hfKPe?qUPVfJ{etIdPwEd>5PRD=RD!bAHY4s8oi8CSO$ zsX*Y+JFQH%j3wLS64SY2u!!rqe+Wsp?0M;Ir8^k}a8fDc2=}+!7`i(*3Ic3sRg^{8B82eH#1ttpGfh zI?c%$LAgo`Jm@p$xFh<7OnbnExg zoX9)$x=#3-;0jIvIyRGwNq$w6--u(T0u^e9%rR$i8>BRb1yGSTT$qYt-j8u0h0Rb^ z-3_%NI_QC@WcupGZ*F3?;K6Q2&-h>vg8aJYIMCZT&e)ja+#QSYl*KFneFJ5+_9>xs z1O6qx!8Yc!_w|_4_lH8b9e2fIV`H({JEgTADLkI;qS;!ok#udT3G@lj0l_ggBWGMu zup#B>?Nk9Ipa1iG;ScEs^M{4}A94RjDm;3+^jy3B+|utnw{&?S?W`X}C{go4?h`Td z!EcP76|PGpt}A@@y29m!047>i>T~&^VMI}PYRRNaYYj1rw2YhN3x`a=hO7~eqNl}W z&;X1cXqiRrXT(!h;4K#~C*-*Xj!aM4Ee$7H_SEzdy^^j_3VvY6I+#|%TbDB^l9cx4 z8yR`vOFqxk*xQqbck?2_Cz}C0 zCS)PxkYZlSWsMD^-JU;;Fb=mu!{PaM+XysIA^>P2QLVw< zsEM!(n1W_gr8BiE999hDWHV5iE0vviq)@2ee$XF^hJxqMvxz9&^bg)%FBBqir(Bwg z$DevE5P*IKOCnu4oC{h%PFVWmRxo$Cg3OkrT?78do{Gmu=D`?jG;RXlG1QM@t?2+i zSdoM!U_vCy&tee#DF;^8EJs%svdFer+y<%U-jd62Ix0R9SB@TL74Lh-?x4)(3`9pg zw>;ifsy)6ucu~tI)i&Oh3-UQgnMBm2%nkGeUK$f*8x8F`*;qPrZe>{gmiBMsJS^3|94$AJSC;i5&YWE9ffY$5NAYMhJ57Cwbo zz1GiVDuZwGrB77kjW3e&#yf84U1JMT1^W%NI1Xam`BIJ_m952U$9YRbPj1NKyq3roJjK6GYm_mC0zh1U&NR&lqLECtK6t;N%S5t__k;Of z4EAUMk>W|9Vx~ogE))`YmyJo)N*O_eEDy<+VM&u6=UJ*IwID_*Wq=>blaM*0rCN&3 zj%S1EOnDbfi9-Secu1pZ;dn@=fk+cO5b4lSM+t3&s9#>AJN4nP6-jNSBEYBNR4Tmw z4p0;fY~=0$r!NBtjC383Cw0c<&1ZM2@{ZHqD);u%*J;Rs{u1yHJ}}7nA-T+eK9__5 zC%KMyuG6%b>sg2ZrV%sMpBJK;cN@7LvP)*7g>dTK?@onT1gZ#S@0PNScc&t^Or^qS zK0rP42hN03QyJ&X4bjY=vNKL*RL9NiohLxuz25hBZw9y`G(GShL~)ITvG!yQa%zC6 zqh>>g=ogtTZC(-j7#V|A#3|3cai9H)ol!DT+HXS?3I z6plVo{i|NOs(C>Bci3gWLnhQi#AG|)GP+!PqbL2*lZ&G#Benzdne?om+?933eiZ@W zuC4%4JWpsxA{esb`3~;WYfL--@2b4l>2hy_SMS@Ge52hZU!Oc?rL%B-7?Nb?N2|O{ zXJ55{w?=yi#>qmfy+3Q4>F+19(Doa*a%`Z7+o=(Zl<#3;b7Um}reCg7YVf zS+VOJ&F(s1x$NBV4YVgBdRghg#*{@Y!Ovff$gTFfWf-@o8rI{DJ01XI zqO$c$HC`Sc|MrJd5b-sv@$r2#txzDF>Wqzr?o<9~E)UxV7);Z@)~`N#;>-ty#@HfL+ybIQw>f}_hU^Gvhm~on8``&X|Q~uwEJieHArWZcv zpU)z&crF+^V5ic#&rLQOuq7)^!U4AQU1l(b7~G){9&h+#(L}oqdo!fh%Kps0*_md; z3?@@({Bt?T_3vYy0A4i|gcVpA*>Qd&TyIQHMkA#z^fk{(AseCrI4X(EVhg&(Ex_WA zc-^?Nwj}zFJ<1pnSd@NQv*^=2Pg#y-Ce(svdU*vv89;cnjuxaDGc(s-J2NAan5`i= z^5*Ba+G~;7V4E$lCGBPm^IdOIy8FiE1>2Vw5MF5;%ME<*3jBrN;(MR(dEZxob%gD& z!mL9Ch5T@toB$X40DEEgxjCd6Uf?14%)sMFe=PZz>MQCJ%h#Qk$xLxl4^o&U)jDS6OTR1TK^u=dX%a}RR57?(HMP3w*Hdp3G& zPi7#)PQ>k~9r81~qd$bhc*3>=*+eRcK&$#v#xOGaQZix(Q^{du6K^b4Balg4wJo{i zwYBpYwAJt$@b>CQ9>OaMB?b*&jhfq<-a-IL(+`r}8VnX6LdtdTmC@EKegklMJ4oD} zOdsC$TCcdNLwlxNK=9)RXr1HYZTkr38oX@9MRPdareSK~Ew}wEd*j?t&NMRd=4t%f z-D?~Idg-zisS@|qGLO!qkMwXi6)oPy#{HU|L+SvehMo)eo%^A)&wB&l?bY6)*;M&w zy}^NW*pg<^Jc4kH9HR!B=P;dTTmAL*y-RmbuX#E~(ujVagRG_dDJ@=szYpd)`NLcu z{~xF1LjVc*+B_vw5K!_DVkh~OImqd}sk6MI zCT5Zd%Hs+QB9Y__+g?W|-JG$`!)Isd{g6yTTxQH}m8#XsiB5;eeDs^Hh~pgv+%;e3~eBMmsBUYjv>JWC+)?* z^iU1c%%V9gxxpomt`R<(T9&~j@l6F~(<8A#t%w}HI8?JByse&;q^h>q0IZu+;aA0S zTd>RO(Kf4RL`fQ*XA9@i!r+oS9YqJXB{I;YuK`*8Iq)DZx6Ci`kX)Yc%h^WNQ^@Sf zCunjOL8+GZFTtE$hNz{t9187!ktO#6>;U^|_2QAq3B#C}JmT$p%dm07M+)7xjn|W2 zP^(>a5hlgx5b>MX)iek^;GWyZ<;%fIH|!+HP4eC zH*B=W&3S-N#FZj0bcALjE}Vtm-D${T?uT{SJCRlDgT7DtF8Y2+U=?~pfYZ(*^OS9F z$6)7Ttt==ncaCCyf;2;?xaXL~J6FItyK@+&pze0AV5;w2+0`0whq0Ga}}P}+u;CS7D&chNrrRR4_uiV0=E7ld*^flOgejK|0 z*JEA?wIS3Vr##4Vq3QKj(}xHFg~24WUV^j^1bAJ+=}~BR$-6YC_QRfsgt?waxFm*5 z9o-%k5VQn4b?^W}aTzO4CPQni(8Bn5dj6m;h2-wQ!Ba=g7BfUekzFomrUEePv1$7s z2xLQvblR`4T6Q8}fxg$5{D_>B&G^;FRk<=Zcks+=w_IULE5tubq**q5@Zj8BrK0|^ z0pY9xDIlJWXrBQC$-IznEZ|4@V&!+D^#;<{@VW}{GQtHT*%#78A{lNpTE`mGx+ku& zGI*l*py$Y(V49Oq-sw6GaZq^W4nrz8iacLIhhfnXWAx_7;Ju-#3JuSo&H*b$8?jDT zZF*S>)MU&-pgVlh!S>ui#?}A+|1Z61rr4V|bd|BZ{3=L@7Wbb^E-ai}oN6zl!w~%x z7Vil!rq|(_A{a0P{6Z)&#ZX;S_3)KC88+y{UUo+Tahp?ndim?KN7*#=C+3-zmDIsD zbSyB{#c&#MvZv|th-TT$$ds=$T12NQrC!ej;1(?BWf_&W~zWnGg= zIE5(=r1dye4H7on`ogwc*i}!00~YdH7t1vgN)%48yPY=xZh2ae7+{#A8##ifyUa ze?gu++AN+Njf8Vp+8gy-vr_xW1w+S~N=-lH$QOA`iq`>tIT-z@J1 zLY}m|9?K-C`Lpl_0L1`h3Ky8jDxpwmVGv0QAZG+<1^ts{jMHS}-(xkVOZ^WYiVq^ueF!atH3r)h=r~{)X=A}aw~B}Ci$>!4$aSCp z{B@Ch{BDIjukihWkN_Ja3PUjb6FUwFi#HK_tBFUE1o)x9ofs zk2XG@HH_?L9@tK;_gSLdccoT?FZ>_D9KnS=r*=Ja?q!~-VW@ue2=R8cH(2#&bLt>p zW7UtxtiIg4@M88L-$-sa05U?kFrIXK0UEZaX&b?iliJ)3gGuyvgzmxf8f|h`kY?h% z=|UhzoQNV!8$CI23phk<%w85U1z^Q73B%tpLwQKga2KYWpiRvl^pMg(P-$DWJq8&**a-=%}@w?yXM}H1^-4AQ(andj*H7)u{ELTLdHn0Loj>1M+1(2xEh|{nf zf%?q|rU>Rp9N9l0%rfk#R10Sfau6!cxTf&z|4|x$<Q$KV(SY&$EdVrrX^t zucWD8WO8}2M%FvA6L>ObOpu-wgHSm_f9n542@U=ef}YcPO-_k6ygD%ErCza*^9DCK zR$E5SvPc4sZXafA_*>^6YHe=78Deut9rpCOdyy6Rl!tT1;6;>)aci%E5}Y)2AA+9S zf(0*iu#6z9eaPjLG_!^eg~Ak*G9$d(@RUnkCg>vAyydPbB#p)`?zGlYG+6xa(aEZB zhBJL=s-d=4;Y=8CNBrR;8OxATTOG?lwDVB8)1JQV;6pL%o8@dSihsFmdFM!fhTeWp zN?l4gHobJ-3%1JoN%!Ql^dow&dvXc-s>GYBFylM)rbPNNSn%O+@0MLVY}7)T9uApS?BRspam=Mx!=t3|1ag+#afhi=PZVID zVZVCGbR7R<&hpgMvNKV%7OKcXRw5RApB{`DbN$La|6DC!QZ%Ti}SPiKVvMPnFa;a^UnWG~!1z;4K z0+$dB!h;AH$EjUjUN+jLvK5L%in#rNihxPBf`O@W#h#plC(VZsot~aH)V}G{he{>h zJGp@PI{`X|7E9Od3z}9iU#~UW@SMCR4cp()n1%GFMz|RQ0L!WdZFmOTSzc*|cdn$4 z!`HIitkv^D%M4DRDi!Hp>aR_qdA@C_v|G0FZ+t(3zE2WOG}-@2cFTxtMNcaPw`7mv z5B;t!c-ZTVOsM-F;s>$$fyE?xmOanF0PKI}xZ((KEW7A&G;$0$t%sjU3yO^R_wtC0c%0HdfK{Kr=y5xSUT zBc(<%o6pA!jhY3MGro(8A$>7giGc+&tj7a^^WYq@!lcv>GS*Pmm{n^OU^$*mHcI@Y z9AhIjkd~MzE8EEz5F((^$udz4+?*4M!L|k>eZmi|Zy;?D^QEB~J1iPf#J;30YZd`7 z+rV4x{7ToXt2TO{BLVt_7eEo{kzNYsR%r4{n9ETJV&S+lPE(hPE(}GO#Ccf8`?6~A z4TP!whJqDT_)q@iPyaNgQcF>PFb>A&C0`^wcqyx#Wt6%{EKA z(Ri05ekRq&6mXHKdbBpr+SPvkb%>S|Vs_jYkJAs8gB z%P5V5S65qh*bEkF!!UMsA3O?5Bz$7=B3!x;9YS8*VhpB>C9L-8vrU*q6ya23A1>sJ zc4pPG*Qyv1&_+Py>A)ldz9UcuNUce%2$XRG&Q;fJYpD`V6pE|sMmdCd6o^!yiU>y$ zgelw8L9{n9H#yeIEoa6}FgV3x18#$HI~-bGGQ&2`YYm*I!sd8pIX~8#n47Q>K4R?X zvFpmY}EUKBA3Wkp~r~0d_jmKLlr_)KMo6U5x z({WO*QJa!9J+%-)*~k)vNN^s=c%jz?B?Td;_t#tOq4S3omgg7dmtKq~KjWW=r+IPE z&so9DT<|j&`xE^h{vfDL1+Dy`pSOak9{S@KE$e=m-9@!`T@=9^?*C6)^6ys>GY;f7 zSb`2Zsa%O$?O?FpmH^GXntBBAQ-fDie}$d40guCgfb( zy+B9{Q%TPn)TH=!D;|9YD_Wcqp8@*=2|ri3gn(Y(5KE>Hg~RxdD!QE5N~;gQ z%?G|)pM3WN0B=+^tn2eFq4%6`3x&RoMx!J?8UP^0_u_!}Z}j{4%n>=Qg=i0LM0>aq zzMLQN{jl%zzTfeE&G%oqT11GtxTMqVa5eNGos-ZB)Q4jgV1#s-oZT1EO|YZeRR*iY zJ!J^0CUhV~C$1P)Q^~q%b{oiPJ`k8nuTzP?OxXn7Ltp0kt-a5>^7Fk$3^-vxpxWO+ z2Z5OYu#Pbjh+De3yHrraNGV2T(~fgM*^Q125=Fgw9MlP@ja!x>+C*jqCTD=(qNjbU62;2 z0TB+GXJj?{H1fc;#6SB1?ki#LX_?0c*4P*&2y%|NUQk+7?+ z&{(Nh1|Ij6JPT{pDh5EHu!9ceJ>n8|F@z9YRKWtQ!|xn!!R1v zO2+x{cct1Jv8V)^R-#|gvS0G4DR8Nbs{=9$s9J*M0b9d#-T-#PhYBS;#PBOzP9&?l zSWxU7F$v(}Vu#@8Vm?nzC0rQg0^-uE#ZCls#Gks3tnZZ&CC?NT2xj%J0Z6h)y#Zb7 z&mlsyX>z+bS%ZcBTrzCI?|OB@cFN&MG|6cN$J2Tkqmc-NCA&ER;)z-<4)5wJ2p z)qC&?@}w}3()14V~7A$WyDavjv6GR$gg ztc2j?u$OOD*+9gOKY*Y~xG_#;LdWF*;g0pdG+yeR$T}8{`oTXr2I90N5z!=$%>eU)Sje&}e9DFWJ|T%GBrq-7CD4utMYmo0%OTf2qv`QzQqdZcHYZ#KAi99-J_K?h`+^_ z5GY74A(SrL;EC}>F`bI#!tiqR2ZTnCmqG2AaS=>lNm(%~k_7u+OqQ5`*X?{eRYF{Y z^w4ZtC2+Y2CO;9u4e?l!lusCBpB0N2${?{xgyRvRa4wcg7t^6I=wH)8Os$0N6u=Yv z{e?Dcq_e!Qnaf3;AVQ=^f=)DtQ;b>L(EV2 z=mA7hiX?*u$Vy24K>Opx;Yv-JABZ7+R7_?vsWE>tRr1UNGV!)$wc|rG?NTb~A4_F2 z$s&L_ZW1>^1KJG8DZm1dnaF12A=3yZ5qc{e&ZUt{(m-G@B)yDaVnst)q-?9|hr-{! zhH0Oz!3AG8R7EuVg9oU&06jTxT)VLCJ-Kva3goZmdkM_tz&^wvBx=C!a;&gNL8JZXcj= z9-8Z`n9mPRM8?lP_0-vx{nUx;7xza$`{>l-Yajh=bpPV@i&L%)Z$o_^Z#^ykWa4)K zxi|>0U2-|l?qHGT%@xKb2I-FDpae|8G{JZN`B~dO8=i#p7!wd-PeEL%{DcZ$di@%K zl`0r3Yp(~322i2ia5fx18;(9!h?T!FH2GNnMmbh^EE@jX)xTz?yUX#P{p;0u`EK5= z@!vK+lDXI?;j1gT0j_9xqNRf_kD;B3;1#VSW$06(Jy)(!Z^v_S)O2LGjeH--NaG@G zU96)>EF?Uz|&JnL1kkDGBolp98PH}t-sce#J zU_(49pFV{&XIka2P!Ik1Kl`R)_sUk((0Ud2L_Yl~dVBSr0zE^$#g^oRNn$j0)HK14 zoJ?FS*vx|~zz1Wpfz2ki6lNQlwuc{$tB~vEUt&imcLG7y>_j4Zd(=>f;*y9S>=wJ7 z)O;!uZqD4Ty>u=CiKgDvDu6U|p{2L~F$Z^@=54%vZno+VHtrr9gD_glN)1SF-gLaG z-yb;Wi}34O2SuT069F~_Kl0Az80>6`|M5k_A(Q67_-U6I)SH8E2hbHRle!?$z`G&R zL;-UpQ~5x3J_!SrK&KMi#BK^fk6TKrwL1`mJI&FACZv=u_f3S+Y<%Wt@9~-Yh4uVLGbSJ0dH-h;2jbLruOOy62 zT)f=1hy?-=G}z9?&V`f64#H-2`#)v`GZiR6h+hJg4D1USiY;(|24XFUq0lUw_XAr5 zn1WRDmkpkEmje1p=DorELlx#_XfqxWf1CuE_4q;HLB^NU1M^1a1Qk~TmPsLSL15d;mr9u3k~ zBM9RIW`+v}3n67BQ)$1x9Cng0*1#0uMMw`rh*0PcJbCoh*Y)NjR;|9Wdh)vYc{@Dy zHZ+NLzc6N5w8DU|scWSH4D5#+I@3HOsC-?nt8^F|E!Yn*d$XSkC0J_2qGLmS(ib5| znDbo^sIVuhGn^*pAy^3MPGe{2PD98#%n2Y>P=Dx2fgtDs@tpyhvGOaXeEh7YY!&MhgXm zmckmLoTLFh#PKyDgFK2gf|xb%R>T`aEZ|>(;!BSpU;P*d9ekL~3}IMs-AohudD<^^ z41({c2^ls|U%z=<4Yu#Ge6CoBg2uKd9=^2}wo;A#_41n+Frz=tRZVoHHj`0d)f^ot&DPZFJ>yK7Cu~`0xItiW5I^QE-iO?mlnyF?U;xtfDk#37LM3 z#tuxzfY7lZEt44J^*jP(U_}eerjka4Lio6yY0k;sHMmB$3+7$dN78*f5NG>dAAxWz z8+zn7c+SAMlat(r!&6gx&%twoU&#+X@cl_G--~=Hsh|z`v=xs1)|GGBY0||<)Wc0O zr(O{7d`##Z&Yy)vfx|9b@@5z37N|I^O@wwZFiQM7I&0(0mX}09)m699?BhR$^?l=r14`n-{1c|+ar*tccfE_jd$vznhowN~|KDd0=Mp8GZf9A9S)==iuXrUln0VBtKg67lpa}r?N2i#sBZe@xgCjUdI0u+00}n zGnsw;9d~5F=e;(ax(CKz8JrD+r8{>cgEw;VDMBl{ftz#2Y<)*o=Hbf1%nObS)=_6WkG(Q z3469W*5eeQ$q7VoebjdzqYC>YXrD}>N)Cz(;<*!slHPHuY zh-!7mQ0k%eRnwT@)LBuWMC}%U(_+^|gQ}kzPaQ)D=D|-1u@B_w?bVyx>C~^|@0x3x zP5jrkutcw34T$nK1{)_r&f#jvc7oNzNP`oqRSZ{QCl5?c%VhC07iu&jcxQhoWy`&}z)U6-Gaqb+Yg zDkphAEQt|o5c8cwDugAhKwZ>He2E|4*fn>__b}uc`BE55p&SzcT7ssae9AmV8oMse{-o+3b~k*OTS9>KGn zMyF~(Ji$}H0TGtr?>1%_7i~g+|K_gU1S74@G`fC+I$=OfiZ+aDr{N&3H*IB51c3_L zH}Xdo4m|&SUmYKOQTG!vxVjzC~6Jr%T zZUNK*bO{m`wbc216ab8@VH$cjD*S~hbp5_vpn`NJ9Yu1xqp$;F<&NmtZ24dE@b-71!xKcbaURUN6!RtE#vE9Dri<9RQKc;~p}P3NF=RwR)VhyqRN z5Yr$qr!X|qM~H=>L!5M>6}`+3G`+Y2(7S@wL*P5ITl`o#;LMatGftosw7bRh$y1zmK?Qdmo#az3t|0}7S3;((3+r>U_7qUU2{>L{!2#~ zS25Uh{-PH)jEL<-t%+_J9G-2cFnkN&_BU#6@JESs!2=Y9bV9WcLl%J0Vg~SF1jZJq zZyz39{0OuqL%wAbF#=9V#6iF&O5E{ZWHzomhM0w^5XCf_f{ba!h@zk&mt^Q*7TpzG z!VzA=TES2gu^<$_K2Rs@N@c8B@v4& zjPQ?GZkWg-i}GB+n(~>)D1__6b<|bDgE3!}{?V&{v8#S59?lFtnhD3va3rC1oIVw= zV>u=xVRP`)MyJ>7buky>+8~e4c^Z7_G-Qbn!9P(%>YRwAc7PcTKxRN^L&$%G;ie#tiwSfNTwydLrv(Q= zq=eeM-xDFf;Vrlzw_Srf-IOis6)kvjonuSp8_Czpt!ws=u;*MBo|NcKM{rq?V?Xjw5QXBur9Jzo`;rObPZWBBH+7L;OdTFSKK-wYyF4 z8P@Wc31ul^T5x}(MsG+$H1;IBHd0Hb_=e~?!(T3Sz4_fhye_xT0BD{@T>y-mh`3>fQ;{`c@scB6;Nr$H=DS|x5`#>-lQ<6nj!Z4M5?5*y=v}XJ z^UN>=^*v@$O}`p8ck3Z(9b4CCC|XW@CE z&faLeC-4bS#xqX^)a^N5{KyyLewDihbn|VXiRUmj#{CMGgWorQ@YAOC>H5Wsm-w*T z5Cs;xynO~5&wb$|>Ta0wsryMr&wt-L(WLPdG*zIU{381&tq=q6IxE&pWUQobmX`Bv z_KMd<{O0_!xULe3zyvLiC;uu;0|U=tiJ0mWfnWdiK;VZHaHjp?AkxvO`g2H)jT(mP zDB~?JB$V;mO#9cvsvR`m_BQIW9}I^d^at81{Oj$^YYmln;Vp*Hbn;#X@opAeALNgK z66kaGI{*b<5Im6CrP7Y`9%5|rb#8QJ4%x`5JMn>=DT`Rls~ZDp$3*smSZWoV30CUK z;Q9QUy;)0kk8DJHdf&KvI0I#@8H&c>Kp!v*UplWogPcat%o@1@*L=PIul9LUa%)>7 z%QvUfZ`MbDmYPReBs&19R5X!O$I<747oNtqWx&s_`F!BrDR5pCj|f+_vKYkTM;2pn z8{pW$P-xjCXL4PPx$x=w=K?~Y1X!?Qor5AtefBOBJ}fW9pM+sX@-1OnPR~40QvC|j z^rj+l%RUp1|25svjvTVAL#5)(_dfc@Ye8x$=zjlpzSZ(W)YG_iHk87u_HQ*#LSL&U zrl)U%iaPcdD-s!7h*jJ9uu4`^iPuGgf#5>XG>eZd&&}0CFe(R&7fl$dUYj4U))Lze zmbYa^3F|Ppz==NfJghz$q)sC^3L-IjrU)eE!@!_|x)M@F7*`+=id{7mE5wcAD^(`* z`AE1{ZQM42;2i)V$zm~;L_VQ9fEG^TW+)sDPf{JV|JrN!&#OFQg&;{rp_rT+i%dkK z2q2OuLAaGliOWSglZH~B3}JZUHV`(Yg@vUPo~@Y=|9QJd=bsu3|{2%Gm}jSaQ60nj(t7P1nL(W?Ayw6~^Jz7|`M>|JYoo<7B;+hPF*zC}B+ zXd3wwyfYwuoSx!cjir5X6tMO!HRP;SueTa6g4PzhS7`m2SE&k#%}K^(A)LVlV;jVWNaI&2PC_&Pp5S^ZE#qombMXcA67sy<@{@X+Xa~9 z>!T-B0*`Q8ucP7(1C?nG%oQu^oZ(~k1aJiH{Fu1*4oFz5tjzQut9dsEU~_{ zu#@B-0hKVHMz?@gBD>xzF!Q z|2Pi_dkJv?poiqKn9Az~L+=7CBu)ch8Z0nlH4g}4hBBej%>2od3+8%uK3g@hL}46d z0tDR^ix2)|DDYx7n?p{tFC$v?KjolZ$h0dnJs5FYy;vJnr5W` zGH07Fb8Yv1{Fo=7Bt*P?E3op(CoT6%oXdZU0B{Q*C=AniGL^7&j%M&lJC@G4)-a0E zG($I~qp-{y9y_Mh+c~olo@m$E|MUswwx;2InAMxEbAHQJLi%uZm6axWo zufhYO28^n96Ib!mJ9p}%iGP>N|L7aDo&R^@-;dtO76yN*JCFB6+T_{NaD65r|GSG` zq0q*`NN{ImBb5u`|N;!gXwgl!0d20atl1 zRu|gqnlE}XL2tk51Sa7b6p2)FITLm>3=E5Z4Om39=F$b^mIy+?cAGfVMACCAowuWN za88HNDn9rcL>Pz(9xCo1gZdPo=e5fH7nS`{sKW!uZBz!6=zt4&8u7O0l1?=9M%YY5 zZhf@|%dak>-L-sJ2p`o)NTT0FqnNV!2bcaOx=UgRZ9|sv9Judy`TnKv2gJr3NMr#t z4#YpCfOGstaMu7vn%HT%dkrsi&$0^Zp>sUWt_#uS2xrGw&742tvbWL_`g$2tY-K+0 z+1?3xl;>b!V5I8-%{0R(r94p|N+#e9-aznxBs^dp+ejdZkg5Y(#0*fO*uuHZC?li; za(yOK6#$iJ1M99&x24K>v+f-y?QGi20<$fzyh^Q%+HWY{^NK&o+?fO-00IGVcihg5A*@XPvook>@D!6clc;m z!r`E3l2j%M&?W9U!$sT#)g(qqjOHj@rXC--mBS{wm1W3HdPmTi7)gxO%91&hJoUrS z0{W9d>q&}CKfbThE+Dl?G(qzodghs+L5 z@T1}Ejp<=8Xdab)03KCad@_azzFr*dI@&M;wvX%@M(-l4+Fs5>Hh}|Bmf-Ygv}?|z zBRN^b4*VURbB^=YC~U0{-x3McA0l>Wu1Nu3ngd19JA97Y^Sc4@22r1E=@XM*SJLK(kAW#nK zuw+9abn0AhZEltVliUQ=4HJlW08`M}HC%wn26C2++~M6hx|cP)4H?U(FAnJ$bCCis zjbtCqw;(xFfB!-_9uL2ej3*oFLIbU1LIaN;1b+$x^j+%{O!SDc6 z)vGi-*i##JAh0mvKiyZ`unF1}n*RHIUl5vsgfwECc=!jA;n`1~sWEyA{fHlYzJ}Z- z3Xf=Ro;-=nKfqY{;evwF94H1Bh8dGm8{UC>3XFPq45|*6!yk7hn2SX>bzk2N$5qQp zFs35YcNU6`cBFciE>HS806p8WW98CVf2>rF**Hz$SF7SBHjgbVR%?jGID2~V5GQ+I zW_J|sAE7Z=a9H4kJ5l9WF#Bl23!YkmAqpEF06Y65&9RbD$9LPIP_VEV&F0GP$ie10 zgRo>s24qmF-YKOaE0h_4)`BqVgEfkkjw|rqPywlU8W~0LjemhmGEiN9rVQIg; zzLPPCuL1#MAQUwjJ;;oP0xE{oV9_jTVIo(+o;0kDXRvw%_Q=R^#*3OO>mf&s5oB~S zMjRq!pYokQb;|IcKK z=3;iZ8wQaQYll?*7J!^w0BFB%sQeM=%_}QK zg;>17bCrm4zJQHaB}kSQ3T)oEj=(SCaLm-KGoa7Um(be^HZP0hKA_Qd*2I| zE6B3X{nYL<)gLQYl5RleT(VLg^YrRHJy3evA3ga58@uBUHq6FOoM6LOD&tbrG#>F8 zEI8B4dCKGA?*~bIJZ-EcoOt@17ZZ;9xr8(5#nU)K9yfiT1O3G!?t2&33YZ!2tK?}y zSTpFGOjg_KvFizwVGHkF^Y+q(QX34f@Gk(hkVq|wmVjmo%j|YE1lSFB2Fp(>cza5( z0G*9RKWODpVQty+SAubH5XBBB6{kt32-YGVtoW_vHK@ZAQGYoQdBYnbf%0Yd_zTN` z--U>3C`2`jFJJY(SwvOyM{jH#jW~$L69~rdN9b~d%;KEHL!sX@X6}y%5y|RJPUL9g zrYOYp(L3zG^i(i%hunKpoQy@V3Wz94S=VkSH3@BgAMUw>60d}!)}^6 zR&|~nZ(V{%yMCgNsK6(rUz4pmMwb^RsQL(9L`5zSQUbBPIFSG83Owd$%o;s>$h}ATX4rh#dxa!{_Z0>5f%`khY+Dh zZ{@0ifSkMTL$^~k#6PXYK(y*7$2!fR2e^XS+!z!aGv!!0Y|P>zJ5M#?c;i0xYOja) z%|}D;USHoLKK5RN`%ll75`jXoX{Zg*P<23n6Zl?;3Efao;_t7SH;N%dN5LQ)-;#AR`U9WGJ#9>;%CSl%R!&b0 zxwXN%ch%ePcv%ihM)YdN_z|w}Bjb|VLGySoYL*R}qUuMT9_v(N?d8 zCCeHhGby3zn6!bFuvS9luc*bqd=^e+Ms^-So`#13^^Yh=Y)zIAYxoD3pm>FlkZEc` z=E9&m3a{-d0*v1cqgUG={P}cDy)_b^3di7fj=4OYb8ko8VN2?db~mdZpn7aogf`N? zK7uT=@=(M>Q+nfq9_%FQ4fY!wy4c-$l|0Oe@Hp-j zb=4XkT1RWTt>JcKZ;@Ad{py#{Z6YJk{nmhGtB)3Wh>c-(wETLgM1~AxB?ro*tGX)) zgZq!y+BV?n+3`-N`q6ay&P=hC`Dis{#&1L<+(=~b^LIXV=Tqu!*G3`;MtdX7FRCA9 zl{?evk5)UKak!f2F+V=RT6l*YAG{=H{b@$6+>42^#4p1aCgd`}62KI|_rm2;Vh%*D z|0oUyfRm-)YxP=ttS$x15Zef#(B!duBINfdZ{X?>M!1EynaOnCDHff4I%$%RGLuLe z6JiPckfOTmQyc~QO8}mA^088>NlIThO-)&k3MviG4aanoyU2P zhX#w!2Vd&wqJPDfEK2}!r2?}Sa0{CK<^>0VOqr%ZWg-q=!nG3@`_zW74==(yAv*-z zff^K0b4YgwaY{mkVK<%RB>JNIFksBFl{=p(t1TF>Rvds*3$9H0^hYl z*oeMUKKU3}(*MCqw~Nr#Webb{@Wf)Fdo!B<{& z67B#l$$=n~ju|#7CC7FoBgsgq@Tr$qRsE|@Iu9BRE_#zX28Nkp&160od!=RQ$DruR z3FjwZ;dw1=upp~=#XV^Xbo1sUq+}ygbn&VuUhg$KxdfIlW!CNz#*8^ORnff9A7t%0 zGlOt|<{WsW@LRKyIpnqHsg?PQY@`=T%ZZtOD=Q*=Bd&y@!1$JZ_H{FTK5HBC^S~+r z?>K`@jk(NMO zS=}4Kr9dzoEj#Am$6-fkX44i-2hAKf?MOZpI4@<8fbJBUx-he=FchfA!Zah2Fm%{& zJpISjMk;kKfxtypXlgoW#*&FBWX5=d*CkRFIBK;Xy$QBth)IMrM9``w@}>dq#f0wF z2q2hN1~$8|v<$-p7{xW%z&PCt@82hUPf2bIN_MsM4EuS?Nl8RPXbAE{i+V(SxD>*$ zNyu_@SbEhm*3^Tyg4Ib9M!bLY0hqtbO7KpJWcr%!M00F@{uWIb8qsE4o!!5G-(;_M zBCW1lJlIn+i;LHvSzeyueow(Ii~E{Q%dlg$<)wQDLq&imj)3rTx12(KXFZJ|51{9x zh$K6vX;ui+Q0@E})ZJ0PzZA}lL+2Zd8vbgl#PoZHQ8~J&K zJ6QD&P@=^x8?M+!CXs!qh?93z7t7lDu|9{xlZUdA|X4{2_6U!rIP zL*bhj7Y*hNDZmXieA9k?B2FV7*5m$by1TKZNc8D5VQ|&iUJ;yxyyKTfZz2se zN~4d{Di6z6)CHdM7VHeB3|^U*RhUa6Zt?F#9cA>YrhC@tux5<@esaaNYSI;rT;kwEukoDQ9y?fY_zhfr6CAo z__RcBPh8z~`v!s@R}Yv?iajF@j&g{*CAJw9_+YxsDLB##1`*+Zmx@+`CQy1rU($N^q_ApVUWo5KC(;!L`PUs~ooH2R{k=Oi;Hv$4zp{lSes zzkIz>_eUbJf<+{vFJQYRP~zf6_2MAG9#NN2xH0++QjY60>2$i}MFe|Lsp(bS!fGOV zBiKyTedo2!KoT5U9e&g0ov#Ob(3dt#)A#AK9Q^1`jzgapJcTCM`&J)eGJ8ejdABRH*4gvuj*x!># zQ!EuvvW}4{xeQb}ov@0<77O7Xkvkt%;e2bxsFrhlZmU>CVdJQTd;564L96nEHPAzQ~=3U$)xp((dn$JBlGjHSI`%yr%zlrHwQs{1M{a|-@m`F zHvKdEuD|~FM>wJ0c>3_6R?8S`9XN36JPXd>b^Y~IQ)(;F?kqjZf;S;*o*x0OEBf*( zhvVa;OwrBswK8%X*^;sW`CqRP(od~C#Z7zY* z%Iu}IUO|zB8zy*zF$LEooh6T`QR0t2u=sI#ce+LcsbNoi{RDHw)(7uT2N1P19Lxl* zaugO%Wh;2$6%}nZ=u8n)-~7*5qRjd9MbLRn_S8`6OrujoC{gstwKH%v!{hq>Y^EFr zCih3m83c7GhC)R+PkCh}1cth-EL z^fUFJTA$Gn+fw+~(zOxV459_jN-``|T?~O@-rSM;u?q8Wvm3#06Ns8a>7ZM1;Ulg2 z`PN}Cg=aaB7~qq~CMS=1nOm$UfG_~mpAhxH_BUUoWnI`vaJLEc zP^UzO?K!PXmduQox$q+H1L02@|GJUo5jX2@DUZFmrDb+0v0%DM{A)4NSfHAS(civ< zV7*=db(-Q_X9d+VzT4)Ccqj{}0M^ApLz26&(#m=XY zL>$dc6t$;T~p!-@Bu||6VlI4mnL*VJGF8q zlUXs$Fg}Pb>gqW=XeI{l&m!8Ox<5LeNkY#3lc|=v)3INpV!>dzY5SXR^gOIHK_?#)7z6ul*cs z7hlEEfKa^0yqE>&UOX{u%CsU>ZP3FSuO9PoDnK|CfKB+0<3phuz|O{lwST8_M369sI4-K!`E`a7_&`p{v%%J-wbe{iMkOOVBhTmWA~+;ychH_){f=HM&% zIsBTDJ;yvvBztc~;(iwtEo|fT{Pl`UZ}c z_b8*2N7x)F=s{(TBV3uf{1~~f@=?=5jJ`;$lZh7!&1RthYZblEbl{F{_$@Q)He;mH zEw35G)7)v&ajw$LSiTU;bm9?&0Yozc-&GzWSFiG}EyPxq_jc@p_pV<-P9(51Mg+FX z5GQ#@Vfd$lJ_z!2SkOxymz@a>H7?zh9c4Brk@6|j*ql#huFr3IP$t@KnU{GbR? zCI`*^_Za;N8pVPXdk{U`6gkqc3Cs~@DBzZ!Zmy1KPW@2*@O~&B!o6rZYDeL#TRx%X zraMLvp9kEIO-}TB6O%C*SBL#ZY%-PE%A_V^kPhE*xQnceyKED^V@MBj?N1p^r@dk#EBX40r#b8h)X~tp?_RM8f|{ZEq|0~@VC@l!k4287LZ(HDPR|1Fpu1& zlz-_Zf2p(&QG(2Ge>Xv*D;sFQ7r#C^IXgWCTMS6aHwGUgY(bR&STrjD=G`7mHQf7F zXJ>1O)e`y91_7()di$O6R=Et*FvL1(jd%KP%wDwRfvL;)qIY>7@M=q_rYDdI`+Wkl z@X|ng9gd@L!u$*fpjbk?V?FG;dpsczc@~tQ3s%H?7I$cqH!0}`NuzpQA?kWSB=!uO zgws3@K)>hm5@o6*GCQN6T`pB4Y6848qEEOXeodHZ1(4z~TrEM4kKMz_?C(Ikj3<+= z_FE8j~`## z4;nxvsyi%$c-b#5oSsCW9=q8%1f_R2j~r3cM>B>$ck}A1xvr-vY^xU*kLq^Ujvw!K z)Sm!wItz)Q(}0O}ESmZ6%zpa!C#R;INVPV3tT!jIC4@#2T5b$HA$)hzfH|0yLEiQ#Z9jYmIw zq<*CS#>4f)^~br%&N`8qaO_owks$8~0`WY!FJH*Vt*GOyAd$J53?vwU{i|rlUg1-| zGh-+Tyd0B%E;UT!3 zU@fUhY%&g{&NXE!D+wFTYoaqSAu;_-H8p`GehAhZ1S_<#0VntLdl3)Swhuhi&LF|w z+}((oP)8h{rZqk_)hsrf5c8%Hx?>f=1A+^K{|9mO&EpG@#zzh;q`JMixk9VaK)tD{ zmeo{7rv_aY@p@#)ODw`B;d)S_cR{Q8nD4ESFh2{*dI6e6xQ$2{QVttlkpc1DRpQ!- z!cI^_2@DZMrGPkKIsh{Kn1_Pga`_dO@=P{7k$NnVZ~hh~;vNT(u=e|i>Jku*Zh4>$ z^YVdYs<67|X)eCD#Ywp-n}npNiVx%rPTLf!7`b)tKtg@+118>L6NPxv>!yWd#cl2NMbKMNMJZX3(ujGK^6hNGy=V4mCg@_g_ zh-d|g>K@xt&-v|KV>MED~7B1uN!zAQk&$AD>C5v(=y+KU6=p98kE+)c}bbU{7C zmkL?NCVunTY}ky|j?%Oig!<81BpM1KQk5Aw|GvwvBtQroxkuB98cf8aG!i>jg8(o4 zK7@J9{8cSx%Arc9}x_7DQ`4*jj0d zpcUQYiLiA@K^RZ6!ys7gB~>BdysmWLVEcj6cl?V7zoR&K$9<*OIsSr?G#Z(}z!!k` zIE)tI9o4`A;5~Mk3d>Z(NZlLNy0VQ8W#5}N`YOPZU0$9 z<@1x7Y_=B2X5sIJ2z&@+RI6pseViPC*Bgkp;cJ709f=~Xqe(-|PC~)`1L*()f`7Ov zz6R|Te}eq6`0;-m@kr(Wi#Qq%?@qB)LOnbdw#=^VdLBI0eJ$YM4dRwgcZEr5dZv&ufcXNq&%=DX|Fp-%g zgbIwVJyEYanT*}2PXrK%4OMU{V16QG3_fsv{ND8K>3he|$5W7#xQSwOS3Nl0}6mkIBF)==#L!;HNX{tq7`N z+ws9i3ItOH^+4RVw>CD=eqcyblt4%PAo6hfwCB9b;%d&$gDMarkk_EW82!@$ED3u} z?j;_Uo4pSMz{~*Dsd5RBHSvtgBmg63J#UeiS1^JgL)x8B1Mvy=6F4aCx)t!CJR6!v zI7~fspwiGM$lq|_^xlxx|GkM!>;eB2B9ljyKl49I`x3x7jw)?ccU8}QX{6C%*&bQ8 zWyc;{vMkGSY)6jcIEP7``y|mw(~>3{%}l0eEXy1bSAb=KWS9Gjxe3b=?i<8%-+_fC z91Dg878aIkITuj=@4f1t!*X`n{o|;oy1Kf$yXxKV)vExqg$s$Di~JGFKos!FglS<@ zWEJiVBWLVdqTQV#Kg7#mIN-z15y<6eSrpF}GWL#L|0Zl&>x+gGu~1*4yE7R_cGYA& zlEe;fV$Zg1JuAORlc>js<<;+^-|?YdY?%W)WgiSn%IxqfEOE8)N>NEG>tk5Vn!+kA z6M@Jwg5>FtNANl-i1#p%=@qsn74YMY)@`_9-#%;Q^GLWH!m=+|OWHg7WiMXG!2POk zZRU|QNs)Zeu+ugHohOa8tAm(Vk`GxyZ{&U+Jx855tyQ?Q1Kbxrf#X$C8HZ6 zR^%AqaVIvQ{svJgB3K}5LrWn& z>cU=saB%Y;>(KTGLZJt?AF}pr9)!-JZApUGxKOWk{trjMf zo3il3w}TR5B)BQjLilQtOG%s9k{HVp<^(K9AMYj;4H%DZaRE%Y2M+qN_|eCvV#HFQ z+-`wthW72}dW1FlBf386|8q|d?7xQT!-|{0!TljvxUGb;lI;=LflWVFSNiww!~UPx zX@<(YNe4fgfFsf|L}i|3{d+IvvZ4#{d%~#M`SGBoWG^| zjx#0R$!rq?PjkhwXoxJrSnF6A%noLk1C4+uM3adLK$={+B#guWG32s01E0-ej~t-x z&ypaLTVbP&nKJBG;jXTAy&XG(@sUViN5p!!r?EM&UEkSh`8zr`1k5WoUVH80)j(o= zd*T{lwkOwGGOYYP*ftJ10Jg-EMXh&r)$xJ8VHvrC+k^?I8ANJV?FaLYNcjQ4=_j}n zkK9N$y2BYtKDA*7l`{iWz7a_?6Jj}r0TwS=$zUbu+?y=xX`isH4?G@Qy0&9uFVNKx z>)XvbNW6{wca-}SYBEyVc6DMj;71%7Rh_UWV`UP8J0RI>k&K6tD380(Bl5a|3l5Bm z@s(c<9z1v~9#4;DGV33F1oV0BMHAy6>|Q(cjy88ca3C1V47BJIw%K7IEX_5c z;Cj)|cqi^y`5xjofB+HJ;f-~dclP$Qcdm;K5AEN-Zhd6GNMD^W%#Ji#tdCLHF5b!b zGF9~~U4Z@UsNq95q;M1HMnkqB5A6ly{S+j>Xmcf$AdDLw2<9LFvmi`^hFx1VwIEtT z|8y8UU-t-3qgvd%axZ}qe9F95w;pDIC_+XzSp2@7gpv!vHjGS9D5c<{>MWn5j(7H} zulV&m{--BA3jL>0cM3kIKzBzcyi)|$R61uRe}CYSPmA9nnljOrMlOQG#DmXDwJ<`M z#gl+M^L>sq7LAmOg&CQ3C%R|qt|zcm=$8Hiscde&+F zuaE1Z@kC^+FS>SMU~Sa5^-v_VwMSeP5A3|-@SZ(TIz>8-ZL*rnoZn}7*A-Xn8s_Xj zzc?HTY(9`M*2igGa=mXz)Q4mK82&%}+Cb!Re7%u4u=&*L?sV5H6O>4ZyLNw>cP_K; z5(f3SvTdU6K41YaekD*&kOdzsk(V)olhY84@qpo~8zV*|cA)OK!(z||m*p`7L2A?x zrzLgM4I_2C9Px3qneK^$&DuKzc*iL?1f>;wsh)>>3BU0gFAW(o9EzMe=Aq-G{eJRPQ#Z!Y zguZ>k`yJwLnqxDLB2MON;*2EDuo6PVv0-*&1ceO7>v92xE}%l#85#wT zKV8`64F~c2tC0eAXDAX04IQUQ*=!(ib#UwU?OP(jLOYV;c$QGSqG+Fs1mPfQ4<3hH z7|24h{Na(yj$HN{I=uJz5Zuq9oyeqmJb-JEPp=NZbk`Y-6lm)jj#4MWjfE2JgiK=e(~i^@hI`O9c?#4w)7B>P>-nUfA4QHJ)N2aJrBEweRUE> z@C%6ADIO;3$YEY&$3>z8cTN3jhtmLJVv$LPrx=idMc6gV=aWd!H#~CDq5bf&TQzYL z3j+vAqi$(Oj9HDQt9?!@ujAcH0BeYM#AvLkV)cq||DlUUh6921aL`-GFsyl#yLWC1 z*2Ofia)7sa)3GK%OrR#1Qs+qhAjX$@!FVG9*y*96X#iXIT+8e(;!#20~-z$EQ0^qxe& z@Fu$c0-`)I?2Rks#drc9b8!@_k-%f$dV3(!j`+{pu#adhfuxXDZ}Lhv3Fplnc*wP3 z%G#};3E0p+M6Fxxq4>rYEs6-uNRk8~i-NzHIw5HQC_FF@!;Dk{I%Eu4<}s{Yv=?$0 z2$4I=pk<^34BLUWe1_@Tk)9;cTuzA<3a6103nWa6(QQPX#2L!l4Yu~@ z?6y>U_+a;LOKs7~vef$Pdy3nTpEz|e-4R{ekMU~mn_&zLF=f0xK_d{eg~cga(c@XU~uGb<9_*s<&CW0tR1C(C+J>i}nrCD>ue1J#xUHDRy-JONkT zMMtP)dk`xvL|^bn@G=S_qn9OV;mljGL?PD=$NYuL+%hnbQtO6?&xcQq284(Oen=J{ zUmmC6R9&&&I7CZBSGqiQCw`J5y%AT%X#peufNvO$;jC-ySv5hor|}>4c3L-Hc@gDR z(Pbm$WoZE#F??t{=|(_DrR~)obz%ZVa6z&seY!q+A|@`l1_oOF0p_}|U#CV5hI|79h_e+7 z)KMf9H5DQ^AH5^P>j+b`rf=uYeaFTI*YweneeBH*N?S^pe#m%OD%8#1v7uhe>V>-ngTV0J;tSAuu^=f@>g>62O&|&QHP;4`@vR%g<()`8xH$ny7b0>v)F%q@ zSTYfXxC_REU_ak25t$On-4|VVUs9M4fLvU^-q>Gluot4opTrJBuryyA_jm42Ac8RB z^X+R#s>Jre(H?&)VMYDOa7P3E?~B>kcsw?^?%>F6NSb7Une~PH zJ2PMK3{2iH;fjyt5#l)%^>H(HMVZ5Dm!|?_$RdQX0iEm|8txbdbZg^0;SY9t0sla- zsM~<8M;K{T)4&pL;R>?pVNJ4UECTBS!l4CSSyf=OtJdq_uGB5CHuw?C7wt0;`)3UM zk!cy&PaA;6qW)nxS!1FP&@LnQ2;Ux~J+bb?*rUrF^*uczVY+}*5h#Lmyg-C={Q)NQ z6_~Ns>(wzau?5=-hS>|SQ*ZnXgqIjynN)yBXtu-!LbH0Wr&jTE?c&oAUh=WMCJ}5 zJ4rfQ>Y6tshB;&NXdB2c#(j$j!nY-6|%zwjt;qYPw&OoN7)*8%Y$fiQ){ z1Ao@T`8=3pBWN4q`(?)={9&^%oKQhXkLSHljNh7II$l1DZH{0I!m#08o&KvV-IKq3Bh zcI_GIBCCjRaC8vq&bsi)fYy3=iw}k*ts}r(Hs zbS$Jdyw(F<8Ur0W(1y7sAIecg^3AJO*SJ=K;hsAXBL@kr)`5B)}`HW5&VsQN0GdvAZ zYqsMAKl)Ji3NdkSqt^2q>i)aykHJ%ZOkG`cp3#}ICd|&1Z~HNN+G+0rh?((vKi=r? zc%v2rRo9`B(^Y$@iK;OS;d{yKMb0DA6X_p;7HYhIVu>seWHvxTh0ZWB2kb4@hnE6h zOr#QVDF;K?EdVPc`!=m#XFTZ|G^Ja%BMn;^TV-Cqrag)E4r`DDC*A=`cJscNQtkb{ zJ>BcKZMy{XtJhpz2%CEfF|1?@<+S9`E$}}HBM>g|X@FcVKo%t@y8a)qzqUOpRr`_4 z&g;lrd0S6%L;m`q)V3=sMtAD2W7|?g*UxSWwfp>!eN3j~yvvTXD>D*9CJH3n9k^oi z@lD$T$<0GsZru8qjicf*-Mcqlx#h+!L+3@zZJUm7zG7f~Ak`IbqAfkJJzRt_WD5rq zerOSc@YiYai><0&#_A|auCHvMQnFWjL~!=S1F2nP;6^# z2V54=fFR6(y|1vv9U6Cg;F@Uajk;;mU0huGk%rcB4GUV>F)JK1G=&nLPW}Kr}vlcyaOYVI+!ym(ZiYFkOyhGNy?X8ZKWj+MqjyDG$50$5Ob( z0nslu_!OfYlm2A@`AVDE9uBPh#Aq}2@4w~r{hZAt@=DQWedE>(5Bln`F%I0{M%n8( z5mnZa%m3Xb1k`8%uuLi$Au|0D8_>v22#!}IG+Oxx;ZYi|vU*DbvIwSuu1K{p6cc-C zHtNOGP56gqt2ZYgWo^sZcj*o^O=p{y&SOl`!yJ~xuT6(0%NC*JKt0mHqiy(-VJ-d9 zb(*jwdZ1s|6C{rBp$%yU@*dp`X+-v+rqqF=odLzW84XPLtG!>IlJ8#vU2S+CT(*cE$8Kf`8@T0iUS+p+Tkt)Kn$ z+_(goWLX2>@lp5)2N4CXqb7*2GN*-PLFS?{qF1!zZwje}5DCq+iwGN8wogO)f;vP$ z5W*ffJho##>FX!dT~H>-ydZ0@H9z@NHTbMZ>E@Bb8?;& z5ElA;$@v{)W0u)|RltYlb$$MR)F|f6{Tx>*YED`Js<1ed@&0< zLWIKu2m7$C+xqpf{Xn^T7k3c;QH~3$x|@4Kave+)!`nl^vj@Rfwy?Dx291W%)#Y~p zJ=BqsK@z~*u zkihlS`W-vZBT_NEdt^fhAq91KAsUuy%e0LXwhxj9&0$||IxDj2CeB?gn1)eK6N*0{ zMaGg*BVA4(*VyY);j_#dJ7VAn9%t>kRNf^%FUz*QbyoWn~%3Sd{dM(>}R!Bg_cM zfYp9r|8>{xKhTcwa@d^_EBRyupBzS%7%rM7)-z!hHsxlQOMhkE+es^;$J22^`r>#d zo*nmLd!0AH0|?8-VPx14=bd*LIkzmNWHx6dWr2sa2|;IMvqCyYm?G2vi&}sWuTdmj zXB0C60RuD=jDgiwq@o6I0E45UB_{4+?po*!q}AwLCJ;Z6^5+?w`!}Rw!FJxp($n!^ z9fgrS+S`tN79mboczS|T7AF$xl9BjOSF}4rpu*Ij?)kLdUh%`7Wd6rinNdU`{@4*9eGy4zp^_jviUw`rL(e7IwPiv+he@pl1?u(Bey$jAOzZp-EOp4Id zgoM#Y^IU^)a1$iB>)P@dM&_XjybEB9`R^zI5^w1J&Hr1A#0mU1pOu5(H27|6z`r=0UL zGQiULuIAcCnb-8;I_R@vA3gK0^#Wnf7;Nw{LIClT9*8_Er_-Ux_U-**qN{6H4DMrM zI=or3Qc;{^^))h65%MYc-6NqO77~+NiJDTmr76}KQ$@Y8pb9v`{405}A=J^`)BYs@ zUos>GX2&vFS64LPJRG zIh*2Myh>|hgxiHaFE)h1ni5}1c6WD#pNiM0pM}5!)9|032Hc0>&1f6zr+L!Uf zrcj>&s$B0WC}SfHEr7Stnh+#oEpke1zzQ(zJq^P(mVF0;lu&@EAQmia-L`N4 zHl#BGUqAgtY>*4{?H3=9)RVZCR&~S9fjC_=8pE2H2-5amKy9~f!+zYbbFf^c{Vwsg zep<6a*=j(|T+05*JJ3ge5CX zzQ!L+^YR5=r_fXc(lj=>K@VvNvWTqAJhPhl6oK-A0d7JBg=an$VPV=1l-%v}72unb>w{uNzB?_gm)JsU47{ z5Of`sUA@SVXv0|wC zB&&x_AMaY@k3Hvx8~o?@i16_66~}H9$5)<;tcPa)X;)o^FsS#!>mBB#b}e7hrL9HSly%7rwL)@ zTGLdbt+WgV2*gu`7Gwv6v5f87_{`1NseLnRT|>aJhR}ff=_;~qQiH+GBO8XXtBW=X zAweEpL@eeK693BJ$C1)a?Oa;Iiu3hb&r4%#gt|!r>y@^ihfsm*L`T91__}?jY;HhV1-vA49a4R{-XKo$rjtsq4fn~6YJOdR#{ zMjTB`*}h?5Z0|L$%VFy^d&dSgVB;Vxl|pl50qBcG5kxK#089d(1$oPW3j>QNu}%TP z88rhz23cAgk3@Z8MQsq%4OI~BO=@OZdfh1RIb;H#FG3XBHCVrN3oW6A6OL)Ew7Ii{iAieIrgaN8l)}< zy2iGNuCcBWTI|*}<{KFlp@BsE^=|e8aCZQX&Sp&`{zogkw-38ST77%Nma^8Y!J$!u z7z?Tq$XDqtFTFRhA#uk*d*Xxmd(p;ZqVHfjjsMr9`g7~n{gz4OnN$>EQUFq#RQ;?c z26rMn9|FRT9XN;`An1V|kVW`><-_9uZM1*k+O@mat;?^)fB8}T_lmV^o9JREc6=Tp z$raED8wP_X11?Jd{ZRLLao;&EDTs{yTC8c%a4KOH;nGrrK-Wc6ffeW!w*zvBR^y%> zgbU;8^yzcfx;O{PY8h`j$d(GAPTkP#@kp9lh==`vYuL~r=M9?dV1NKlPyi8}!nq)n z0|$piUq`?p=A;w;rh^m@jo}B8qj(eeqah7yQDJa5v}FA4 zf_o2t9c13b^pI)u03uWv+=#r5cKI+dF2-v6?dHKVyxB{~b)j%5bUox5=tx^sO2zT# z{%ko7uw|M2Ju@?V`uj-`7pEXJ8~y1$_tFi;lpnMy?N1e{vmZBZr5;@6vei4%UOoW25 zCuk;h1vEww#~ zWCI#|kMGcUg2Ct&QrK)23AQNv1aVj3#Q_%AA)zxN#E?TBpgV|BQ4g2~)KH0P=*nuf zYIPeiLD=h|H2u10H699V-M`Jnm;Er~bX|)~H<5#*XJ~eKg5BRGiZ!C3AnzBl#sAc# zu`8$d=n|1)JWlx2!+pVo`xd3m@R20P5pw#y=0{Thmo`6=9)0Qm*h0%bX8`}CPxm4Y zawDxy&=j-@acKZ~Da9zQrx?XXy`2bO#!+wN#2DIyaI|E1nGQ?P5Xc(dbdAt*oGkK;O($o-VAHJ z%Ylhok`zPS(}W~Mf*XmQ@G`OV#*WwBgI(~P_oFFPT@pw)4{y-A9Rwo?PS_)WZd1Mi zMDk$+jIpl4hPlIIa|Z{v9^D7!ED{Zcfn|ybg$hoc>9Lv&}y!|@~7U^;Ad#f3U$7;=ojDnxeMKt!}3*fMBDPPO|p+YjnO;8fIOCv=Dp^3szd=V3i3m zKCS@8;hC&>vUxyQq+(K6)CcrWcmXj6D022b{8FVgI4ph>2K(eZ`*m%a73eHYW3U`kA(FNm#sL#FaCK_!%fdl4$+UxGnX4z7GC zi_9tAoxN+4!C-PtFS0g>&IxR}^uA#9UVSTdv^QC6oJ@3EX*00$FakjZG#)&otS^?i zY2%@Eik(SAzOv8qhi-*mwTwl-p_`wV>sq@mg$0)MOw&lD)~)Tz1%o;s2D08qumZ0Q zL$jX4sd$vgL_(0mD*EQJWFZyXzI*G|p3#JVN4VR@TOT|yGqZ#hN-~w*;ZKbAY~8wh zdn{E*$u3{_-7_->5k1;vcaz(X;ZoDo4vK4OUavxU%Vq{gLoSaY#%{mAa|uo*UB9XVTmqYfVGmVq^EMpIbk95T>ueD}zD>xO4!7byQRL{~X&&xCCQwhF8xWK3#UFCk1~bX@Bt)c4UxJ!uK8(_xbJ zZbr3zq&cpEpnpVJ>_^0;kg}j{C-5^*aH1=YO4Ry3QKi#=5dL*YL;I+Qp~j{6AZ~#G zm5c>24{M8s5J<+}mce=dPlTcs{kfq=SGN!T9|1i|}-xtVj($?+jr z2)*uS&sltXqgK3_9(;D-=6Exif7lPVz=Y4Y?slK=H2hU$_tSY>Qt;s;S^~Q?48qOl zV@GIX2Me_cHe|9lxRhRd)Yd}f0xQt#g^;X;mP29`Gs&^^PUbY&wH}5|P_eF+pYABv zUu1=N;$kuujvH5DgC>6@zVfbXtoi=*__n!vBQzQP#>-sB<}$90cZB1~*vha9B;vvx z_XpDzvW5E~Q~Uxt%K&V(WHZBF9wXS=6P9K2cY`VMRvz?G37q4XA`_DExq&o+UZc@A z00D5t`|yz@wPV+hW^*G%#E7U-5cQUYL#Z+dv-a!RXp z_j+1B!R6H5n(w~(crcj^9{0A<_TA)D;c%4pyL|$dn~SK?_6+)L9Rol zPmE9KiN1q={9fz?BGl+CtpiS6960k`-PHYo`|)hZgFS`8GJvJ0XY@sVTxvcMZOvyZ z%gtxkp9At5BTupg;HhQIN<=f8n8htFI|F5I7w3VAPEep>l!2Jf#kR(oRJW=Q4icD znu$=81zsDx2=B{)zfw z$XvQbV>SR;;Zo$YVg1ls_|4+>Ifxf5%KzVk_HzOS4@_JlMp1PAMBq>U-^a`a2yc); zM=2*o*&Y=nG*5XMF+@|b>&F^VpH;4&R!NE|G34J) z0SC!t>P`2G>>z-j@a{}zg1Xt*)!w1?=EyR{j%5l?NkgQ=k>s4VL$G;I0G>vHgQUH| z8cd%)pmA$6VIWT3C;&n?NS0?=pH*`rDwg2IFScyh0Dq&ADy=bP{{Zq$Z|_KkBAYjl zhzWNKm4ho+lLf(xf#Kh`Ql4~p>fGAY0OZBafsKQM8_pXZ+Pul{@9NpU9lI_;A$2!- zxwn3QiuTe?Z8%OJ?WSGdumP3$M(C(GP)^HU&Sk>y3->y{jdeZz;vY=ll*Pmgn4xdw zjS(;aL|*70NDh-7B%b(*M7oELwViRuAMtqS+74uHQ0JHLI{#ky<~H;nI&{Y!hYs~` zfQur4WRsgV9XN2yEe8&6+=Lw_tl)dnwCSOVOq5s_huCf8`k*`(5c*B>5u=D7qzUqc z%ysJq2iMW274*9fn_KGddE^ny+v&DAMZf}<`3pep$Ug>Qj9#4yAmz4VX&!Iy>frQM zLTw+tVEeWNLU2;XhAT!!_D=q^Po+|8J_04r@EM4+8Q(KGlG$+y$@<}NI=%OU1Bj$M z+S}Q=X3eha+h5)rkEyLH7VA8OZP2dUfrw2A+0nIqJ-yIu*l!NM-!d|wQr>{JG4?j{ z3n1H2l3y1la!Q0sw0f|OR_%<_vYnNs2jlen;86TQs+{oF^1w_!K^5ucU!uK>-E~;b!M`WbK1P4f^$O!C#Od$SbAU8>fwsHobvXw)3$|y9 zU^u05?ObKGgTDe8j{oV)Jb|kEBbT*Hcg?t2A&}(pm^oe=w(ijT$W` z(j3aGk3+<$S?)xF0fY_`av(1)1OVZCkk*ks+F^qASU1t`WrW|C;jVW?0$p{ry4)3r zyaNOKaAQ3h0Ki+C)>QPyfbo9-9PKg0&yw0sOdksQ5s@ZjC1xWBO)bSc42~)|qX?|w zyL6LMKvgA*&n%1uBp#e?Lia{DX~LN5a;?3Dd9L8SvaDCQt`XX;I=-Yi6%7ZzIgUZEiWy@7j8}R9>v)XJ)JE zEmK?5%`KbDEzi4d)=n?jlY>rrzT{NX=dfW6_ zt;Svn0RUTf>#J07k6(ZBCH^lYO?8oNn^ z-Z&`Fqj!g&SLS!9Vf3qzvd|o^R8dc(Jcl+_jKp8}CiGQRe5C{A z+lhbE+AN0oEQ)r5$?QM42msct2j?= z6Wc{b?0`#W2p;!cVnpl~*mFmWiM`@{u}@qe_KO4Jptw+si$mff_~b7ZN5m!KsJK*I zCN39Oh-2b0;!1IqI4-Uh*NAJyb@1BXAZ`>liJQeO;#P5+c&xZx+yVP*R!oX1krTF< zhF^bHuTG@ni85@$cfN;%DMN z#LvYquukSz;@9Fo#c#xKk+bmk;t%4F;=jb7#Gl1q#EN*tXd|bXVItcEw!(pM>o>4f zmH~Ub5iz1h3|T`GM!S(TI*d*uWpo+cMvu{JtU=P_wZ=MQJ@NU< zTa2y7dB!$lyOA+=AjSKTF>LHIMvUFYsIkWwGxi$i8~cn4jQz#|V|(E;0@q z7aK>6ON^t&rN(8(<;E4pG2=1DmBv-ZapP*^8sl2yI^%ld2IEHKCgWz~7UNdqHsi6z z?ZzF(gpoBSjVU8%*v7OmW6TZlb(I^>Z<1V9OI7Zc|87GVd@h;=t#(RwS8t*gSZ+yV`pz$H&!^TIDh~cBgKN=r1K5l%% z_@wbEu8%#*dAk82@hk)cBe4AI8s(Ul_kMer5dH_)p_E#&3<^ z8NWCFVEobeFXKnX98_%#51}v)xRZ z9cHJQGP}%fv&ZZ;*O-0gT63Mb-b|bQ<_2@X+-PnxH=Bdz7IQ0dbZ;}an;CP5xzijn zhs|B)h`HMwHTRff=3euBbDw#Ex!*is9yBjB$IV0LMM#}~v3bP2#5`(VYF=huZeC#? zGaqAKXH?KCYF|ReRGp{#qFmE((GH*6-F>f_*GaqZ-Zr))|m|1huoHBE!ZBCmr z=B$}F?=*H|K5C_`F!&Q<_painJ+e9V!qUT znfY?_73TfsY4erltISuMuQ6Y1zRrBT`3Ca=^Nr>|m~S%QY`(>OtNEb$HuLS~JIr^Q z?=s(QzQ=s8`9Aag<_F9VnjbPhY<|RCHa}|qqxmuOG9NO(Y<|W3C-bZ3*UW!5zivKke#88x`7QI?=D(QVF~4h`F~4Vi-~3ne2j&mW zADRDV{@DD9`S0dW&7Yb7VgB6wh51YKSLUzH|1^JN{?`1R`FryZ<{!=fGXG@$+5C&S zVm>0Qa+e&DyXC0dBgf=kdA{5yFOd7? z0eMhfD97a?d67IUFP2B-CGx1eR9+@8msiMR@-gyCd6hgaua?)yYvpzFdU=DqQQjnP zmbb`TLDW_yk+HzXX$XS_}cgi_gkn^%AOURdfm#j!fR%K0|kPGsp zT$HEeD}N_{FaIF_DE~|T zN&Z>>MXtz4R2zcJ4Wy-)l<-dZlwSo@P=!=jMO0M95MY{6?J9|lsyh)S+NHWxkLp!x zRG(U_)~WR>t@_mlHJ~=CO=`0mR9j&9I8SX;+f_#GP&?I-8dkg1h}x}2)gCpb_Nw#M zK6QcGuMVh#>OwWH4ylXOVPy3?0`KNgb*Z{cU9PTB$JArgmFg;WTwSfMQP-;L)b;8H zb)&jT-3+_nt?D-QSarL)Lrtixnp9INr))K?X4I_8!!zRY{fAU8#p)&MrRrtsr}~Zht@@q%z50Xt zqxvuPC-rCb7qy}uvDz$Q8CcpN5tna4pY>Y-D`~sFv^o%plR~Qc zZmY-YwbodD)>>ZMQPk4r`}1gczP()`+#+ z8nyOVW7b~ld~2U|fwkW{U>&qBw8pJN)tgGOb%}MvkV&n1%v3bx~9sDrq!-H;QdN7tY*(_?TE)&} zE0xkh22F|`tE+2eU$v6W7wn3EGCPGA&1VB{p*A0!ES=0$^Nv%qJMc-l%xtNU%NJ)d z^L8#jl`TZL(kW*vbNFsPb25{)$w{20=$bQ|owG4m^W_453K+v!Q?)*~vpKZL;d@H8 znc2?S)^mMVv{5^sb>?D?(-Zkh&1r8P5DZSm9gae_TrHJDg<5gO$#C09*)GxB@TfSU zav@uEUoBj&&6mAT3-F0k%9g{eOsz*HF-zEtU1FhMZ~% zgU%n@UM*o{tC?~Zli^;bmveMk@e76csB3&&wjFuGcB)}I;9fk!cH(*#s}&p5Kyw*w zuBeqe^=Yk~nXZ)PGn19<)SO)nXKN0ox4`gqnnebC8tsWO+~608!1Oa;h-j}4-~l76emRHb&x&R0tOIA1RB zV5SxWxe}m{VBBvP>=RiGb#gjiApDxjSEewnC+V$2(}hyS{k+IDV3w{IN{*ciPFJ$U zDg6mEwJc8b_n0%aVw6D>4e}{n2GnG;e6AUV4 zSGrp-ab1RpoZAncr@P9Ps*bL6n9xw)^a`57H0m@R)vt_~w5O|X2X6ZiKM_nv_7BK1M)e^|bNVcAkBWUt-lAO|P-)4t|kH zy`Skq76jjWqJA;&tTK?1nI6pMwl%v5bNY2^TQNft^uqg zQ?*IV6^I{(FxP1pPuPW0xpkTX_Q^7+Ke|%WcBQh|)r{>;qm^i`XWG=!T;sh@h%4O@ zna%^W@U=y|5|}0uJDo2&L5wR%{)v3H5Sl^Jed%OV*#p5O;V4j@WHiTRvk4ZfJXwoQ z0(6+FO;0-^&7>v?v6H&&HRSPRInAjHYIqOz3${xXbP(K|7M(?tC+uC;RHPB5{YjguKL*ATop zcp=D8pl%pjaCeYyAYp_~NH)q){~;|GqZ?3MBJM=M!4iuz34ADPJQh%wsOAeKz~Q_Ku@*>D224Pa znJ+;svLO>zE2U&ZPRc-#EjmEp);f}hYvp)TJ02xJoL+a;^3@W$(*=kLRW(m|6QLud zr6Q)Vx`+nu8AjU=fjzTe7YbolOzl&|4B-c{W>^W1^Y# zYMM~Tdzy>>O+a~8Yewz%)*cAAQ>|4V9X#u94a;uR98aj8?|K!)8a-nC0n=F?K<|s) zQw<~DhvB=XK`8+oakm$!9iXS^rrWK6NS&`{D~p*j6q+h7be?^Ixs5jn_2!rg-OwA* zN_NrlMw)NI)bfiupjtq$b?)f`#u|^&BpVn4#g8PJ-g91NzP4VJ*{<34>_wfKPKe1W-{uQ>7fzKDXIEk z_tpFq3<7L404?>3xzdbhN?=YK1X+SUoGDJ{Q*O}(0C?yjMcBEpTdmCm7`W-_j8lX~ zB??MKPl7VF0PR;|NXub5cv6L|g1mOo!3D5p>eJa&-w@kj8>+Wvahk>RMx_?~6;(Jf z&#qCbRI@Pl#PvBSxLXmdlB|}Q0wGQ4VrddmA{2HAVF6Hk640uP7AQQ3ZAAaTXpx5i zkkE>26Jp>xsj{xn?kTo3zEM}n<*}|6-AfGdNo{DEw5tm?_#q*i6V!E7c8i4cFP zb){iDivn10v#`mK*;2#3c*Lzb3$bx#*0udXoAzMA2QYzZQwfq)4>}R_<0QB+2xH!5 z+pr8)7u9^t$xp@4X4{G(Qxc9!8U=}0nosZ?^JL;9vXC=EO*KJXF65o6;+IzXMbGXU z@Cr_{s+Q?Tpv>S>nx3}E3X(0z83?S3g&+m#e`-z=O8W_l3n-|35h|Li6Km6y)(0aD zHJ%(DtxqYY->FLOi10Ru&&-u)VS;gjC&+{a32A!TD?$bdxwW$pv#h%+WT^6iT+y!y zD=-jl#*t(r^LvIeRffTdG#)aSNeY_5^+L`9Z-NjUs=`E(nYBr33vziOpR3LWacu^$ z3HA}zMKX|pB6CxO-FG(NbE7f2n!qW&ki&dBrb9PDPF}8LX-&hyl+Fg)k zE($wfY0mb!NCYb=E6ke0cuG7Z5hfH3st|!Kcy0lvJZM;Uxp6iPDn|xmz9s>Fi>eG; zqYcn0m3^@8(LG`J7q%~0Grbe)NZEG++hEPHPryFK0}$~}_^U(is}s<8`XPggcfvsC zoiN^H#OoqooGt~~l0ud&$DGU-gPOR|XKE{jh91AJu9e;EG!_ab?22tcgM=8% zS|>>(N{dSF6Ppo!CO-{8v$NAcor-P3Y7xMnHWqbMVO=K*lWDp`F|~r7wE#&LGJXye z$>+>M*DKgQXu0z=(S$ZO%%kpj)ynmuqj&T{R0ff&q7!I&WVs^yrKJs@A=my1rP#F@ zJ7j>N`#eiYW4Z&{z6MYadxl?7?$w; zIkVz8LChJfQ+H`vg+$jAfnhrY|Ni$Eh?U^LT3P0?KL z!M+0r&Xh_uKnK3r$E8}??^$v*kh+!;rW9%>3nLGaSD1`pbDz(a{Q$HIgpDky5a>&Q zy&0JK$rkWx%vW5Slyn8XbF{evhIJZVyw4Q$Q#f=mASDMQYWp3ilr$xB5>E@xll_?7 za}_@tl!?~6vWlzB$G!HRTPf6}yhkT(JcRmSmh5+>z1fgkAlesVdZEp$VYkeK7;sPU zu5O7wBgkbQC0*?iHl{j6*tkGVEo}mb@MKh>c2%pe61cjzJ`3JeD?wl2`O`&yw2v&h zuyu zoK?r8<>9^8uvR|%R-O&*1&C^Tmcdw&xtfWW1O5ST7qHmLI|;7n{BT0BY{uiNmoTi1!gyOyhIadHYo7D@(u zrZWhT%bo;iYCi>peiY1dc0rOUUa>tM63Nseyg4R-0K)Rgyd<5^pUZ;U03ZE4QRUn; zOy+nSC`oY4QVDXAU5M$cq!KU()|Xhk)u#7TdGavp>TE5SFXzLKDP{gt~!ZmhgryGh^l}AFo!q`2!$l|f%|4%=?z5Atz<>FTACq|6ADhiD;9l| zc|AXqu+?A?;2B4MWzx>^@%U7G&US+aFoR^(s5vn%X+$FUhEF~V{-2W|nJ&YG0~bO7 zqyl^v_YdBQd9T6~VlRYPw}i{F;Mj`o!E&BN5GYJjwaQ|YP8zmisPeG(!lVre1c4A_ zJ9mxKBO)#z%iCTzhWVHQcUj0Th9_aShRHWG4GA;loj`Pgaf2*7xaQQ`kf0p%+PGJtP3aDp z{YUi3GQ>lk$Y(GpkcGmfNm7+EY=@4zCx~VtuTcm94O}KlzerLbjMEM=E?Cxps)*Hy zL4&SnV?BxM)oA0KUWlCY?q!T~pnk@I5a@)$2S{%wY1s|+am7paLV?nrf}9Ou8^W|x z23rg_@ryheOB^6Tx7USwlm>LJ%vVI<~6+vVx z4$MAT4ju5U&7SdhA&)QuHo-Fif&)g&8$h5iOBNYzLGVFXfmg#0LV02%gk98uQJJh$ z$N-^1%C4WoR7K}e_d4`#kQ3VzPZ$^wNCOcLoTnUcilqfe zlykNM2$qU|Aa>Eo7aW+CDP)PISAsvdW-(uo-Z+qnAOMc!so8eTeAxlx>Yj03)lf!Z zuI8?|-o#TZW=0Meba5(QF!AHZA0mhFK6Ta~sI&Q??vNw^pDPKt91u5ppC70@zJq)t z-$Tu*LvQ|?%hbw)Zf+cKLA_S)z-{`O{9T$`dF^2HGaLSZ6ja{x&l0Cu(AgyaR=fD(a6(7i6nIM5N3c| z#XLpEEs)q$-Pwk!yWkXYSd8t@-HBbTTfH9U=2YgoWw7-99y zK=~>=HE`uv9VN872qoQ%4I#UQXA7q%Haw_iu9#I6rMn0*38D*nu7ZJwS*Uc?@`x5Y zVMc&aa-MwV-rM+H9GVTg#F3FYLW~ySYC7uGD&u3}OD1=t}Sp#Gw7XDC{<++p?;c?yMZO` z%*eec6PDtVEmb-ux-~-BvokX@^TJV@f`8c%!FD)iWbV{QNbH`1k^*k9n1ldWC5tmSi8TxpfZR{rIvILu zT#JIWB2bfs!OpWQfExL-4M&phD;qVtru+fWQh<;}jWf78D(d5&`3OfDVu;5lgB|kU#xg0>#$_Cx0@?H7s}N zy6Qs7%H?Tt5Pna=maMRV)1pjo?3)Jj0;WjN-x>c*76b}$jXoB95mDA0fuG^1eE5I7 z$Rx;-aPq+y8JNp2_t+-d<7CDC*~j9|4B z&{&wCF@Ur;m4TRqcmWU>{U9F*iw%_^>Z+GO2BHcvFO0QZDUmKf%C!wE7hoUsMpZy6 zD^Wfo9(x{or=5%IQ`j}~r)d3l!M*MojV$fBhA+EfFR+~)X3p6X3}ocRa+EU%njZq5 z!LG-YNwEwDRj*WzlHnLyM|Nh0#CTHi5CgH0owf@;T2BtFg3}}qZA05HFa{hjVc{2_ zr)`A5P>Aki%z!3^Wd?w~Y!w!4l_kefD2M27S9S|e+NTgDKra^8mELqC}PD$3Be-HzMA zv}Q|e1^_(IkbPIbelCCN)MA`L9iWn{WT#1lm$^!9K0*f!53Db68O2=C)V>8fr#TOv z4~cZDsx2K2m0FuO;A?_CN|zz3psbl!zIdVp{Got%8>$1JxGAyf&QgF=yUx|%`K>l&Su#O1`qA^2$QbuN%;sKXq=Fc z0WW1`&aNnkNgz1<2-yEKlVCq{`iT_~Jb+pTx~+o%y&@d%SUdpYO1?xaZ-DF+W-}K| za-bCztb=f%)xkdmxPuqDIJM}bQZYZtHB99qY|6_3w(|%ljp?%-Tn-fi{BSc;Xee|L zdo)#9jPM)M2~B_K1Q9!J9u3sdMh^@7HhADdP6-qn@-JeUO_=lG3W3NpH5+is5WPsj z1fhgz5hn;^?5jz(;7G7pI? z0_KM4Au$BYc_hV3MLh{#OARsil+2d8Y0=TU-KNN7pscj5brU8|y!^!N9y zs`nsHIgr&I?_D7Oz{HJpU=$0NVBjLV0AwqNi~$i3+;UmSumNYWn4Kwszl0%u(F+4b zvj8Z_Y6#H+3|S}gn8j?^jX`3QgdZP}S%lOSapm<4+eP$8u(Sq`!hD(VqL_o%g<`P~ z?Gl8jjHMIgJ%W9SS5ef8=2U4x3)Z<^L$Kmwd~JQ$sI$>Ux`YFStEnC1*VY;p8zW0{n=q1 z;jjmfCc=GF%!QbEYHi;Q9he9DlNAI;3vbAwj>9gkFULKYB=6F_TkTDY|zX7UmS zqv~fbdCkcNpj?qORYah^i&Q}Qc^g_u)y8YP-w%we&LWNu>MK5G-bc@aaS8VJGQ1{q zzl111(`vs3iHbGbYGH47UzdX`&`~j)EBOG3xW5$9(zRQ;J}Mo!0Xa_(7)F6if!JGEvZo zSAY^(fmfWgJ__rns4F zhb)1&gBa19HQVr5Ps@Q>K*@o56CBMon}uji0~|#FMoc%n(~jNQN(9`7O=dpANsrTc z{a9ET43UeL1Y?Z^LhNQ{JWfW=Ml7a-Vpq{dtNA<|Dz$zSaaSKXP*tmoaDM5C9c{zF zWPt((h!}!yXXm4?(BZxl;)>8|uxyhnmS#3oh6)HuMPC!*_;SrN;H1YVBak>dHw(Og zrVOne76{1f+6m$5VD0)8C_ths96gB6VG>k?v}A|KaNr7V-aJn-5e3PwfQC_s44%cs zA}CzUEyGUFE)Ne@pth2%1($tMQR+7*s1535`|$z@8Z~qg_zg-wuftTe-Ce&R+qq9= zvSIIiGdO7urhs(-23HE7Xsju1)HMfFoSzwP^n#O+Q)a!K)b{`@w)1eCF(U!9nk+5C za!9MqsR*dd*(43|`akeCjG7{}Dv?Nq5rNCBxL5$yhS|Z!RM3wPP>R)N$XE9N0PUXv A-~a#s literal 0 HcmV?d00001 diff --git a/html/font-awesome/webfonts/fa-v4compatibility.ttf b/html/font-awesome/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000000000000000000000000000000000000..243bc25bd5ee1aecd21a962e0418c35cc089bd3a GIT binary patch literal 10084 zcmb_idu&_hb^p%g<34zKFDbq(%aZu8L^(0_v_xC3V`gzHrA-|*Nu9)NYtb?-36?}v zqT|Gy6Qx}pH%kk5!+<3S8Wr2xZppf!NU?71P!{MvExI);&^5q@RRy}C7z#{EpDO}t zzw_P8hh(`8hEXKH*ZIyp=X~e+QG$dJhFB9Gk-Y!Gf#LhFOnpxX>ci~x%wlml{k`sA z3ZWdt+=1DJCocX6z4Nm|cy0=D;PZ2(;)V3*e)b?>U%_W=4ijEdc<+z!IXJgid3=Jz zpJML~j9*+R&lI0M^{H=Qe*xpE#p2`3Vi3<3q+y&~DlV2h&%NjG&^;=I_u6uKwesvo z-Z}$RUj_|-DL|`-eB!@8lX>Z!{f?iDfP!s8{J{J0rDnTbRo1AAu_l~lpvSwqjX9;T zz0Kb|v*VSOGgHK0FlQ=e zzxe_4S@X5v;oytGH>`(P!?vr$8XOh-!~w|nAWkEdR{gPXG!Y+34d=&3!$-2c88w{E ztJx7-33n@*JWbcCmX4Q21*c7(J-c@HwX?lv@qX4Dufi<%( z-X}y))FwY3-J2cF#76K$IUJx~kTQZP(2+@FIC|tHje(vRCP5ztBg5Sk2bI`13RW

    @JULMl%nV5Vl z&0vJtahUl&i17y{VLJ#;yst@dol558)m_vu!8hVca@RD7WIh}{fx1*h8Wg&E;Hbqd z8UV#ne?6xehBj;X{r1tLe7tfz$H(i8k1lK4a=;E!m4bF)$ABFK!DpSMZTL()uSfM~ zdry#5z@6%M#L=~=O21q-EvrhFWiG2K`Zf%Z``Q;;9@-=#52Ad=oEk7R=?^x*;=1S% z1L7X>ut2Pf3@3)-v2Z+*8cxJxQE;4MQw-yYBMDyXB%Xw^oFF+DRfk%J*wjh+w+WYo zt00?hI!>jwoKD0Eu4K&_JKt-VXpCJSv&Rapvk!XJ=KWZvcp^!>56UhzBdTda_yaFKTsBmifbA3IKsDfU;8Ts+a^XeS#S#FdC2 zCzxFv{sLR43l92S&7qDCqK=M3^!!a6D7mDp@xk6y)uh7~zDYRS@y+1df;Vp62tdIm zU0x?x?{27up|;vskGKmOmBwjxQYzf!qd|0veKGTvi8L({VWGt*NU~}h(+&yKb+1cF z?&0Zk(&p~?maZGYpz+N^p$MCtlrp(2uqUo<)ORu_DzNPx`X+DD^>5w5rU#2`m3;@x z{x=CV&!Ub=NweC9p`tjU`V=!3W-X>i_Y&?z!Qp3DQ$LY^-XYvc2sa>w`<=#_Yzqeg zGs8zH&jhwC5{S2l;5+t#`g~>-+Jblj#c@0_f(F6{C9FryKvy3^$ANq*N$-2#h4l}< zBML*l-{VOpPrU1c8yhl1a(()K*eSBa9zRZ!-^^EUmRWQnDYP#Uhc8dC$|YDP`7vl7 z-Z)%%k*o}5GI{}uBLN4p0ZQ|st3&WP91wtE41RYA?jfBXKQ=jeY&@N&)_!eV54Ioc zB(mA)%yvyt_h|{TyjJvZ$WE(@&-NR}K1)+I%MRI=;qmzB0!vhXoesd=2p5k4&3>a4B-&i9!tJhYBWW!M-j3S zkfXKfdXLsaYiptUsCB-!Nn#t>F~b+?0J2j^CfE0zWqlFbKcuh0AHNId3j&=aBda2= zK%INDOetp^`78$p9&)mx4h|uIN#wIKU2!-YAT^O6gC)?{l-M&ebWcuj$9Qv!Ts zeNfO_cI0W#+5b^|KE>+w`Fbtc%X+<8>x*_IYGo{|_EEP(*V6O*=J(ackHtKi=7}9s z)n<>1M|aO2)inA_17{O^FQQGxibm|(N8Jux%Q5EhohTjT+ad-;yO9gHX*jzAbTlgN z5W`|z+$|=>S>zk?fH@q(H`^n1G~7_%uvA}Y2NLSo2pj>D=S<8u$^awb3_F2Q zHf$%AW?=RgZ&4)Frg+;FrEM^R1NYiQ-nv(=73w{z*4Ef#7vxNVs=QDr@YKd&cakXC zJy>ry8P6%`4sb?j&>OnRVB4aBOZI9GimJp~m6%8_6hf`Y7%7Xz-^gY6i^F0BjJG7T zjf$~a+mYzjS)?Qf(w6KP$qVAYQN7nzy?QfW<(vjw@(ls%$0}%yie7OioMnm+QD$2* zagp)egYps1guNtuALpt0R5%r;HAm}MQdFp)!+NXe*Fh%Kn;~jz9c^I6Q&YZWKoxRstrI1?VB!Hqf*jm{3OSl-xZ(&ALOd(lFY zYMftU`|C;{Xz7xYfyJYO<)DEufIx8)#S(G=1^EFgJ@{B>YJkFY^?BRpHOl)HGiZMN zS<^JBqilG6)(fXp+g4BguIihQD*Bnng1#~8Nhm0}mtM4V&42H`eoePtTtX49BtF4$ z@e}{)Ir_M%zd!5=EY$wVt(*9~2B1+KrgleMSup2$feUDkXZVvsjNROG;RA*Juo ziNoo1o8RXRf>6H^iR|No0mT^(tyB32KeMNAq z(vfmG!)kLJNm7{Ua6$`8d%6pGHE(s#XW6D5ic9@Ls%^T33ls|FOo+1tx3b&$Jmgj~ zu(4lyO`~dmfM)^pg)>;So28_?OW!9Z_*h&BGtOVj_&2WRP zqaMe>WNdFk871A&a;Lb8PU!lnoa*rzpGLfpo~L<2j%C&U&G32D+$raBAaLriX6R(S z#D2!fZwgL+6FCAuiz_F`PVdCi>o$8Qj>V6h$I%P8AQl(j12pA@6LJc$ApxtbmqbS` z|3Sy54;rad|ECNEu^k$)5%z2GsrE=zf8JSsUXMoFr}(tioC$o#_dE7|xT{OOsACuJ zUbka03I^lOQal($2iM0!-QJ-81|JzwK%D*%>cTjZ7bs1ZU7_D5d5gvY1llB%eWcWp z5!DZ_;2mWB$k7NY02ubH5r%_fWwtqAA8|VJq9&1<#;WKU%J>sZ% zk61#qu7~1AO@_j!Q8m{^&{C7ury_OvG>Ys@kGhv^5$qe%$EEYM!^}BuG|P4LFFB*6 zrC~OhbU-$K;IwX2TfarRh(A*F&xp;D@^1$)8=A2;^sMQu_Ih6 z@|K1YX5X-k2FF1&Ag!>@v1Wc!({wFhYN22nH#yYa-qX|Gjxu>)I<6>j{_GTJPEN;v@c;iZ~IvqB2EzBkv z9^m~BVzzR&PZHh8Tat)>`(c-@@u;3Pxp8QJBMw>jI%l*i{79$W+rca2s(VW~ z8s2eLPMxad=5)yP_$Ct9rE>vQ#?h)nYilOy&@9AB3t@}XCg~Pm^}_I zCIg8gKs!)#gu!WiYrm35{ZsYv6imP6lGP+$=8A8+;wM-CqJlA&8cT_f_3jh$x5L>=-_vj-u`>(We`Q7}NZv)O$C_b;Ow zBLOb$^vDQDmCvhn&_GwSJB9~9h|cdyoa^luS=6s5P`#qY$K^yf)q{FQ3RR|9c{SBi zz4A2`>Ik;Mkv+T5=+Vccy2{M(>8?5Lv^qym%WQp{GruVX_hn>T%Cur3{|Z@3k?*DC z=L<;Y!`RilMz)q(vzDn12E6T;!`}w(36P2-qo(*w7H^Tm~qS$>T>e zHH$WqO{w(OoMzUx1KO+}_%Ywc{@B#7oqX=SPn~}8^po#-?(QdFrZX?U^?V@ke8~ER zrv1VS&73>;z|718=g!r>`lT;%o`->U86BirKw^P~o zX4M^45ajw>#v~@jkKuMt$(zxr$D=5|;mpCv@VGPUT*p1_h#lWb*V9e}g-cO7pK6(> z&rrvKfr0V+^4X393aMv68{!fAzS|Fo ze&vtden^bdyxR{m{&$s^DtBKgt(F%{j~%(EytrJf%%7iMn6EsMd!RIXd7-$%5J?v# z`Ph-<4xoF=%TKJ#&(2kneKUuWt)LIhm6BIV=d-KHMf@{Fa=E%>0(vchMAL<`=2XmFm@+uDfB8V$Gw+#~zTqKMUbaUP!q zd@AAz{0#j7U}nW-%oN2+14nWfmZZd!{0*4+8Oy-90?e~w4%m~TPt1rzXzP^i#`+N8 zN?2!l&%Gw;T7ylnAIs@KU@YH!%7I{#34D=0x z%44{?8bLdZmZg6?xw9Nvv5W({$>$+}{*YEYp!jUNCAusvJPbz7I3W@?` zQjjcp0T8A(icpkd6sH93!%yJ*se=wsCv{ObB`HN|%FsdTpQsv}!Jvmr76M z;MNv$L&j|J@@y$L2d8B?Ph*;+mE!q@QYE)Kvr;N8<<4KORLV=y#WMDkc20&?E5()E zTyf!IZnd&fzEtvGUV?-#sg=tsOAw7NTNaq@@YE1jcz)@^d~qqaa(TG~r1P^&R&iye ze8rLZ)m$;wGF+W2LwZ-{FO*tmd7P6=ty_=fhIHqI%1g6+6boo|c@*5Mvx#mP#9f+S joy#rEuM{N-dS#`E@l0{aGh13T;X@a3=0)&&t(i,!n)}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var s=0,n=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,a=n.call(arguments,1),o=0,r=a.length;r>o;o++)for(i in a[o])s=a[o][i],a[o].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(a){var o="string"==typeof a,r=n.call(arguments,1),h=this;return o?this.each(function(){var i,n=e.data(this,s);return"instance"===a?(h=n,!1):n?e.isFunction(n[a])&&"_"!==a.charAt(0)?(i=n[a].apply(n,r),i!==n&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):(r.length&&(a=e.widget.extend.apply(null,[a].concat(r))),this.each(function(){var t=e.data(this,s);t?(t.option(a||{}),t._init&&t._init()):e.data(this,s,new i(a,this))})),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"

    ",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var a=!1;e(document).mouseup(function(){a=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!a){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),a=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),a=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,c="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||t+u>a&&o>t+u,p=c&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=e(d[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(c.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=c.length-1;i>=0;i--)for(o=c[i][1],r=c[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e(" ",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,c,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&e.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=d.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",c=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[c]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[c]-h)&&(n=Math.abs(t[c]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]) +},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.leftthis.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}})}); \ No newline at end of file diff --git a/html/jquery/jquery.min.js b/html/jquery/jquery.min.js new file mode 100644 index 0000000000..ab28a24729 --- /dev/null +++ b/html/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="
    ","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; +if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("